Browse Source

wip

pull/730/head
JG 3 years ago
parent
commit
d7ceec030c
  1. 27
      app/controllers/schemes_controller.rb
  2. 37
      app/views/schemes/details.html.erb
  3. 32
      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

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

@ -2,9 +2,9 @@
<% content_for :before_content do %> <% content_for :before_content do %>
<%= govuk_back_link( <%= govuk_back_link(
text: "Back", text: "Back",
href: :back, href: :back,
) %> ) %>
<% end %> <% end %>
<%= render partial: "organisations/headings", locals: { main: "Create a new supported housing scheme", sub: nil } %> <%= render partial: "organisations/headings", locals: { main: "Create a new supported housing scheme", sub: nil } %>
@ -15,11 +15,11 @@
<%= f.govuk_error_summary %> <%= f.govuk_error_summary %>
<%= f.govuk_text_field :service_name, <%= f.govuk_text_field :service_name,
label: { text: "Scheme name", size: "m" }, label: { text: "Scheme name", size: "m" },
hint: { text: "This is how you refer to this supported housing scheme within your organisation. For example, the name could relate to the address or location. You’ll be able to see the client group when selecting it." } %> hint: { text: "This is how you refer to this supported housing scheme within your organisation. For example, the name could relate to the address or location. You’ll be able to see the client group when selecting it." } %>
<%= f.govuk_check_boxes_fieldset :sensitive, <%= f.govuk_check_boxes_fieldset :sensitive,
legend: nil do %> legend: nil do %>
<%= f.govuk_check_box :sensitive, <%= f.govuk_check_box :sensitive,
1, 1,
0, 0,
@ -35,10 +35,10 @@
<% scheme_types_selection = Scheme.scheme_types.keys.excluding("Missing").map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %> <% scheme_types_selection = Scheme.scheme_types.keys.excluding("Missing").map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %>
<%= f.govuk_collection_radio_buttons :scheme_type, <%= f.govuk_collection_radio_buttons :scheme_type,
scheme_types_selection, scheme_types_selection,
:id, :id,
:name, :name,
legend: { text: "What is this type of scheme?", size: "m" } %> legend: { text: "What is this type of scheme?", size: "m" } %>
<% care_acts_options_hints = { "Yes – part registered as a care home": "A proportion of units are registered as being a care home." } %> <% care_acts_options_hints = { "Yes – part registered as a care home": "A proportion of units are registered as being a care home." } %>
@ -63,17 +63,24 @@
"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" %>
<% if request.query_parameters["check_answers"] %> <% if request.query_parameters["check_answers"] %>
<%= f.hidden_field :check_answers, value: "true" %> <%= f.hidden_field :check_answers, value: "true" %>
<% end %> <% end %>
<%= f.govuk_submit "Save and continue" %> <%= f.govuk_submit "Save and continue" %>
</div> </div>

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

@ -2,9 +2,9 @@
<% content_for :before_content do %> <% content_for :before_content do %>
<%= govuk_back_link( <%= govuk_back_link(
text: "Back", text: "Back",
href: "javascript:history.go(-1);", href: "javascript:history.go(-1);",
) %> ) %>
<% end %> <% end %>
<%= form_for(@scheme, as: :scheme, method: :post) do |f| %> <%= form_for(@scheme, as: :scheme, method: :post) do |f| %>
@ -17,8 +17,8 @@
</h1> </h1>
<%= f.govuk_text_field :service_name, <%= f.govuk_text_field :service_name,
label: { text: "Scheme name", size: "m" }, label: { text: "Scheme name", size: "m" },
hint: { text: "This is how you refer to this supported housing scheme within your organisation. For example, the name could relate to the address or location. You’ll be able to see the client group when selecting it." } %> hint: { text: "This is how you refer to this supported housing scheme within your organisation. For example, the name could relate to the address or location. You’ll be able to see the client group when selecting it." } %>
<%= f.govuk_check_boxes_fieldset :sensitive, <%= f.govuk_check_boxes_fieldset :sensitive,
legend: nil do %> legend: nil do %>
@ -39,10 +39,10 @@
<% scheme_types_selection = Scheme.scheme_types.keys.excluding("Missing").map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %> <% scheme_types_selection = Scheme.scheme_types.keys.excluding("Missing").map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %>
<%= f.govuk_collection_radio_buttons :scheme_type, <%= f.govuk_collection_radio_buttons :scheme_type,
scheme_types_selection, scheme_types_selection,
:id, :id,
:name, :name,
legend: { text: "What is this type of scheme?", size: "m" } %> legend: { text: "What is this type of scheme?", size: "m" } %>
<% care_acts_options_hints = { "Yes – part registered as a care home": "A proportion of units are registered as being a care home." } %> <% care_acts_options_hints = { "Yes – part registered as a care home": "A proportion of units are registered as being a care home." } %>
@ -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