Browse Source

views

pull/671/head
JG 3 years ago
parent
commit
68017ca077
  1. 2
      Gemfile
  2. 1
      Gemfile.lock
  3. 38
      app/controllers/schemes_controller.rb
  4. 14
      app/views/schemes/new.html.erb
  5. 32
      app/views/schemes/primary_client_group.html.erb
  6. 32
      app/views/schemes/secondary_client_group.html.erb
  7. 2
      config/routes.rb

2
Gemfile

@ -28,6 +28,8 @@ gem "notifications-ruby-client"
# A modest javascript framework for the html you already have
gem "stimulus-rails"
# Spreadsheet parsing
gem "securerandom"
gem "roo"
# Json Schema
gem "json-schema"

1
Gemfile.lock

@ -469,6 +469,7 @@ DEPENDENCIES
rubocop-govuk (= 4.3.0)
rubocop-performance
rubocop-rails
securerandom
selenium-webdriver
sentry-rails
sentry-ruby

38
app/controllers/schemes_controller.rb

@ -4,6 +4,7 @@ class SchemesController < ApplicationController
before_action :authenticate_user!
before_action :find_resource, except: %i[index]
before_action :find_by_scheme_id, only: %i[edit]
before_action :authenticate_scope!
def index
@ -30,15 +31,48 @@ class SchemesController < ApplicationController
end
def create
debugger
@scheme = Scheme.new(clean_params)
@scheme.save
redirect_to edit_scheme_path(id: @scheme.id)
end
def edit
if !params[:scheme]
@scheme = Scheme.find(params[:id])
render "schemes/primary_client_group", locals: { scheme: @scheme }
elsif params[:scheme][:primary_client_group]
required_params = params.require(:scheme).permit(:primary_client_group)
@scheme.update(required_params)
render "schemes/secondary_client_group", locals: { scheme: @scheme }
elsif params[:scheme][:secondary_client_group]
required_params = params.require(:scheme).permit(:secondaryy_client_group)
@scheme.update(required_params)
render "schemes/secondary_client_group", locals: { scheme: @scheme }
elsif params[:scheme][:support]
required_params = params.require(:scheme).permit(:secondaryy_client_group)
@scheme.update(required_params)
render "schemes/secondary_client_group", locals: { scheme: @scheme }
end
end
private
private
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).merge(code: code)
required_params[:sensitive] = required_params[:sensitive].to_i
required_params
end
def search_term
params["search"]
end
def find_by_scheme_id
@scheme = Scheme.find_by(id: params[:scheme_id])
end
def find_resource
@scheme = Scheme.find_by(id: params[:id])
end

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

@ -21,8 +21,8 @@
hint: { text: "This is how you’ll 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_box :sensitive,
1,
0,
1,
multiple: false,
label: { text: "This scheme contains confidential information" } %>
@ -45,23 +45,23 @@
"data-controller": %w[accessible-autocomplete conditional-filter] %>
<% end %>
<% scheme_types = Scheme.scheme_types.keys.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,
scheme_types,
scheme_types_selection,
:id,
:name,
legend: { text: "What is this type of scheme?", size: "m" } %>
<% care_act_types = Scheme.registered_under_care_acts.keys.map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %>
<% care_acts_selection = Scheme.registered_under_care_acts.keys.reverse.map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %>
<%= f.govuk_collection_radio_buttons :scheme_type,
care_act_types,
<%= f.govuk_collection_radio_buttons :registered_under_care_act,
care_acts_selection,
:id,
:name,
legend: { text: "Is this scheme registered under the Care Standards Act 2000?", size: "m" } %>
<%= f.govuk_number_field :service_name,
<%= f.govuk_number_field :total_units,
width: 2,
label: { text: "Total number of units", size: "m" },
hint: { text: "For example, a unit can be a bedroom in a shared house or flat, or a house with 4 bedrooms. Do not include bedrooms used for wardens, managers, volunteers or sleep-in staff." } %>

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

@ -0,0 +1,32 @@
<% content_for :before_content do %>
<%= govuk_back_link(
text: "Back",
href: :back,
) %>
<% end %>
<%= render partial: "organisations/headings", locals: { main: "What client group is this scheme intended for?", sub: @scheme.service_name } %>
<%= form_for(@scheme, method: :patch, url: scheme_primary_path(scheme_id: @scheme.id)) do |f| %>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<%= f.govuk_error_summary %>
<h1 class="govuk-heading-l">
<%= content_for(:title) %>
</h1>
<legend class="govuk-fieldset__legend">
</legend>
<% primary_client_group_selection = Scheme.primary_client_groups.keys.excluding("Missing").map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %>
<%= f.govuk_collection_radio_buttons :primary_client_group,
primary_client_group_selection,
:id,
:name,
legend: nil %>
<%= f.govuk_submit "Save and continue" %>
</div>
</div>
<% end %>

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

@ -0,0 +1,32 @@
<% content_for :before_content do %>
<%= govuk_back_link(
text: "Back",
href: :back,
) %>
<% end %>
<%= render partial: "organisations/headings", locals: { main: "Does this scheme provide for another client group?", sub: @scheme.service_name } %>
<%= form_for(@scheme, method: :patch, url: scheme_primary_path(scheme_id: @scheme.id)) do |f| %>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<%= f.govuk_error_summary %>
<h1 class="govuk-heading-l">
<%= content_for(:title) %>
</h1>
<legend class="govuk-fieldset__legend">
</legend>
<% primary_client_group_selection = Scheme.primary_client_groups.keys.excluding("Missing").map { |key, _| OpenStruct.new(id: key, name: key.to_s.humanize) } %>
<%= f.govuk_collection_radio_buttons :primary_client_group,
primary_client_group_selection,
:id,
:name,
legend: nil %>
<%= f.govuk_submit "Save and continue" %>
</div>
</div>
<% end %>

2
config/routes.rb

@ -36,6 +36,8 @@ Rails.application.routes.draw do
end
resources :schemes do
patch "primary", to: "schemes#edit"
member do
get "locations", to: "schemes#locations"
end

Loading…
Cancel
Save