diff --git a/app/models/form.rb b/app/models/form.rb index 7e13a4fa0..baae2d9bb 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -3,19 +3,30 @@ class Form :start_date, :new_logs_end_date, :submission_deadline, :type, :name, :setup_definition, :setup_sections, :form_sections, :unresolved_log_redirect_page_id, :edit_end_date + DEADLINES = { + 2022 => { + submission_deadline: Time.zone.local(2023, 6, 9), + new_logs_end_date: Time.zone.local(2023, 11, 20), + edit_end_date: Time.zone.local(2023, 11, 20), + }, + 2023 => { + submission_deadline: Time.zone.local(2024, 6, 7), + }, + 2024 => { + submission_deadline: Time.zone.local(2025, 6, 6), + }, + :default => { + submission_deadline: ->(start_year) { Time.zone.local(start_year + 1, 6, 1) }, + new_logs_end_date: ->(start_year) { Time.zone.local(start_year + 1, 12, 31) }, + edit_end_date: ->(start_year) { Time.zone.local(start_year + 1, 12, 31) }, + }, + }.freeze + def initialize(form_path, start_year = "", sections_in_form = [], type = "lettings") if sales_or_start_year_after_2022?(type, start_year) @start_date = Time.zone.local(start_year, 4, 1) - @new_logs_end_date = if start_year && start_year.to_i == 2022 - Time.zone.local(start_year + 1, 11, 20) - else - Time.zone.local(start_year + 1, 12, 31) - end - @submission_deadline = if start_year && start_year.to_i > 2022 - Time.zone.local(start_year + 1, 6, 7) - else - Time.zone.local(start_year + 1, 6, 9) - end + @new_logs_end_date = DEADLINES.dig(start_year, :new_logs_end_date) || DEADLINES[:default][:new_logs_end_date].call(start_year) + @submission_deadline = DEADLINES.dig(start_year, :submission_deadline) || DEADLINES[:default][:submission_deadline].call(start_year) @setup_sections = type == "sales" ? [Form::Sales::Sections::Setup.new(nil, nil, self)] : [Form::Lettings::Sections::Setup.new(nil, nil, self)] @form_sections = sections_in_form.map { |sec| sec.new(nil, nil, self) } @type = type @@ -30,11 +41,7 @@ class Form "sections" => sections, } @unresolved_log_redirect_page_id = "tenancy_start_date" if type == "lettings" - @edit_end_date = if start_year && start_year.to_i == 2022 - Time.zone.local(start_year + 1, 11, 20) - else - Time.zone.local(start_year + 1, 12, 31) - end + @edit_end_date = DEADLINES.dig(start_year, :edit_end_date) || DEADLINES[:default][:edit_end_date].call(start_year) else raise "No form definition file exists for given year".freeze unless File.exist?(form_path)