diff --git a/app/controllers/schemes_controller.rb b/app/controllers/schemes_controller.rb
index 9c571d765..616659935 100644
--- a/app/controllers/schemes_controller.rb
+++ b/app/controllers/schemes_controller.rb
@@ -15,6 +15,7 @@ class SchemesController < ApplicationController
end
def show
+ @scheme = Scheme.find_by(id: params[:id])
end
private
diff --git a/app/helpers/tab_nav_helper.rb b/app/helpers/tab_nav_helper.rb
index c718ebb83..bb163ddd8 100644
--- a/app/helpers/tab_nav_helper.rb
+++ b/app/helpers/tab_nav_helper.rb
@@ -8,7 +8,7 @@ module TabNavHelper
def scheme_cell(scheme)
link_text = scheme.service_name.presence
- [govuk_link_to(link_text, scheme), "Scheme #{scheme.primary_client_group}"].join("\n")
+ [govuk_link_to(link_text, scheme), "Scheme #{scheme.primary_client_group_display}"].join("\n")
end
def org_cell(user)
diff --git a/app/models/scheme.rb b/app/models/scheme.rb
index 7f6ec337e..7d226689c 100644
--- a/app/models/scheme.rb
+++ b/app/models/scheme.rb
@@ -4,4 +4,95 @@ class Scheme < ApplicationRecord
scope :search_by_code, ->(code) { where("code ILIKE ?", "%#{code}%") }
scope :search_by_service_name, ->(name) { where("service_name ILIKE ?", "%#{name}%") }
scope :search_by, ->(param) { search_by_code(param).or(search_by_service_name(param)) }
+
+ SCHEME_TYPE = {
+ 0 => "Missings",
+ 4 => "Foyer",
+ 5 => "D, L, Airect Access Hostel",
+ 6 => "Other Supported Housing",
+ 7 => "Housing for older people",
+ }.freeze
+
+ PRIMARY_CLIENT_GROUP = {
+ "O" => "Homeless families with support needs",
+ "H" => "Offenders & people at risk of offending",
+ "M" => "Older people with support needs",
+ "L" => "People at risk of domestic violence",
+ "A" => "People with a physical or sensory disability",
+ "G" => "People with alcohol problems",
+ "F" => "People with drug problems",
+ "B" => "People with HIV or AIDS",
+ "D" => "People with learning disabilities",
+ "E" => "People with mental health problems",
+ "I" => "Refugees (permanent)",
+ "S" => "Rough sleepers",
+ "N" => "Single homeless people with support needs",
+ "R" => "Teenage parents",
+ "Q" => "Young people at risk",
+ "P" => "Young people leaving care",
+ "X" => "Missing",
+ }.freeze
+
+ SUPPORT_TYPE = {
+ 0 => "Missing",
+ 1 => "Resettlement Support",
+ 2 => "Low levels of support",
+ 3 => "Medium levels of support",
+ 4 => "High levels of care and support",
+ 5 => "Nursing care services to a care home",
+ 6 => "Floating Support",
+ }.freeze
+
+ INTENDED_STAY = {
+ "M" =>"Medium stay",
+ "P" =>"Permanent",
+ "S" =>"Short Stay",
+ "V" =>"Very short stay",
+ "X" =>"Missing",
+ }.freeze
+
+ REGISTERED_UNDER_CARE_ACT = {
+ 0 => "Yes – part registered as a care home",
+ 1 => "No",
+ }.freeze
+
+ def display_attributes
+ [
+ { name: "Service code", value: code },
+ { name: "Name", value: service_name },
+ { name: "Confidential information", value: sensitive },
+ { name: "Managing agent", value: organisation.name },
+ { name: "Type of service", value: scheme_type_display },
+ { name: "Registered under Care Standards Act 2000", value: registered_under_care_act_display },
+ { name: "Total number of units", value: total_units },
+ { name: "Primary client group", value: primary_client_group_display },
+ { name: "Secondary client group", value: primary_client_group_display },
+ { name: "Level of support given", value: support_type_display },
+ { name: "Intended length of stay", value: intended_stay_display },
+ ]
+ end
+
+ def scheme_type_display
+ SCHEME_TYPE[scheme_type]
+ end
+
+ def registered_under_care_act_display
+ REGISTERED_UNDER_CARE_ACT[registered_under_care_act]
+ end
+
+ def primary_client_group_display
+ PRIMARY_CLIENT_GROUP[primary_client_group]
+ end
+
+ def secondary_client_group_display
+ PRIMARY_CLIENT_GROUP[secondary_client_group]
+ end
+
+ def support_type_display
+ SUPPORT_TYPE[support_type]
+ end
+
+ def intended_stay_display
+ INTENDED_STAY[intended_stay]
+ end
end
diff --git a/app/views/schemes/show.html.erb b/app/views/schemes/show.html.erb
index e69de29bb..694b61bc7 100644
--- a/app/views/schemes/show.html.erb
+++ b/app/views/schemes/show.html.erb
@@ -0,0 +1,18 @@
+
+
+
+ <%= content_for("Test") %>
+
+
+ Scheme Result
+
+ <%= govuk_summary_list do |summary_list| %>
+ <% @scheme.display_attributes.each do |attr| %>
+ <%= summary_list.row do |row| %>
+ <% row.key { attr[:name].to_s.humanize } %>
+ <% row.value { details_html(attr) } %>
+ <% end %>
+ <% end %>
+ <% end %>
+
+
diff --git a/config/routes.rb b/config/routes.rb
index 51f9a8a36..3e4492127 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -35,7 +35,7 @@ Rails.application.routes.draw do
get "edit/password", to: "users#edit_password"
end
- resources :schemes, path: "/supported-housing", only: [:index, :show]
+ resources :schemes, path: "/supported-housing", only: %i[index show]
resources :users do
member do
diff --git a/db/migrate/20220613094847_add_missing_attributes_to_scheme.rb b/db/migrate/20220613094847_add_missing_attributes_to_scheme.rb
index 15c08a8cc..ab2f9718e 100644
--- a/db/migrate/20220613094847_add_missing_attributes_to_scheme.rb
+++ b/db/migrate/20220613094847_add_missing_attributes_to_scheme.rb
@@ -1,12 +1,14 @@
class AddMissingAttributesToScheme < ActiveRecord::Migration[7.0]
def change
- add_column :schemes, :primary_client_group, :string
- add_column :schemes, :secondary_client_group, :string
- add_column :schemes, :sensitive, :boolean
- add_column :schemes, :total_units, :boolean
- add_column :schemes, :scheme_type, :integer
- add_column :schemes, :registered_under_care_act, :boolean
- add_column :schemes, :support_type, :integer
- add_column :schemes, :intended_stay, :string
+ change_table :schemes, bulk: true do |t|
+ t.string :primary_client_group
+ t.string :secondary_client_group
+ t.boolean :sensitive
+ t.boolean :total_units
+ t.integer :scheme_type
+ t.integer :registered_under_care_act
+ t.integer :support_type
+ t.string :intended_stay
+ end
end
end
diff --git a/db/schema.rb b/db/schema.rb
index 0516323b3..42b120a8e 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -288,7 +288,7 @@ ActiveRecord::Schema[7.0].define(version: 2022_06_13_094847) do
t.boolean "sensitive"
t.boolean "total_units"
t.integer "scheme_type"
- t.boolean "registered_under_care_act"
+ t.integer "registered_under_care_act"
t.integer "support_type"
t.string "intended_stay"
t.index ["organisation_id"], name: "index_schemes_on_organisation_id"
diff --git a/db/seeds.rb b/db/seeds.rb
index fdc09b37c..992de72ae 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -74,7 +74,7 @@ unless Rails.env.test?
code: "S878",
service_name: "Beulahside Care",
organisation: org,
- primary_client_group: "Some Improtant Group",
+ primary_client_group: "G",
created_at: Time.zone.now,
)
@@ -82,7 +82,7 @@ unless Rails.env.test?
code: "S312",
service_name: "Abdullahview Point",
organisation: org,
- primary_client_group: "Some Improtant Group",
+ primary_client_group: "I",
created_at: Time.zone.now,
)
@@ -90,7 +90,7 @@ unless Rails.env.test?
code: "7XYZ",
service_name: "Caspermouth Center",
organisation: dummy_org,
- primary_client_group: "Some Improtant Group",
+ primary_client_group: "G",
created_at: Time.zone.now,
)
end
diff --git a/spec/factories/scheme.rb b/spec/factories/scheme.rb
index 42c6d243f..de1b660c7 100644
--- a/spec/factories/scheme.rb
+++ b/spec/factories/scheme.rb
@@ -2,7 +2,14 @@ FactoryBot.define do
factory :scheme do
code { Faker::Name.initials(number: 4) }
service_name { Faker::Name.name_with_middle }
- primary_client_group { Faker::Name.name_with_middle }
+ sensitive { Faker::Boolean.boolean }
+ registered_under_care_act { Faker::Boolean.boolean }
+ support_type { Faker::Number.within(range: 0..6) }
+ scheme_type { %i[0 4 5 6 7].sample }
+ total_units { Faker::Number.number(digits: 2) }
+ intended_stay { %w[M P S V X].sample }
+ primary_client_group { %w[O H M L A G F B D E I S N R Q P X].sample }
+ secondary_client_group { %w[O H M L A G F B D E I S N R Q P X].sample }
organisation
created_at { Time.zone.now }
end
diff --git a/spec/features/schemes_spec.rb b/spec/features/schemes_spec.rb
index 2a4d7ab8e..56734667e 100644
--- a/spec/features/schemes_spec.rb
+++ b/spec/features/schemes_spec.rb
@@ -100,8 +100,8 @@ RSpec.describe "Supported housing scheme Features" do
end
context "when I visit supported housing page" do
- before do
- visit("supported-housing")
+ before do
+ visit("supported-housing")
end
it "shows list of links to schemes" do
diff --git a/spec/requests/schemes_controller_spec.rb b/spec/requests/schemes_controller_spec.rb
index f69b703b9..d5096c33d 100644
--- a/spec/requests/schemes_controller_spec.rb
+++ b/spec/requests/schemes_controller_spec.rb
@@ -161,7 +161,7 @@ RSpec.describe SchemesController, type: :request do
end
end
- context "#show" do
+ describe "#show" do
let(:specific_scheme) { schemes.first }
context "when not signed in" do