diff --git a/app/controllers/bulk_upload_lettings_logs_controller.rb b/app/controllers/bulk_upload_lettings_logs_controller.rb
index 56d35da38..af857fc88 100644
--- a/app/controllers/bulk_upload_lettings_logs_controller.rb
+++ b/app/controllers/bulk_upload_lettings_logs_controller.rb
@@ -9,9 +9,36 @@ class BulkUploadLettingsLogsController < ApplicationController
end
end
+ def show
+ render form.view_path
+ end
+
+ def update
+ if form.valid?
+ redirect_to bulk_upload_lettings_log_path(id: "prepare-your-file", form: { year: form_params[:year] })
+ else
+ render form.view_path
+ end
+ end
+
private
def in_crossover_period?
FormHandler.instance.forms.values.any?(&: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)
+ else
+ raise "Page not found for path #{params[:id]}"
+ end
+ end
+
+ def form_params
+ params.fetch(:form, {}).permit(:year)
+ end
end
diff --git a/app/controllers/bulk_upload_sales_logs_controller.rb b/app/controllers/bulk_upload_sales_logs_controller.rb
index 100dff40d..b96573925 100644
--- a/app/controllers/bulk_upload_sales_logs_controller.rb
+++ b/app/controllers/bulk_upload_sales_logs_controller.rb
@@ -9,9 +9,36 @@ class BulkUploadSalesLogsController < ApplicationController
end
end
+ def show
+ render form.view_path
+ end
+
+ def update
+ if form.valid?
+ redirect_to bulk_upload_sales_log_path(id: "prepare-your-file", form: { year: form_params[:year] })
+ else
+ render form.view_path
+ end
+ end
+
private
def in_crossover_period?
FormHandler.instance.forms.values.any?(&:in_crossover_period?)
end
+
+ def form
+ @form ||= case params[:id]
+ when "year"
+ Forms::BulkUploadSales::Year.new(form_params)
+ when "prepare-your-file"
+ Forms::BulkUploadSales::PrepareYourFile.new(form_params)
+ else
+ raise "Page not found for path #{params[:id]}"
+ end
+ end
+
+ def form_params
+ params.fetch(:form, {}).permit(:year)
+ end
end
diff --git a/app/models/forms/bulk_upload_lettings/prepare_your_file.rb b/app/models/forms/bulk_upload_lettings/prepare_your_file.rb
new file mode 100644
index 000000000..6791b6238
--- /dev/null
+++ b/app/models/forms/bulk_upload_lettings/prepare_your_file.rb
@@ -0,0 +1,27 @@
+module Forms
+ module BulkUploadLettings
+ class PrepareYourFile
+ include ActiveModel::Model
+
+ attr_accessor :year
+
+ def view_path
+ "bulk_upload_lettings_logs/forms/prepare_your_file"
+ end
+
+ def back_path
+ if in_crossover_period?
+ Rails.application.routes.url_helpers.bulk_upload_lettings_log_path(id: "year", form: { year: })
+ else
+ Rails.application.routes.url_helpers.lettings_logs_path
+ end
+ end
+
+ private
+
+ def in_crossover_period?
+ FormHandler.instance.forms.values.any?(&:in_crossover_period?)
+ end
+ end
+ end
+end
diff --git a/app/models/forms/bulk_upload_lettings/year.rb b/app/models/forms/bulk_upload_lettings/year.rb
new file mode 100644
index 000000000..1939a2d71
--- /dev/null
+++ b/app/models/forms/bulk_upload_lettings/year.rb
@@ -0,0 +1,26 @@
+module Forms
+ module BulkUploadLettings
+ class Year
+ include ActiveModel::Model
+
+ attr_accessor :year
+
+ validates :year, presence: true
+
+ def view_path
+ "bulk_upload_lettings_logs/forms/year"
+ end
+
+ def options
+ [
+ OpenStruct.new(id: "2022", name: "2022/2023"),
+ OpenStruct.new(id: "2021", name: "2021/2022"),
+ ]
+ end
+
+ def back_path
+ Rails.application.routes.url_helpers.lettings_logs_path
+ end
+ end
+ end
+end
diff --git a/app/models/forms/bulk_upload_sales/prepare_your_file.rb b/app/models/forms/bulk_upload_sales/prepare_your_file.rb
new file mode 100644
index 000000000..71d6c7f48
--- /dev/null
+++ b/app/models/forms/bulk_upload_sales/prepare_your_file.rb
@@ -0,0 +1,25 @@
+module Forms
+ module BulkUploadSales
+ class PrepareYourFile
+ include ActiveModel::Model
+
+ attr_accessor :year
+
+ def view_path
+ "bulk_upload_sales_logs/forms/prepare_your_file"
+ end
+
+ def back_path
+ if in_crossover_period?
+ Rails.application.routes.url_helpers.bulk_upload_sales_log_path(id: "year", form: { year: })
+ else
+ Rails.application.routes.url_helpers.sales_logs_path
+ end
+ end
+
+ def in_crossover_period?
+ FormHandler.instance.forms.values.any?(&:in_crossover_period?)
+ end
+ end
+ end
+end
diff --git a/app/models/forms/bulk_upload_sales/year.rb b/app/models/forms/bulk_upload_sales/year.rb
new file mode 100644
index 000000000..aff1f188d
--- /dev/null
+++ b/app/models/forms/bulk_upload_sales/year.rb
@@ -0,0 +1,26 @@
+module Forms
+ module BulkUploadSales
+ class Year
+ include ActiveModel::Model
+
+ attr_accessor :year
+
+ validates :year, presence: true
+
+ def view_path
+ "bulk_upload_sales_logs/forms/year"
+ end
+
+ def options
+ [
+ OpenStruct.new(id: "2022", name: "2022/2023"),
+ OpenStruct.new(id: "2021", name: "2021/2022"),
+ ]
+ end
+
+ def back_path
+ Rails.application.routes.url_helpers.sales_logs_path
+ end
+ end
+ end
+end
diff --git a/app/views/bulk_upload_lettings_logs/forms/prepare_your_file.html.erb b/app/views/bulk_upload_lettings_logs/forms/prepare_your_file.html.erb
new file mode 100644
index 000000000..6e943c7a9
--- /dev/null
+++ b/app/views/bulk_upload_lettings_logs/forms/prepare_your_file.html.erb
@@ -0,0 +1,15 @@
+<% content_for :before_content do %>
+ <%= govuk_back_link href: @form.back_path %>
+<% end %>
+
+<%= form_with model: @form, scope: :form, url: bulk_upload_lettings_log_path(id: "prepare-your-file"), method: :patch do |f| %>
+
+ prepare file goes here
+
+
+
+ year selected <%= @form.year %>
+
+
+ <%= f.govuk_submit %>
+<% end %>
diff --git a/app/views/bulk_upload_lettings_logs/forms/year.html.erb b/app/views/bulk_upload_lettings_logs/forms/year.html.erb
new file mode 100644
index 000000000..8ba1c280f
--- /dev/null
+++ b/app/views/bulk_upload_lettings_logs/forms/year.html.erb
@@ -0,0 +1,16 @@
+<% content_for :before_content do %>
+ <%= govuk_back_link href: @form.back_path %>
+<% end %>
+
+<%= form_with model: @form, scope: :form, url: bulk_upload_lettings_log_path(id: "year"), method: :patch do |f| %>
+ <%= f.govuk_error_summary %>
+
+ <%= f.govuk_collection_radio_buttons :year,
+ @form.options,
+ :id,
+ :name,
+ legend: { text: "Which year are you uploading data for?", size: "l" },
+ caption: { text: "Upload lettings logs in bulk", size: "l" } %>
+
+ <%= f.govuk_submit %>
+<% end %>
diff --git a/app/views/bulk_upload_lettings_logs/show.html.erb b/app/views/bulk_upload_lettings_logs/show.html.erb
deleted file mode 100644
index 6f03ef508..000000000
--- a/app/views/bulk_upload_lettings_logs/show.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-Find me in app/views/bulk_upload_lettings_logs/show.html.erb
diff --git a/app/views/bulk_upload_sales_logs/forms/prepare_your_file.html.erb b/app/views/bulk_upload_sales_logs/forms/prepare_your_file.html.erb
new file mode 100644
index 000000000..5aa215ebc
--- /dev/null
+++ b/app/views/bulk_upload_sales_logs/forms/prepare_your_file.html.erb
@@ -0,0 +1,15 @@
+<% content_for :before_content do %>
+ <%= govuk_back_link href: @form.back_path %>
+<% end %>
+
+<%= form_with model: @form, scope: :form, url: bulk_upload_sales_log_path(id: "prepare-your-file"), method: :patch do |f| %>
+
+ prepare file goes here
+
+
+
+ year selected <%= @form.year %>
+
+
+ <%= f.govuk_submit %>
+<% end %>
diff --git a/app/views/bulk_upload_sales_logs/forms/year.html.erb b/app/views/bulk_upload_sales_logs/forms/year.html.erb
new file mode 100644
index 000000000..d8aa09172
--- /dev/null
+++ b/app/views/bulk_upload_sales_logs/forms/year.html.erb
@@ -0,0 +1,16 @@
+<% content_for :before_content do %>
+ <%= govuk_back_link href: @form.back_path %>
+<% end %>
+
+<%= form_with model: @form, scope: :form, url: bulk_upload_sales_log_path(id: "year"), method: :patch do |f| %>
+ <%= f.govuk_error_summary %>
+
+ <%= f.govuk_collection_radio_buttons :year,
+ @form.options,
+ :id,
+ :name,
+ legend: { text: "Which year are you uploading data for?", size: "l" },
+ caption: { text: "Upload sales logs in bulk", size: "l" } %>
+
+ <%= f.govuk_submit %>
+<% end %>
diff --git a/app/views/bulk_upload_sales_logs/show.html.erb b/app/views/bulk_upload_sales_logs/show.html.erb
deleted file mode 100644
index 86facd42c..000000000
--- a/app/views/bulk_upload_sales_logs/show.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-Find me in app/views/bulk_upload_sales_logs/show.html.erb
diff --git a/config/locales/en.yml b/config/locales/en.yml
index f839ccf7e..4ea4af8cc 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -38,6 +38,18 @@ en:
create_password: "Create a password to finish setting up your account"
reset_password: "Reset your password"
+ activemodel:
+ errors:
+ models:
+ forms/bulk_upload_lettings/year:
+ attributes:
+ year:
+ blank: You must select a collection period to upload for
+ forms/bulk_upload_sales/year:
+ attributes:
+ year:
+ blank: You must select a collection period to upload for
+
activerecord:
errors:
models:
diff --git a/spec/features/bulk_upload_lettings_logs_spec.rb b/spec/features/bulk_upload_lettings_logs_spec.rb
new file mode 100644
index 000000000..f5832c3a3
--- /dev/null
+++ b/spec/features/bulk_upload_lettings_logs_spec.rb
@@ -0,0 +1,32 @@
+require "rails_helper"
+
+RSpec.describe "Bulk upload lettings log" do
+ let(:user) { create(:user) }
+
+ before do
+ sign_in user
+ end
+
+ context "when during crossover period" do
+ it "shows journey with year option" do
+ Timecop.freeze(2023, 6, 1) do
+ visit("/lettings-logs")
+ expect(page).to have_link("Upload lettings log in bulk")
+ click_link("Upload lettings log in bulk")
+
+ expect(page).to have_content("Which year")
+ click_button("Continue")
+
+ expect(page).to have_content("You must select a collection period to upload for")
+ choose("2022/2023")
+
+ click_button("Continue")
+
+ expect(page).to have_content("prepare file goes here")
+ click_link("Back")
+
+ expect(page.find_field("form-year-2022-field")).to be_checked
+ end
+ end
+ end
+end
diff --git a/spec/features/bulk_upload_sales_logs_spec.rb b/spec/features/bulk_upload_sales_logs_spec.rb
new file mode 100644
index 000000000..95c9b8a4f
--- /dev/null
+++ b/spec/features/bulk_upload_sales_logs_spec.rb
@@ -0,0 +1,31 @@
+require "rails_helper"
+
+RSpec.describe "Bulk upload sales log" do
+ let(:user) { create(:user) }
+
+ before do
+ sign_in user
+ end
+
+ context "when during crossover period" do
+ it "shows journey with year option" do
+ Timecop.freeze(2023, 6, 1) do
+ visit("/sales-logs")
+ expect(page).to have_link("Upload sales log in bulk")
+ click_link("Upload sales log in bulk")
+
+ expect(page).to have_content("Which year")
+ click_button("Continue")
+
+ expect(page).to have_content("You must select a collection period to upload for")
+ choose("2022/2023")
+ click_button("Continue")
+
+ expect(page).to have_content("prepare file goes here")
+ click_link("Back")
+
+ expect(page.find_field("form-year-2022-field")).to be_checked
+ end
+ end
+ end
+end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index cdeb71092..e25631df7 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -82,6 +82,7 @@ RSpec.configure do |config|
config.include Devise::Test::ControllerHelpers, type: :controller
config.include Devise::Test::ControllerHelpers, type: :view
config.include Devise::Test::IntegrationHelpers, type: :request
+ config.include Devise::Test::IntegrationHelpers, type: :feature
config.include ViewComponent::TestHelpers, type: :component
config.include Capybara::RSpecMatchers, type: :component
config.include ActiveJob::TestHelper