app/controllers/manage/dashboard_controller.rb in hackathon_manager-0.13.8 vs app/controllers/manage/dashboard_controller.rb in hackathon_manager-0.13.9
- old
+ new
@@ -8,11 +8,18 @@
def map_data
@schools = School.where("questionnaire_count", 1..Float::INFINITY).select([:city, :state, :questionnaire_count])
end
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)
+ where_filter = nil
+ types = ["Applications", "Confirmations", "Denials"]
+ if params[:school_id]
+ where_filter = { school_id: params[:school_id] }
+ else
+ types << "Non-Applied Users"
+ end
+ render json: activity_chart_data(types, "hour", Time.zone.today.beginning_of_day..Time.zone.today.end_of_day, where_filter)
end
def todays_stats_data
date_min = Time.zone.today.beginning_of_day
render json: {
@@ -22,11 +29,15 @@
"Non-Applied Users" => User.without_questionnaire.where("users.created_at >= :date_min", date_min: date_min).count
}
end
def confirmation_activity_data
- render json: activity_chart_data(["Confirmations", "Denials"], "day", 3.week.ago..Time.zone.now)
+ where_filter = nil
+ if params[:school_id]
+ where_filter = { school_id: params[:school_id] }
+ end
+ render json: activity_chart_data(["Confirmations", "Denials"], "day", 3.week.ago..Time.zone.now, where_filter)
end
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
@@ -93,27 +104,28 @@
]
end
private
- def activity_chart_data(types, group_type, range)
+ def activity_chart_data(types, group_type, range, where_filter = nil)
chart_data = []
types.each do |type|
case type
when "Applications"
- data = Questionnaire.send("group_by_#{group_type}", :created_at, range: range).count
+ data = Questionnaire.send("group_by_#{group_type}", :created_at, range: range)
when "RIT Applications"
- data = Questionnaire.where("school_id = \"2304\"").send("group_by_#{group_type}", :created_at, range: range).count
+ data = Questionnaire.where("school_id = \"2304\"").send("group_by_#{group_type}", :created_at, range: range)
when "Non-RIT Applications"
- data = Questionnaire.where("school_id != \"2304\"").send("group_by_#{group_type}", :created_at, range: range).count
+ data = Questionnaire.where("school_id != \"2304\"").send("group_by_#{group_type}", :created_at, range: range)
when "Confirmations"
- data = Questionnaire.where(acc_status: "rsvp_confirmed").send("group_by_#{group_type}", :acc_status_date, range: range).count
+ data = Questionnaire.where(acc_status: "rsvp_confirmed").send("group_by_#{group_type}", :acc_status_date, range: range)
when "Denials"
- data = Questionnaire.where(acc_status: "rsvp_denied").send("group_by_#{group_type}", :acc_status_date, range: range).count
+ data = Questionnaire.where(acc_status: "rsvp_denied").send("group_by_#{group_type}", :acc_status_date, range: range)
when "Non-Applied Users"
- data = User.without_questionnaire.send("group_by_#{group_type}", "users.created_at", range: range).count
+ data = User.without_questionnaire.send("group_by_#{group_type}", "users.created_at", range: range)
end
- chart_data << { name: type, data: data }
+ data = data.where(where_filter) if where_filter && type != "Non-Applied Users"
+ chart_data << { name: type, data: data.count }
end
chart_data
end
end