BathHacked/energy-sparks

View on GitHub
app/controllers/admin/settings_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module Admin
  class SettingsController < AdminController
    before_action :load_site_settings

    def show
      @temperature_setting_months = temperature_setting_months
    end

    def update
      @settings.update!(site_settings_params)
      if EnergySparks::FeatureFlags.active?(:use_site_settings_current_prices)
        BenchmarkMetrics.set_current_prices(prices: SiteSettings.current_prices)
      end
      redirect_to admin_settings_path, notice: 'Settings updated'
    end

  private

    def load_site_settings
      @settings = SiteSettings.current
    end

    def site_settings_params
      formatted_settings_params = settings_params
      SiteSettings.stored_attributes[:prices].each do |price_type|
        next unless settings_params[price_type]

        formatted_settings_params[price_type] = formatted_settings_params[price_type].to_f
      end
      formatted_settings_params
    end

    def settings_params
      if EnergySparks::FeatureFlags.active?(:use_site_settings_current_prices)
        params.require(:site_settings).permit(
          :message_for_no_contacts, :message_for_no_pupil_accounts,
          :management_priorities_dashboard_limit, :management_priorities_page_limit,
          :default_import_warning_days, :photo_bonus_points, :audit_activities_bonus_points,
          :electricity_price, :solar_export_price, :gas_price,
          temperature_recording_months: []
        )
      else
        params.require(:site_settings).permit(
          :message_for_no_contacts, :message_for_no_pupil_accounts,
          :management_priorities_dashboard_limit, :management_priorities_page_limit,
          :default_import_warning_days, :photo_bonus_points, :audit_activities_bonus_points,
          temperature_recording_months: []
        )
      end
    end

    def temperature_setting_months
      (1..12).map {|month| [Date::MONTHNAMES[month], month]}
    end
  end
end