From a13a084f3ed878a6d50a7b566d1d3f0f9d8e3133 Mon Sep 17 00:00:00 2001 From: differentreality Date: Tue, 30 Jul 2013 11:41:39 +0300 Subject: [PATCH] fixing stat numbers --- app/controllers/admin/stats_controller.rb | 17 ++++++++++++++++- app/views/admin/stats/_registrations.html.haml | 14 +++++++------- app/views/admin/stats/_tickets.html.haml | 2 +- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/controllers/admin/stats_controller.rb b/app/controllers/admin/stats_controller.rb index fac9afdb..e6e27bfa 100644 --- a/app/controllers/admin/stats_controller.rb +++ b/app/controllers/admin/stats_controller.rb @@ -6,9 +6,14 @@ class Admin::StatsController < ApplicationController @attendees = @conference.registrations.where("attended = ?", true).count @registered = @conference.registrations.count + @pre_registered = @conference.registrations.where("created_at < ?", @conference.start_date).count + @pre_registered_attended = @conference.registrations.where("created_at < ? AND attended = ?", @conference.start_date, true).count @registered_with_partner = @conference.registrations.where("attending_with_partner = ?", true).count @attended_with_partner = @conference.registrations.where("attending_with_partner = ? AND attended = ?", true, true).count + + @handicapped_access = @conference.registrations.where("handicapped_access_required = ?", true).count + @suggested_hotel_stay = @conference.registrations.where("using_affiliated_lodging = ?", true).count @speakers = Person.joins(:events).where("events.conference_id = ? AND events.state LIKE ?", @conference.id, 'confirmed').uniq @speaker_fields_person = %w[name email affiliation] @@ -16,7 +21,7 @@ class Admin::StatsController < ApplicationController @supporter_levels = @conference.supporter_levels @tickets = @conference.registrations.joins(:supporter_registration => :supporter_level) - @tickets = @tickets.where("registrations.conference_id" => @conference).count + @tickets = @tickets.where("registrations.conference_id = ? AND supporter_levels.title NOT LIKE ? ", @conference, "%Free%").count end def speaker_reg(speaker) @@ -27,6 +32,16 @@ class Admin::StatsController < ApplicationController @conference.dietary_choices.find(reg.dietary_choice_id) end + def diet_count(diet) + @conference.registrations.where("dietary_choice_id = ?", diet).count + end + + def social_event_count(event) + @conference.registrations.joins(:social_events).where("registrations_social_events.social_event_id = ?", event).count + end + helper_method :speaker_reg helper_method :speaker_diet + helper_method :diet_count + helper_method :social_event_count end diff --git a/app/views/admin/stats/_registrations.html.haml b/app/views/admin/stats/_registrations.html.haml index 626387e5..679c4947 100644 --- a/app/views/admin/stats/_registrations.html.haml +++ b/app/views/admin/stats/_registrations.html.haml @@ -1,7 +1,7 @@ .row-fluid .span12 %h3 - Registered + Total Registrations - if @registered = "(#{@registered})" - if @attendees @@ -14,10 +14,10 @@ %th # %tr %td Registered attended - %td= @registered_attended + %td= @pre_registered_attended %tr %td Registered not attended - %td= @registered_not_attended + %td= @pre_registered - @pre_registered_attended %tr %td Attended with partner %td= @attended_with_partner @@ -26,16 +26,16 @@ %td= @registered_with_partner %tr %td Handicapped Access for - %td= @conference.registrations.where("handicapped_access_required = ?", true).count + %td= @handicapped_access %tr %td Staying at suggested hotel - %td= @conference.registrations.where("using_affiliated_lodging = ?", true).count + %td= @suggested_hotel_stay .span3 - if @conference.use_dietary_choices == true - diet_choices = [] - @conference.dietary_choices.each do |d| - - count = @conference.registrations.where("dietary_choice_id = ?", d.id).count + - count = diet_count(d.id) - if count > 0 - diet_choices << [d.title, count] - if diet_choices.any? @@ -58,7 +58,7 @@ - if @conference.social_events.count > 0 - social_events = [] - @conference.social_events.each do |social_event| - - count = @conference.registrations.joins(:social_events).where("registrations_social_events.social_event_id = ?", social_event.id).count + - count = social_event_count(social_event) - if count > 0 - social_events << [social_event.title, count] - if social_events.any? diff --git a/app/views/admin/stats/_tickets.html.haml b/app/views/admin/stats/_tickets.html.haml index 8b6e20bd..f9d1f18a 100644 --- a/app/views/admin/stats/_tickets.html.haml +++ b/app/views/admin/stats/_tickets.html.haml @@ -11,7 +11,7 @@ %th # %th % - @supporter_levels.each do |level| - - reg_count = level.supporter_registrations.count + - reg_count = level.supporter_registrations.where(conference_id: @conference).count - if reg_count > 0 %tr %td= level.title