Browse Source

Add questions to page, wip

pull/2971/head
Manny Dinssa 2 months ago
parent
commit
4dd2c7e134
  1. 3
      app/frontend/controllers/index.js
  2. 14
      app/frontend/controllers/organisations_controller.js
  3. 9
      app/models/organisation.rb
  4. 31
      app/views/organisations/new.html.erb
  5. 7
      db/migrate/20250227085622_add_new_question_fields_to_organisation.rb
  6. 24
      db/schema.rb

3
app/frontend/controllers/index.js

@ -19,6 +19,8 @@ import FilterLayoutController from './filter_layout_controller.js'
import TabsController from './tabs_controller.js' import TabsController from './tabs_controller.js'
import OrganisationsController from './organisations_controller.js'
application.register('accessible-autocomplete', AccessibleAutocompleteController) application.register('accessible-autocomplete', AccessibleAutocompleteController)
application.register('conditional-filter', ConditionalFilterController) application.register('conditional-filter', ConditionalFilterController)
application.register('conditional-question', ConditionalQuestionController) application.register('conditional-question', ConditionalQuestionController)
@ -27,3 +29,4 @@ application.register('numeric-question', NumericQuestionController)
application.register('filter-layout', FilterLayoutController) application.register('filter-layout', FilterLayoutController)
application.register('search', SearchController) application.register('search', SearchController)
application.register('tabs', TabsController) application.register('tabs', TabsController)
application.register('organisations', OrganisationsController)

14
app/frontend/controllers/organisations_controller.js

@ -0,0 +1,14 @@
import { Controller } from '@hotwired/stimulus'
export default class extends Controller {
static targets = ["groupSelect"]
connect() {
this.toggleGroupSelect()
}
toggleGroupSelect() {
const groupMemberYes = this.element.querySelector('input[name="organisation[group_member]"]:checked')?.value === 'true'
this.groupSelectTarget.style.display = groupMemberYes ? 'block' : 'none'
}
}

9
app/models/organisation.rb

@ -53,7 +53,16 @@ class Organisation < ApplicationRecord
PRP: 2, PRP: 2,
}.freeze }.freeze
PROFIT_STATUS = {
non_profit: 1,
profit: 2,
local_authority: 3,
}.freeze
enum :provider_type, PROVIDER_TYPE enum :provider_type, PROVIDER_TYPE
enum :profit_status, PROFIT_STATUS
attribute :group_member, :boolean
alias_method :la?, :LA? alias_method :la?, :LA?

31
app/views/organisations/new.html.erb

@ -56,6 +56,37 @@
:name, :name,
legend: { text: "Does the organisation hold its own stock?", size: "m" } %> legend: { text: "Does the organisation hold its own stock?", size: "m" } %>
<%= f.govuk_collection_radio_buttons :group_member,
[OpenStruct.new(id: true, name: "Yes"), OpenStruct.new(id: false, name: "No")],
:id,
:name,
legend: { text: "Is this organisation part of a housing provider group structure?", size: "m" },
"data-action": "change->group-member#toggleGroupSelect" %>
<% group_organisation_options = Organisation.visible.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<div data-group-member-target="groupSelect">
<%= f.govuk_collection_select :group,
group_organisation_options,
:id,
:name,
label: { text: "Search for an organisation that is part of the same group as this organisation", size: "m" },
"data-controller": %w[accessible-autocomplete conditional-filter organisations] %>
</div>
<% profit_options = [
OpenStruct.new(id: 1, name: "Non-profit"),
OpenStruct.new(id: 2, name: "Profit"),
OpenStruct.new(id: 3, name: "Local authority")
] %>
<%= f.govuk_collection_select :profit_status,
profit_options,
:id,
:name,
label: { text: "Is the organisation for-profit?", size: "m" },
options: { disabled: [""], selected: @organisation.profit_status || "" } %>
<%= f.govuk_check_boxes_fieldset :rent_periods, <%= f.govuk_check_boxes_fieldset :rent_periods,
legend: { text: "What are the rent periods for the organisation?" } do %> legend: { text: "What are the rent periods for the organisation?" } do %>
<% @rent_periods.map do |key, period| %> <% @rent_periods.map do |key, period| %>

7
db/migrate/20250227085622_add_new_question_fields_to_organisation.rb

@ -0,0 +1,7 @@
class AddNewQuestionFieldsToOrganisation < ActiveRecord::Migration[7.2]
def change
add_column :organisations, :profit_status, :integer
add_column :organisations, :group_member, :boolean
add_column :organisations, :group, :integer
end
end

