From 7e930d8d409cf3c6b63037c730f9a4c7f662fd5b Mon Sep 17 00:00:00 2001 From: Ancor Gonzalez Sosa Date: Tue, 16 Jul 2013 15:50:32 +0200 Subject: [PATCH] Getting rid of plain sql in stats_controller --- app/controllers/admin/stats_controller.rb | 26 +++-------------------- app/views/admin/stats/_tickets.html.haml | 14 ++++++------ 2 files changed, 10 insertions(+), 30 deletions(-) diff --git a/app/controllers/admin/stats_controller.rb b/app/controllers/admin/stats_controller.rb index c326af64..fac9afdb 100644 --- a/app/controllers/admin/stats_controller.rb +++ b/app/controllers/admin/stats_controller.rb @@ -2,13 +2,7 @@ class Admin::StatsController < ApplicationController before_filter :verify_organizer def index - @registrations = @conference.registrations.all(:joins => :person, - :order => "registrations.created_at ASC", - :select => "registrations.*, - people.last_name AS last_name, - people.first_name AS first_name, - people.public_name AS public_name, - people.email AS email") + @registrations = @conference.registrations.includes(:person).order("registrations.created_at ASC") @attendees = @conference.registrations.where("attended = ?", true).count @registered = @conference.registrations.count @@ -21,21 +15,8 @@ class Admin::StatsController < ApplicationController @speaker_fields_reg = %w[with_partner need_access other_needs diet arrival departure] @supporter_levels = @conference.supporter_levels - @tickets = @conference.registrations.find_by_sql("select * - from registrations inner join supporter_registrations - ON registrations.id = supporter_registrations.registration_id - inner join supporter_levels - ON supporter_levels.id = supporter_registrations.supporter_level_id - where registrations.conference_id = #{@conference.id}") - - end - - def reg_support(level) - Registration.find_by_sql("select supporter_registrations.* - FROM registrations INNER JOIN supporter_registrations - ON registrations.id = supporter_registrations.registration_id - WHERE registrations.conference_id = #{@conference.id} - AND supporter_registrations.supporter_level_id = #{level.id}") + @tickets = @conference.registrations.joins(:supporter_registration => :supporter_level) + @tickets = @tickets.where("registrations.conference_id" => @conference).count end def speaker_reg(speaker) @@ -48,5 +29,4 @@ class Admin::StatsController < ApplicationController helper_method :speaker_reg helper_method :speaker_diet - helper_method :reg_support end diff --git a/app/views/admin/stats/_tickets.html.haml b/app/views/admin/stats/_tickets.html.haml index a5d616d2..8b6e20bd 100644 --- a/app/views/admin/stats/_tickets.html.haml +++ b/app/views/admin/stats/_tickets.html.haml @@ -1,7 +1,7 @@ .row-fluid .span12 %h3 - Non-free Tickets (#{@tickets.length if @tickets}#{0 unless @tickets}) + Non-free Tickets (#{@tickets}) .row-fluid .span5 - if @supporter_levels.count > 0 @@ -11,18 +11,18 @@ %th # %th % - @supporter_levels.each do |level| - - reg_support = reg_support(level) - - if reg_support.count > 0 + - reg_count = level.supporter_registrations.count + - if reg_count > 0 %tr %td= level.title %td - = reg_support.count + = reg_count %td - if @registered and @registered > 0 - = "#{reg_support.count * 100 / @registered}% of registered" + = "#{reg_count * 100 / @registered}% of registered" - if @attendees and @attendees > 0 %br - = "#{reg_support.count * 100 / @attendees}% of attendees" + = "#{reg_count * 100 / @attendees}% of attendees" - else %p - No tickets sold yet \ No newline at end of file + No tickets sold yet