Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

62 lines
2.1 KiB

class FormHandler
include Singleton
attr_reader :forms
def initialize
@forms = get_all_forms
end
def get_form(form)
@forms[form].present? ? @forms[form]["form"] : nil
end
def current_lettings_form
forms["current_lettings"]["form"]
end
def current_sales_form
forms["current_sales"]["form"]
end
def sales_forms
sales_sections = [] # Add section classes here e.g. Form::Sales::Property::Sections::PropertyInformation
current_form = Form.new(nil, "#{current_collection_start_year}_#{current_collection_start_year + 1}_sales", sales_sections, "sales")
previous_form = Form.new(nil, "#{current_collection_start_year - 1}_#{current_collection_start_year}_sales", sales_sections, "sales")
{ "2022_2023_sales" => { "form" => Form.new(nil, "2022_2023_sales", sales_sections, "sales"), "type" => "sales" },
"current_sales" => { "form" => current_form, "type" => "sales", "start_year" => current_form.start_date.year },
"previous_sales" => { "form" => previous_form, "type" => "sales", "start_year" => previous_form.start_date.year } }
end
def lettings_forms
forms = {}
directories.each do |directory|
Dir.glob("#{directory}/*.json").each do |form_path|
form_name = File.basename(form_path, ".json")
form = Form.new(form_path, form_name)
lettings_form_definition = { "form" => form, "type" => "lettings", "start_year" => form.start_date.year }
forms[form_name] = lettings_form_definition
form_mappings = { 0 => "current_lettings", 1 => "previous_lettings", -1 => "next_lettings" }
form_to_set = form_mappings[current_collection_start_year - form.start_date.year]
forms[form_to_set] = lettings_form_definition if forms[form_to_set].blank?
end
end
forms
end
def current_collection_start_year
today = Time.zone.now
window_end_date = Time.zone.local(today.year, 4, 1)
today < window_end_date ? today.year - 1 : today.year
end
private
def get_all_forms
lettings_forms.merge(sales_forms)
end
def directories
Rails.env.test? ? ["spec/fixtures/forms"] : ["config/forms"]
end
end