class Admins::SchoolStatisticsController < Admins::BaseController before_action :contrast_column_select_options, only: [:contrast] def index params[:data_type] ||= 'grow' params[:sort_by] = params[:sort_by].presence || :teacher_increase_count params[:sort_direction] = params[:sort_direction].presence || :desc service = Admins::StatisticSchoolDataGrowService.new(params) @grow_summary = service.grow_summary total_count, statistics = service.call @params_page = params[:page] || 1 @statistics = paginate statistics, total_count: total_count end def contrast params[:contrast_column] = params[:contrast_column].presence || :teacher_increase_count params[:sort_direction] ||= :desc params[:sort_by] = :percentage # 无对比日期时直接返回无数据页面 if useless_contrast_date_parameter? @total_count = 0 @statistics = paginate([]) return end total_count, statistics = Admins::StatisticSchoolContrastDataService.call(params) @statistics = paginate statistics, total_count: total_count rescue Admins::StatisticSchoolContrastDataService::ParameterError render_unprocessable_entity('参数错误') end private def useless_contrast_date_parameter? params[:begin_date].blank? && params[:end_date].blank? && params[:other_begin_date].blank? &¶ms[:other_end_date].blank? end def contrast_column_select_options @select_options = Admins::StatisticSchoolContrastDataService::CONTRAST_COLUMN_LIST.map do |column| [I18n.t("school_daily_report.#{column}"), column] end end end