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 # A modest javascript framework for the html you already have
gem "stimulus-rails" gem "stimulus-rails"
# Spreadsheet parsing # Spreadsheet parsing
gem "securerandom"
gem "roo" gem "roo"
# Json Schema # Json Schema
gem "json-schema" gem "json-schema"

1
Gemfile.lock

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

38
app/controllers/schemes_controller.rb

@ -4,6 +4,7 @@ class SchemesController < ApplicationController
before_action :authenticate_user! before_action :authenticate_user!
before_action :find_resource, except: %i[index] before_action :find_resource, except: %i[index]
before_action :find_by_scheme_id, only: %i[edit]
before_action :authenticate_scope! before_action :authenticate_scope!
def index def index
@ -30,15 +31,48 @@ class SchemesController < ApplicationController
end end
def create 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 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 def search_term
params["search"] params["search"]
end end
def find_by_scheme_id
@scheme = Scheme.find_by(id: params[:scheme_id])
end
def find_resource def find_resource
@scheme = Scheme.find_by(id: params[:id]) @scheme = Scheme.find_by(id: params[:id])
end 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." } %> 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, <%= f.govuk_check_box :sensitive,
1,
0, 0,
1,
multiple: false, multiple: false,
label: { text: "This scheme contains confidential information" } %> label: { text: "This scheme contains confidential information" } %>
@ -45,23 +45,23 @@
"data-controller": %w[accessible-autocomplete conditional-filter] %> "data-controller": %w[accessible-autocomplete conditional-filter] %>
<% end %> <% 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, <%= f.govuk_collection_radio_buttons :scheme_type,
scheme_types, 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_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, <%= f.govuk_collection_radio_buttons :registered_under_care_act,
care_act_types, care_acts_selection,
:id, :id,
:name, :name,
legend: { text: "Is this scheme registered under the Care Standards Act 2000?", size: "m" } %> 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, width: 2,
label: { text: "Total number of units", size: "m" }, 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." } %> 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 end
resources :schemes do resources :schemes do
patch "primary", to: "schemes#edit"
member do member do
get "locations", to: "schemes#locations" get "locations", to: "schemes#locations"
end end

Loading…
Cancel
Save