24
db/schema.rb

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.2].define(version: 2025_01_10_150609) do ActiveRecord::Schema[7.2].define(version: 2025_02_27_085622) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -84,7 +84,7 @@ ActiveRecord::Schema[7.2].define(version: 2025_01_10_150609) do
t.datetime "last_accessed" t.datetime "last_accessed"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.check_constraint "log_type::text = ANY (ARRAY['lettings'::character varying, 'sales'::character varying]::text[])", name: "log_type_check" t.check_constraint "log_type::text = ANY (ARRAY['lettings'::character varying::text, 'sales'::character varying::text])", name: "log_type_check"
t.check_constraint "year >= 2000 AND year <= 2099", name: "year_check" t.check_constraint "year >= 2000 AND year <= 2099", name: "year_check"
end end
@ -245,14 +245,14 @@ ActiveRecord::Schema[7.2].define(version: 2025_01_10_150609) do
t.integer "hb" t.integer "hb"
t.integer "hbrentshortfall" t.integer "hbrentshortfall"
t.integer "property_relet" t.integer "property_relet"
t.datetime "mrcdate", precision: nil t.datetime "mrcdate"
t.integer "incref" t.integer "incref"
t.datetime "startdate", precision: nil t.datetime "startdate"
t.integer "armedforces" t.integer "armedforces"
t.integer "first_time_property_let_as_social_housing" t.integer "first_time_property_let_as_social_housing"
t.integer "unitletas" t.integer "unitletas"
t.integer "builtype" t.integer "builtype"
t.datetime "voiddate", precision: nil t.datetime "voiddate"
t.bigint "owning_organisation_id" t.bigint "owning_organisation_id"
t.bigint "managing_organisation_id" t.bigint "managing_organisation_id"
t.integer "renttype" t.integer "renttype"
@ -373,6 +373,8 @@ ActiveRecord::Schema[7.2].define(version: 2025_01_10_150609) do
t.integer "partner_under_16_value_check" t.integer "partner_under_16_value_check"
t.integer "multiple_partners_value_check" t.integer "multiple_partners_value_check"
t.bigint "created_by_id" t.bigint "created_by_id"
t.boolean "manual_address_entry_selected", default: false
t.integer "referral_type"
t.index ["assigned_to_id"], name: "index_lettings_logs_on_assigned_to_id" t.index ["assigned_to_id"], name: "index_lettings_logs_on_assigned_to_id"
t.index ["bulk_upload_id"], name: "index_lettings_logs_on_bulk_upload_id" t.index ["bulk_upload_id"], name: "index_lettings_logs_on_bulk_upload_id"
t.index ["created_by_id"], name: "index_lettings_logs_on_created_by_id" t.index ["created_by_id"], name: "index_lettings_logs_on_created_by_id"
@ -546,6 +548,9 @@ ActiveRecord::Schema[7.2].define(version: 2025_01_10_150609) do
t.datetime "available_from" t.datetime "available_from"
t.datetime "discarded_at" t.datetime "discarded_at"
t.datetime "schemes_deduplicated_at" t.datetime "schemes_deduplicated_at"
t.integer "profit_status"
t.boolean "group_member"
t.integer "group"
t.index ["absorbing_organisation_id"], name: "index_organisations_on_absorbing_organisation_id" t.index ["absorbing_organisation_id"], name: "index_organisations_on_absorbing_organisation_id"
t.index ["name"], name: "index_organisations_on_name", unique: true t.index ["name"], name: "index_organisations_on_name", unique: true
t.index ["old_visible_id"], name: "index_organisations_on_old_visible_id", unique: true t.index ["old_visible_id"], name: "index_organisations_on_old_visible_id", unique: true
@ -762,13 +767,14 @@ ActiveRecord::Schema[7.2].define(version: 2025_01_10_150609) do
t.integer "partner_under_16_value_check" t.integer "partner_under_16_value_check"
t.integer "multiple_partners_value_check" t.integer "multiple_partners_value_check"
t.bigint "created_by_id" t.bigint "created_by_id"
t.integer "has_management_fee"
t.decimal "management_fee", precision: 10, scale: 2
t.integer "firststair" t.integer "firststair"
t.integer "numstair" t.integer "numstair"
t.decimal "mrentprestaircasing", precision: 10, scale: 2 t.decimal "mrentprestaircasing", precision: 10, scale: 2
t.datetime "lasttransaction" t.datetime "lasttransaction"
t.datetime "initialpurchase" t.datetime "initialpurchase"
t.integer "has_management_fee"
t.decimal "management_fee", precision: 10, scale: 2
t.boolean "manual_address_entry_selected", default: false
t.index ["assigned_to_id"], name: "index_sales_logs_on_assigned_to_id" t.index ["assigned_to_id"], name: "index_sales_logs_on_assigned_to_id"
t.index ["bulk_upload_id"], name: "index_sales_logs_on_bulk_upload_id" t.index ["bulk_upload_id"], name: "index_sales_logs_on_bulk_upload_id"
t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id" t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id"
@ -822,8 +828,8 @@ ActiveRecord::Schema[7.2].define(version: 2025_01_10_150609) do
t.string "name" t.string "name"
t.bigint "organisation_id" t.bigint "organisation_id"
t.integer "sign_in_count", default: 0, null: false t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at", precision: nil t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at", precision: nil t.datetime "last_sign_in_at"
t.string "current_sign_in_ip" t.string "current_sign_in_ip"
t.string "last_sign_in_ip" t.string "last_sign_in_ip"
t.integer "role" t.integer "role"

Loading…
Cancel
Save