BathHacked/energy-sparks

View on GitHub
app/controllers/pupils/schools_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module Pupils
  class SchoolsController < ApplicationController
    include ActionView::Helpers::NumberHelper
    include SchoolAggregation
    include DashboardAlerts
    include DashboardTimeline
    include NonPublicSchools

    load_resource

    skip_before_action :authenticate_user!

    before_action only: [:show] do
      redirect_unless_permitted :show
    end
    before_action :set_breadcrumbs

    def show
      authorize! :show_pupils_dash, @school
      @show_data_enabled_features = show_data_enabled_features?
      setup_default_features
      setup_data_enabled_features if @show_data_enabled_features
    end

  private

    def set_breadcrumbs
      @breadcrumbs = [{ name: I18n.t('dashboards.pupil_dashboard') }]
    end

    def setup_default_features
      @temperature_observations = @school.observations.temperature
      @show_temperature_observations = show_temperature_observations?
      @observations = setup_timeline(@school.observations)
      @default_equivalences = default_equivalences
      @programmes_to_prompt = @school.programmes.last_started
    end

    def setup_data_enabled_features
      @dashboard_alerts = setup_alerts(@school.latest_dashboard_alerts.pupil_dashboard, :pupil_dashboard_title, limit: 2)
      equivalence_setup(@school)
    end

    def equivalence_setup(school)
      @equivalences = Equivalences::RelevantAndTimely.new(school).equivalences

      @equivalences_content = @equivalences.map do |equivalence|
        TemplateInterpolation.new(
          equivalence.content_version,
          with_objects: { equivalence_type: equivalence.content_version.equivalence_type },
        ).interpolate(
          :equivalence,
          with: equivalence.formatted_variables
        )
      end
    end

    def show_temperature_observations?
      site_settings.temperature_recording_month_numbers.include?(Time.zone.today.month)
    end

    def default_equivalences
      [
        { measure: I18n.t('pupils.default_equivalences.equivalence_1.measure_html'), equivalence: I18n.t('pupils.default_equivalences.equivalence_1.equivalence'), image_name: 'kettle' },
        { measure: I18n.t('pupils.default_equivalences.equivalence_2.measure_html'), equivalence: I18n.t('pupils.default_equivalences.equivalence_2.equivalence'), image_name: 'onshore_wind_turbine' },
        { measure: I18n.t('pupils.default_equivalences.equivalence_3.measure_html'), equivalence: I18n.t('pupils.default_equivalences.equivalence_3.equivalence'), image_name: 'tree' },
        { measure: I18n.t('pupils.default_equivalences.equivalence_4.measure_html'), equivalence: I18n.t('pupils.default_equivalences.equivalence_4.equivalence'), image_name: 'meal' },
        { measure: I18n.t('pupils.default_equivalences.equivalence_5.measure_html'), equivalence: I18n.t('pupils.default_equivalences.equivalence_5.equivalence'), image_name: 'house' }
      ]
    end
  end
end