Browse Source

converting int to strings in scheme model

pull/656/head
JG 3 years ago
parent
commit
d51711c74f
  1. 1
      app/controllers/schemes_controller.rb
  2. 2
      app/helpers/tab_nav_helper.rb
  3. 91
      app/models/scheme.rb
  4. 18
      app/views/schemes/show.html.erb
  5. 2
      config/routes.rb
  6. 18
      db/migrate/20220613094847_add_missing_attributes_to_scheme.rb
  7. 2
      db/schema.rb
  8. 6
      db/seeds.rb
  9. 9
      spec/factories/scheme.rb
  10. 4
      spec/features/schemes_spec.rb
  11. 2
      spec/requests/schemes_controller_spec.rb

1
app/controllers/schemes_controller.rb

@ -15,6 +15,7 @@ class SchemesController < ApplicationController
end
def show
@scheme = Scheme.find_by(id: params[:id])
end
private

2
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), "<span class=\"govuk-visually-hidden\">Scheme </span><span class=\"govuk-!-font-weight-regular app-!-colour-muted\">#{scheme.primary_client_group}</span>"].join("\n")
[govuk_link_to(link_text, scheme), "<span class=\"govuk-visually-hidden\">Scheme </span><span class=\"govuk-!-font-weight-regular app-!-colour-muted\">#{scheme.primary_client_group_display}</span>"].join("\n")
end
def org_cell(user)

91
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 &amp; 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

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

@ -0,0 +1,18 @@
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<h1 class="govuk-heading-l">
<%= content_for("Test") %>
</h1>
<h2 class="govuk-heading-m">
Scheme Result
</h2>
<%= 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 %>
</div>
</div>

2
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

18
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

2
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"

6
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

9
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

4
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

2
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

Loading…
Cancel
Save