Class: Manage::DashboardController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- ApplicationController
- Manage::DashboardController
- Defined in:
- app/controllers/manage/dashboard_controller.rb
Instance Method Summary collapse
- #application_activity_data ⇒ Object
- #application_distribution_data ⇒ Object
- #confirmation_activity_data ⇒ Object
- #index ⇒ Object
- #map_data ⇒ Object
- #schools_applied_data ⇒ Object
- #schools_confirmed_data ⇒ Object
- #todays_activity_data ⇒ Object
- #todays_stats_data ⇒ Object
- #user_distribution_data ⇒ Object
Methods inherited from ApplicationController
#limit_admin_access, #logged_in
Instance Method Details
#application_activity_data ⇒ Object
27 28 29 |
# File 'app/controllers/manage/dashboard_controller.rb', line 27 def application_activity_data render json: activity_chart_data(["Non-RIT Applications", "RIT Applications", "Non-Applied Users"], "day", 3.week.ago..Time.zone.now) end |
#application_distribution_data ⇒ Object
41 42 43 44 45 |
# File 'app/controllers/manage/dashboard_controller.rb', line 41 def application_distribution_data counts = Questionnaire.group(:acc_status).count results = Questionnaire::POSSIBLE_ACC_STATUS.map { |acc_status, status_title| [status_title, counts[acc_status] || 0] } render json: results end |
#confirmation_activity_data ⇒ Object
23 24 25 |
# File 'app/controllers/manage/dashboard_controller.rb', line 23 def confirmation_activity_data render json: activity_chart_data(["Confirmations", "Denials"], "day", 3.week.ago..Time.zone.now) end |
#index ⇒ Object
2 3 |
# File 'app/controllers/manage/dashboard_controller.rb', line 2 def index end |
#map_data ⇒ Object
5 6 7 |
# File 'app/controllers/manage/dashboard_controller.rb', line 5 def map_data @schools = School.where("questionnaire_count", 1..Float::INFINITY).select([:city, :state, :questionnaire_count]) end |
#schools_applied_data ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'app/controllers/manage/dashboard_controller.rb', line 62 def schools_applied_data counted_schools = { "pending" => {}, "denied" => {}, "rsvp_denied" => {}, "late_waitlist" => {}, "waitlist" => {}, "accepted" => {}, "rsvp_confirmed" => {} } # Temporary fix # result = Questionnaire.joins(:school).group(:acc_status, "schools.name").where("schools.questionnaire_count >= 5").order("schools.questionnaire_count DESC").order("schools.name ASC").count result = Questionnaire.joins(:school).group(:acc_status, "schools.name", "schools.questionnaire_count").order("schools.questionnaire_count DESC").where("schools.questionnaire_count >= 5").count result.each do |group, count| counted_schools[group[0]][group[1]] = count end render json: [ { name: "RSVP Confirmed", data: counted_schools["rsvp_confirmed"] }, { name: "Accepted", data: counted_schools["accepted"] }, { name: "Waitlisted", data: counted_schools["waitlist"] }, { name: "Late Waitlisted", data: counted_schools["late_waitlist"] }, { name: "RSVP Denied", data: counted_schools["rsvp_denied"] }, { name: "Denied", data: counted_schools["denied"] }, { name: "Pending", data: counted_schools["pending"] } ] end |
#schools_confirmed_data ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'app/controllers/manage/dashboard_controller.rb', line 47 def schools_confirmed_data schools = Questionnaire.joins(:school).group('schools.name').where("acc_status = 'rsvp_confirmed'").order("schools.name ASC").count schools_riding = Questionnaire.joins(:school).group('schools.name').where("acc_status = 'rsvp_confirmed' AND riding_bus AND schools.bus_list_id").count schools = schools.map do |name, count| bus_count_row = schools_riding.select { |school_bus_name, _| school_bus_name == name } bus_count = bus_count_row ? bus_count_row[name] || 0 : 0 count_without_bus = count - bus_count [name, count_without_bus, bus_count] end render json: [ { name: "Not riding bus", data: schools.sort_by { |_, no_bus, bus| [bus, no_bus] }.reverse }, { name: "Riding bus", data: schools_riding } ] end |
#todays_activity_data ⇒ Object
9 10 11 |
# File 'app/controllers/manage/dashboard_controller.rb', line 9 def todays_activity_data render json: activity_chart_data(["Applications", "Confirmations", "Denials", "Non-Applied Users"], "hour", Time.zone.today.beginning_of_day..Time.zone.today.end_of_day) end |
#todays_stats_data ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'app/controllers/manage/dashboard_controller.rb', line 13 def todays_stats_data date_min = Time.zone.today.beginning_of_day render json: { "Applications" => Questionnaire.where("created_at >= :date_min", date_min: date_min).count, "Confirmations" => Questionnaire.where("acc_status = \"rsvp_confirmed\" AND acc_status_date >= :date_min", date_min: date_min).count, "Denials" => Questionnaire.where("acc_status = \"rsvp_denied\" AND acc_status_date >= :date_min", date_min: date_min).count, "Non-Applied Users" => User.without_questionnaire.where("users.created_at >= :date_min", date_min: date_min).count } end |
#user_distribution_data ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'app/controllers/manage/dashboard_controller.rb', line 31 def user_distribution_data total_stats_data = {} total_count = Questionnaire.count rit_count = Questionnaire.where("school_id = \"2304\"").count total_stats_data["Non-Applied Users"] = User.where(admin: false).count - total_count total_stats_data["Non-RIT Applications"] = total_count - rit_count total_stats_data["RIT Applications"] = rit_count render json: total_stats_data end |