Browse Source

spike finished

pull/671/head
JG 3 years ago
parent
commit
2f59e0e4e8
  1. 15
      app/controllers/schemes_controller.rb
  2. 10
      app/models/scheme.rb
  3. 2
      app/views/organisations/schemes.html.erb
  4. 1
      app/views/schemes/check_answers.html.erb
  5. 18
      app/views/schemes/details.html.erb
  6. 9
      app/views/schemes/new.html.erb
  7. 2
      app/views/schemes/primary_client_group.html.erb
  8. 3
      db/seeds.rb

15
app/controllers/schemes_controller.rb

@ -40,12 +40,19 @@ class SchemesController < ApplicationController
def primary_client_group def primary_client_group
@scheme = Scheme.find_by(id: params[:scheme_id]) @scheme = Scheme.find_by(id: params[:scheme_id])
if params[:check_answers] if params[:check_answers]
@path = scheme_check_your_answers_path(scheme_id: @scheme.id) @path = scheme_check_your_answers_path(scheme_id: @scheme.id)
else else
@path = scheme_confirm_secondary_client_group_path(scheme_id: @scheme.id) @path = scheme_confirm_secondary_client_group_path(scheme_id: @scheme.id)
end end
if params[:scheme]
required_params = params.require(:scheme).permit(:intended_stay, :support_type, :service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id, :confirmed, :secondary_client_group, :primary_client_group)
required_params[:sensitive] = required_params[:sensitive].to_i if required_params[:sensitive]
@scheme.update(required_params)
end
render "schemes/primary_client_group" render "schemes/primary_client_group"
end end
@ -81,6 +88,11 @@ class SchemesController < ApplicationController
def details def details
@scheme = Scheme.find_by(id: params[:scheme_id]) @scheme = Scheme.find_by(id: params[:scheme_id])
if params[:check_answers]
@path = scheme_check_your_answers_path(scheme_id: @scheme.id)
else
@path = scheme_primary_client_group_path(scheme_id: @scheme.id)
end
render "schemes/details" render "schemes/details"
end end
@ -106,8 +118,7 @@ class SchemesController < ApplicationController
private private
def clean_params def clean_params
code = "S#{SecureRandom.alphanumeric(5)}".upcase required_params = params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id, :confirmed)
required_params = params.require(:scheme).permit(:service_name, :sensitive, :organisation_id, :scheme_type, :registered_under_care_act, :total_units, :id, :confirmed).merge(code: code)
required_params[:sensitive] = required_params[:sensitive].to_i required_params[:sensitive] = required_params[:sensitive].to_i
required_params required_params
end end

10
app/models/scheme.rb

@ -1,4 +1,6 @@
class Scheme < ApplicationRecord class Scheme < ApplicationRecord
before_create :create_code
belongs_to :organisation belongs_to :organisation
has_many :locations has_many :locations
has_many :case_logs has_many :case_logs
@ -8,7 +10,7 @@ class Scheme < ApplicationRecord
scope :search_by_postcode, ->(postcode) { joins(:locations).where("locations.postcode ILIKE ?", "%#{postcode.delete(' ')}%") } scope :search_by_postcode, ->(postcode) { joins(:locations).where("locations.postcode ILIKE ?", "%#{postcode.delete(' ')}%") }
scope :search_by, ->(param) { search_by_postcode(param).or(search_by_service_name(param)).or(search_by_code(param)).distinct } scope :search_by, ->(param) { search_by_postcode(param).or(search_by_service_name(param)).or(search_by_code(param)).distinct }
SENSITIVE= { SENSITIVE= {
No: 0, No: 0,
Yes: 1, Yes: 1,
}.freeze }.freeze
@ -125,4 +127,10 @@ class Scheme < ApplicationRecord
{ name: "Intended length of stay", value: intended_stay }, { name: "Intended length of stay", value: intended_stay },
] ]
end end
private
def create_code
self.code = Scheme.last.nil? ? "S1" : "S#{Scheme.last.code[1..-1].to_i + 1}"
end
end end

2
app/views/organisations/schemes.html.erb

@ -11,6 +11,8 @@
) %> ) %>
<% end %> <% end %>
<%= govuk_button_link_to "Create a new supported housing scheme", new_scheme_path, html: { method: :post } %>
<h2 class="govuk-visually-hidden">Supported housing schemes</h2> <h2 class="govuk-visually-hidden">Supported housing schemes</h2>
<%= render SearchComponent.new(current_user:, search_label: "Search by scheme name, code or postcode", value: @searched) %> <%= render SearchComponent.new(current_user:, search_label: "Search by scheme name, code or postcode", value: @searched) %>

1
app/views/schemes/check_answers.html.erb

@ -13,6 +13,7 @@
<% component.tab(label: 'Scheme') do %> <% component.tab(label: 'Scheme') do %>
<%= govuk_summary_list do |summary_list| %> <%= govuk_summary_list do |summary_list| %>
<% @scheme.check_details_attributes.each do |attr| %> <% @scheme.check_details_attributes.each do |attr| %>
<% next if current_user.data_coordinator? && attr[:name] == ("Managed by") %>
<%= summary_list.row do |row| %> <%= summary_list.row do |row| %>
<% row.key { attr[:name].to_s } %> <% row.key { attr[:name].to_s } %>
<% row.value { details_html(attr) } %> <% row.value { details_html(attr) } %>

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

