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.
78 lines
2.4 KiB
78 lines
2.4 KiB
class BulkUploadLettingsLogsController < ApplicationController |
|
before_action :authenticate_user! |
|
before_action :validate_data_protection_agreement_signed! |
|
before_action :validate_year!, except: %w[start] |
|
|
|
def start |
|
if have_choice_of_year? |
|
redirect_to bulk_upload_lettings_log_path(id: "year", form: { organisation_id: params[:organisation_id] }.compact) |
|
else |
|
redirect_to bulk_upload_lettings_log_path(id: "prepare-your-file", form: { year: current_year, organisation_id: params[:organisation_id] }.compact) |
|
end |
|
end |
|
|
|
def show |
|
render form.view_path |
|
end |
|
|
|
def update |
|
if form.valid? && form.save! |
|
redirect_to form.next_path |
|
else |
|
render form.view_path |
|
end |
|
end |
|
|
|
private |
|
|
|
def validate_data_protection_agreement_signed! |
|
return if @current_user.organisation.data_protection_confirmed? |
|
|
|
redirect_to lettings_logs_path |
|
end |
|
|
|
def validate_year! |
|
return if params[:id] == "year" |
|
return if params[:id] == "guidance" && params.dig(:form, :year).nil? |
|
|
|
allowed_years = [current_year] |
|
allowed_years.push(current_year - 1) if FormHandler.instance.lettings_in_crossover_period? |
|
allowed_years.push(current_year + 1) if FeatureToggle.allow_future_form_use? |
|
|
|
provided_year = params.dig(:form, :year)&.to_i |
|
return if allowed_years.include?(provided_year) |
|
|
|
render_not_found |
|
end |
|
|
|
def current_year |
|
FormHandler.instance.current_collection_start_year |
|
end |
|
|
|
def have_choice_of_year? |
|
return true if FeatureToggle.allow_future_form_use? |
|
|
|
FormHandler.instance.lettings_in_crossover_period? |
|
end |
|
|
|
def form |
|
@form ||= case params[:id] |
|
when "year" |
|
Forms::BulkUploadLettings::Year.new(form_params) |
|
when "prepare-your-file" |
|
Forms::BulkUploadLettings::PrepareYourFile.new(form_params) |
|
when "guidance" |
|
Forms::BulkUploadLettings::Guidance.new(form_params.merge(referrer: params[:referrer])) |
|
when "upload-your-file" |
|
Forms::BulkUploadLettings::UploadYourFile.new(form_params.merge(current_user:)) |
|
when "checking-file" |
|
Forms::BulkUploadLettings::CheckingFile.new(form_params) |
|
else |
|
raise "Page not found for path #{params[:id]}" |
|
end |
|
end |
|
|
|
def form_params |
|
params.fetch(:form, {}).permit(:year, :file, :organisation_id) |
|
end |
|
end
|
|
|