class Admins::IssuesRankController < Admins::BaseController before_action :require_admin def index @statistics = DailyProjectStatistic.where('date >= ? AND date <= ?', begin_date, end_date) @statistics = @statistics.group(:project_id).joins(:project).select("project_id, sum(issues) as issues, sum(closed_issues) as closed_issues, projects.issues_count as issues_count") @statistics = @statistics.order("#{sort_by} #{sort_direction}").limit(50) end private def begin_date params.fetch(:begin_date, (Date.yesterday-7.days).to_s) end def end_date params.fetch(:end_date, Date.yesterday.to_s) end def sort_by DailyProjectStatistic.column_names.include?(params.fetch(:sort_by, "issues")) ? params.fetch(:sort_by, "issues") : "issues" end def sort_direction %w(desc asc).include?(params.fetch(:sort_direction, "desc")) ? params.fetch(:sort_direction, "desc") : "desc" end end