@ -3,13 +3,13 @@
<% content_for :before_content do %> <% content_for :before_content do %>
<%= govuk_back_link( <%= govuk_back_link(
text: "Back", text: "Back",
href: "/schemes/#{@scheme.id}/secondary", href: :back,
) %> ) %>
<% end %> <% end %>
<%= render partial: "organisations/headings", locals: { main: "Scheme details", sub: @scheme.service_name } %> <%= render partial: "organisations/headings", locals: { main: "Scheme details", sub: @scheme.service_name } %>
<%= form_for(@scheme, method: :patch, url: scheme_check_your_answers_path(scheme_id: @scheme.id)) do |f| %> <%= form_for(@scheme, method: :patch, url: @path) do |f| %>
<div class="govuk-grid-row"> <div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds"> <div class="govuk-grid-column-two-thirds">
<%= f.govuk_error_summary %> <%= f.govuk_error_summary %>
@ -26,13 +26,7 @@
label: { text: "This scheme contains confidential information" } %> label: { text: "This scheme contains confidential information" } %>
<% if current_user.support? %> <% if current_user.support? %>
<% null_option = [OpenStruct.new(id: "", name: "Select an option")] %> <% answer_options = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% organisations = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% answer_options = null_option + organisations %>
<% if @organisation_id %>
<% organisation = Organisation.find(@organisation_id) %>
<% answer_options = [OpenStruct.new(id: organisation.id, name: organisation.name)] %>
<% end %>
<%= f.govuk_collection_select :organisation_id, <%= f.govuk_collection_select :organisation_id,
answer_options, answer_options,
@ -40,10 +34,14 @@
:name, :name,
label: { text: "Which organisation manages this scheme", size: "m" }, label: { text: "Which organisation manages this scheme", size: "m" },
hint: { text: "Enter organisation name" }, hint: { text: "Enter organisation name" },
options: { disabled: [""], selected: @scheme.organisation.name }, options: { required: true },
"data-controller": %w[accessible-autocomplete conditional-filter] %> "data-controller": %w[accessible-autocomplete conditional-filter] %>
<% end %> <% end %>
<% if current_user.data_coordinator? %>
<%= f.hidden_field :organisation_id, value: current_user.organisation.id %>
<% end %>
<% 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,

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

@ -32,10 +32,6 @@
<% null_option = [OpenStruct.new(id: "", name: "Select an option")] %> <% null_option = [OpenStruct.new(id: "", name: "Select an option")] %>
<% organisations = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %> <% organisations = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% answer_options = null_option + organisations %> <% answer_options = null_option + organisations %>
<% if @organisation_id %>
<% organisation = Organisation.find(@organisation_id) %>
<% answer_options = [OpenStruct.new(id: organisation.id, name: organisation.name)] %>
<% end %>
<%= f.govuk_collection_select :organisation_id, <%= f.govuk_collection_select :organisation_id,
answer_options, answer_options,
@ -43,10 +39,13 @@
:name, :name,
label: { text: "Which organisation manages this scheme", size: "m" }, label: { text: "Which organisation manages this scheme", size: "m" },
hint: { text: "Enter organisation name" }, hint: { text: "Enter organisation name" },
options: { disabled: [""], selected: selected_option(answer_options) },
"data-controller": %w[accessible-autocomplete conditional-filter] %> "data-controller": %w[accessible-autocomplete conditional-filter] %>
<% end %> <% end %>
<% if current_user.data_coordinator? %>
<%= f.hidden_field :organisation_id, value: current_user.organisation.id %>
<% end %>
<% 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,

2
app/views/schemes/primary_client_group.html.erb

@ -3,7 +3,7 @@
<% 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: "/schemes/#{@scheme.id}/details",
) %> ) %>
<% end %> <% end %>

3
db/seeds.rb

@ -71,7 +71,6 @@ unless Rails.env.test?
if Rails.env.development? && Scheme.count.zero? if Rails.env.development? && Scheme.count.zero?
scheme1 = Scheme.create!( scheme1 = Scheme.create!(
code: "S878",
service_name: "Beulahside Care", service_name: "Beulahside Care",
sensitive: 0, sensitive: 0,
registered_under_care_act: 0, registered_under_care_act: 0,
@ -86,7 +85,6 @@ unless Rails.env.test?
) )
scheme2 = Scheme.create!( scheme2 = Scheme.create!(
code: "S312",
service_name: "Abdullahview Point", service_name: "Abdullahview Point",
sensitive: 0, sensitive: 0,
registered_under_care_act: 1, registered_under_care_act: 1,
@ -101,7 +99,6 @@ unless Rails.env.test?
) )
Scheme.create!( Scheme.create!(
code: "7XYZ",
service_name: "Caspermouth Center", service_name: "Caspermouth Center",
sensitive: 1, sensitive: 1,
registered_under_care_act: 1, registered_under_care_act: 1,

Loading…
Cancel
Save