Skip to content
Extraits de code Groupes Projets
stats_controller.rb 998 octets
Newer Older
# Generate statistics, around events, by date or place
class StatsController < ApplicationController
  before_action :set_temporal, :set_local, only: [:index]

  private

  def set_temporal
echarp's avatar
echarp a validé
    @years = Event.group(year_grouping).count
    @months = Event.group(year_grouping, month_grouping).count
echarp's avatar
echarp a validé
    @regions = Event.joins(:region).group(:region_id, year_grouping).count
    @city_events = Event.group(:city).having('count(city) > 3')
echarp's avatar
echarp a validé
                        .order('count(city) desc').count
  end

  def year_grouping
    if %w(Mysql2 MySQL PostgreSQL).include? Event.connection.adapter_name
      'extract(year from start_time)'
    elsif Event.connection.adapter_name == 'SQLite'
      'strftime("%Y", start_time)'
    end
  end

  def month_grouping
    if %w(Mysql2 MySQL PostgreSQL).include? Event.connection.adapter_name
      'extract(month from start_time)'
    elsif Event.connection.adapter_name == 'SQLite'
      'strftime("%m", start_time)'
    end
  end
end