app/controllers/schools/advice/solar_pv_controller.rb
module Schools
module Advice
class SolarPvController < AdviceBaseController
before_action :load_dashboard_alerts, only: [:insights]
def insights
if @school.has_solar_pv?
@existing_benefits = build_existing_benefits
else
@potential_benefits_estimator = build_potential_benefits
end
end
def analysis
@analysis_dates = analysis_dates
if @school.has_solar_pv?
@analysis_dates = analysis_dates
@existing_benefits = build_existing_benefits
else
@potential_benefits_estimator = build_potential_benefits
end
end
private
def create_analysable
OpenStruct.new(
enough_data?: enough_data?
)
end
def enough_data?
if @school.has_solar_pv?
true
else
potential_benefits_service.enough_data?
end
end
def build_existing_benefits
existing_benefits_service.create_model
end
def existing_benefits_service
@existing_benefits_service ||= ::SolarPhotovoltaics::ExistingBenefitsService.new(
meter_collection: aggregate_school
)
end
def build_potential_benefits
potential_benefits_service.create_model
end
def potential_benefits_service
@potential_benefits_service ||= ::SolarPhotovoltaics::PotentialBenefitsEstimatorService.new(
meter_collection: aggregate_school,
asof_date: analysis_end_date
)
end
def set_insights_next_steps
return if @school.has_solar_pv?
@advice_page_insights_next_steps = t("advice_pages.#{advice_page_key}.#{section_key}.insights.next_steps_html").html_safe
end
def set_page_subtitle
@advice_page_subtitle = t("advice_pages.#{advice_page_key}.#{section_key}.#{action_name}.title")
end
def set_page_title
@advice_page_title = t("advice_pages.#{advice_page_key}.#{section_key}.page_title")
end
def section_key
@school.has_solar_pv? ? :has_solar_pv : :no_solar_pv
end
def advice_page_fuel_type
:electricity
end
def advice_page_key
:solar_pv
end
end
end
end