Browse Source

wip

pull/730/head
JG 3 years ago
parent
commit
d7ceec030c
  1. 27
      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

27
app/controllers/schemes_controller.rb

@ -25,12 +25,12 @@ class SchemesController < ApplicationController
end end
def create 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.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) redirect_to scheme_primary_client_group_path(@scheme)
else else
redirect_to scheme_support_services_provider_path(@scheme) redirect_to scheme_support_services_provider_path(@scheme)
@ -46,9 +46,9 @@ class SchemesController < ApplicationController
check_answers = params[:scheme][:check_answers] check_answers = params[:scheme][:check_answers]
page = params[:scheme][:page] 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 check_answers
if confirm_secondary_page? page if confirm_secondary_page? page
redirect_to scheme_secondary_client_group_path(@scheme, check_answers: "true") redirect_to scheme_secondary_client_group_path(@scheme, check_answers: "true")
@ -96,7 +96,7 @@ class SchemesController < ApplicationController
render "schemes/support_services_provider" render "schemes/support_services_provider"
end end
private private
def validation_errors(scheme_params) def validation_errors(scheme_params)
scheme_params.each_key do |key| scheme_params.each_key do |key|
@ -139,7 +139,7 @@ private
when "support" when "support"
new_location_path new_location_path
when "details" 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) scheme_primary_client_group_path(@scheme)
else else
scheme_support_services_provider_path(@scheme) scheme_support_services_provider_path(@scheme)
@ -162,17 +162,24 @@ private
:secondary_client_group, :secondary_client_group,
:support_type, :support_type,
:support_services_provider, :support_services_provider,
:support_services_provider_before_type_cast,
:intended_stay) :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 = 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] 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? if current_user.data_coordinator?
full_params[:owning_organisation_id] = current_user.organisation_id translated_params[:owning_organisation_id] = current_user.organisation_id
end end
full_params translated_params
end end
def search_term def search_term

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

@ -63,12 +63,19 @@
"data-controller": %w[accessible-autocomplete conditional-filter] %> "data-controller": %w[accessible-autocomplete conditional-filter] %>
<% end %> <% 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) %>
<%= f.govuk_collection_radio_buttons :support_services_provider, <% end %>
<%= f.govuk_collection_radio_buttons :support_services_provider_before_type_cast,
support_services_provider_selection, support_services_provider_selection,
:id, :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" } %> legend: { text: "Who provides the support services used by this scheme?", size: "m" } %>
<%= f.hidden_field :page, value: "details" %> <%= f.hidden_field :page, value: "details" %>

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

@ -65,12 +65,20 @@
"data-controller": %w[accessible-autocomplete conditional-filter] %> "data-controller": %w[accessible-autocomplete conditional-filter] %>
<% end %> <% 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, support_services_provider_selection,
:id, :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" } %> legend: { text: "Who provides the support services used by this scheme?", size: "m" } %>
<%= f.govuk_submit "Save and continue" %> <%= 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", sensitive: "1",
scheme_type: "Foyer", scheme_type: "Foyer",
registered_under_care_act: "No", registered_under_care_act: "No",
support_services_provider: "The same organisation that owns the housing stock" } } support_services_provider_before_type_cast: "0" } }
end end
before do before do
@ -378,7 +378,7 @@ RSpec.describe SchemesController, type: :request do
sensitive: "1", sensitive: "1",
scheme_type: "Foyer", scheme_type: "Foyer",
registered_under_care_act: "No", registered_under_care_act: "No",
support_services_provider: "Another registered housing provider" } } support_services_provider_before_type_cast: "1" } }
end end
it "creates a new scheme for user organisation with valid params and renders correct page" do 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: { service_name: "",
scheme_type: "", scheme_type: "",
registered_under_care_act: "", registered_under_care_act: "",
support_services_provider: "" } } support_services_provider_before_type_cast: "" } }
end end
it "renders the same page with error message" do it "renders the same page with error message" do
@ -435,7 +435,7 @@ RSpec.describe SchemesController, type: :request do
scheme_type: "Foyer", scheme_type: "Foyer",
registered_under_care_act: "No", registered_under_care_act: "No",
owning_organisation_id: organisation.id, owning_organisation_id: organisation.id,
support_services_provider: "The same organisation that owns the housing stock" } } support_services_provider_before_type_cast: "0" } }
end end
before do before do
@ -474,7 +474,7 @@ RSpec.describe SchemesController, type: :request do
scheme_type: "Foyer", scheme_type: "Foyer",
registered_under_care_act: "No", registered_under_care_act: "No",
owning_organisation_id: organisation.id, owning_organisation_id: organisation.id,
support_services_provider: "Another registered housing provider" } } support_services_provider_before_type_cast: "1" } }
end end
it "creates a new scheme for user organisation with valid params and renders correct page" do 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: { service_name: "",
scheme_type: "", scheme_type: "",
registered_under_care_act: "", registered_under_care_act: "",
support_services_provider: "" } } support_services_provider_before_type_cast: "" } }
end end
it "renders the same page with error message" do it "renders the same page with error message" do
@ -787,7 +787,7 @@ RSpec.describe SchemesController, type: :request do
registered_under_care_act: "No", registered_under_care_act: "No",
page: "details", page: "details",
owning_organisation_id: organisation.id, owning_organisation_id: organisation.id,
support_services_provider: "The same organisation that owns the housing stock" } } support_services_provider_before_type_cast: "0" } }
end end
it "renders confirm secondary group after successful update" do it "renders confirm secondary group after successful update" do

Loading…
Cancel
Save