Browse Source

wip

pull/730/head
JG 3 years ago
parent
commit
d7ceec030c
  1. 25
      app/controllers/schemes_controller.rb
  2. 15
      app/views/schemes/details.html.erb
  3. 14
      app/views/schemes/new.html.erb
  4. 14
      spec/requests/schemes_controller_spec.rb

25
app/controllers/schemes_controller.rb

@ -25,12 +25,12 @@ class SchemesController < ApplicationController
end
def create
@scheme = Scheme.new(scheme_params)
@scheme = Scheme.new(scheme_params.except(:support_services_provider_before_type_cast))
validation_errors scheme_params
validation_errors scheme_params.except(:support_services_provider_before_type_cast)
if @scheme.errors.empty? && @scheme.save
if scheme_params[:support_services_provider] == "The same organisation that owns the housing stock"
if scheme_params[:support_services_provider].zero?
redirect_to scheme_primary_client_group_path(@scheme)
else
redirect_to scheme_support_services_provider_path(@scheme)
@ -46,9 +46,9 @@ class SchemesController < ApplicationController
check_answers = params[:scheme][:check_answers]
page = params[:scheme][:page]
validation_errors scheme_params
validation_errors scheme_params.except(:support_services_provider_before_type_cast)
if @scheme.errors.empty? && @scheme.update(scheme_params)
if @scheme.errors.empty? && @scheme.update(scheme_params.except(:support_services_provider_before_type_cast))
if check_answers
if confirm_secondary_page? page
redirect_to scheme_secondary_client_group_path(@scheme, check_answers: "true")
@ -139,7 +139,7 @@ private
when "support"
new_location_path
when "details"
if @scheme.support_services_provider.eql? "The same organisation that owns the housing stock"
if @scheme.support_services_provider.eql? "0"
scheme_primary_client_group_path(@scheme)
else
scheme_support_services_provider_path(@scheme)
@ -162,17 +162,24 @@ private
:secondary_client_group,
:support_type,
:support_services_provider,
:support_services_provider_before_type_cast,
:intended_stay)
same_org_providing_support = required_params[:support_services_provider] == "The same organisation that owns the housing stock"
same_org_providing_support = required_params[:support_services_provider_before_type_cast] == "0"
full_params = same_org_providing_support && required_params[:owning_organisation_id].present? ? required_params.merge(managing_organisation_id: required_params[:owning_organisation_id]) : required_params
full_params[:sensitive] = full_params[:sensitive].to_i if full_params[:sensitive]
if full_params[:support_services_provider_before_type_cast]
translated_params = full_params.merge(support_services_provider: full_params[:support_services_provider_before_type_cast].to_i)
else
translated_params = full_params
end
if current_user.data_coordinator?
full_params[:owning_organisation_id] = current_user.organisation_id
translated_params[:owning_organisation_id] = current_user.organisation_id
end
full_params
translated_params
end
def search_term

15
app/views/schemes/details.html.erb

@ -63,12 +63,19 @@
"data-controller": %w[accessible-autocomplete conditional-filter] %>
<% end %>
<% support_services_provider_selection = Scheme.support_services_providers.keys.map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %>
<%= f.govuk_collection_radio_buttons :support_services_provider,
<% support_services_provider_selection = Scheme.support_services_providers.map do |key, value| %>
<% OpenStruct.new(id: value, name: key.to_s.humanize) %>
<% end %>
<%= f.govuk_collection_radio_buttons :support_services_provider_before_type_cast,
support_services_provider_selection,
:id,
:name,
->(option) do
if option.id.zero? && !current_user.support?
"Your organisation"
else
option.name
end
end,
legend: { text: "Who provides the support services used by this scheme?", size: "m" } %>
<%= f.hidden_field :page, value: "details" %>

14
app/views/schemes/new.html.erb

@ -65,12 +65,20 @@
"data-controller": %w[accessible-autocomplete conditional-filter] %>
<% end %>
<% support_services_provider_selection = Scheme.support_services_providers.keys.map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %>
<% support_services_provider_selection = Scheme.support_services_providers.map do |key, value| %>
<% OpenStruct.new(id: value, name: key.to_s.humanize) %>
<% end %>
<%= f.govuk_collection_radio_buttons :support_services_provider,
<%= f.govuk_collection_radio_buttons :support_services_provider_before_type_cast,
support_services_provider_selection,
:id,
:name,
->(option) do
if option.id.zero? && !current_user.support?
"Your organisation"
else
option.name
end
end,
legend: { text: "Who provides the support services used by this scheme?", size: "m" } %>
<%= f.govuk_submit "Save and continue" %>

14
spec/requests/schemes_controller_spec.rb

@ -341,7 +341,7 @@ RSpec.describe SchemesController, type: :request do
sensitive: "1",
scheme_type: "Foyer",
registered_under_care_act: "No",
support_services_provider: "The same organisation that owns the housing stock" } }
support_services_provider_before_type_cast: "0" } }
end
before do
@ -378,7 +378,7 @@ RSpec.describe SchemesController, type: :request do
sensitive: "1",
scheme_type: "Foyer",
registered_under_care_act: "No",
support_services_provider: "Another registered housing provider" } }
support_services_provider_before_type_cast: "1" } }
end
it "creates a new scheme for user organisation with valid params and renders correct page" do
@ -411,7 +411,7 @@ RSpec.describe SchemesController, type: :request do
{ scheme: { service_name: "",
scheme_type: "",
registered_under_care_act: "",
support_services_provider: "" } }
support_services_provider_before_type_cast: "" } }
end
it "renders the same page with error message" do
@ -435,7 +435,7 @@ RSpec.describe SchemesController, type: :request do
scheme_type: "Foyer",
registered_under_care_act: "No",
owning_organisation_id: organisation.id,
support_services_provider: "The same organisation that owns the housing stock" } }
support_services_provider_before_type_cast: "0" } }
end
before do
@ -474,7 +474,7 @@ RSpec.describe SchemesController, type: :request do
scheme_type: "Foyer",
registered_under_care_act: "No",
owning_organisation_id: organisation.id,
support_services_provider: "Another registered housing provider" } }
support_services_provider_before_type_cast: "1" } }
end
it "creates a new scheme for user organisation with valid params and renders correct page" do
@ -506,7 +506,7 @@ RSpec.describe SchemesController, type: :request do
{ scheme: { service_name: "",
scheme_type: "",
registered_under_care_act: "",
support_services_provider: "" } }
support_services_provider_before_type_cast: "" } }
end
it "renders the same page with error message" do
@ -787,7 +787,7 @@ RSpec.describe SchemesController, type: :request do
registered_under_care_act: "No",
page: "details",
owning_organisation_id: organisation.id,
support_services_provider: "The same organisation that owns the housing stock" } }
support_services_provider_before_type_cast: "0" } }
end
it "renders confirm secondary group after successful update" do

Loading…
Cancel
Save