Browse Source

Selecting the profit status dependent on the provider type

pull/2971/head
Manny Dinssa 2 months ago
parent
commit
8c5a28a514
  1. 2
      app/controllers/organisations_controller.rb
  2. 16
      app/frontend/controllers/organisations_controller.js
  3. 22
      app/helpers/organisations_helper.rb
  4. 6
      app/models/organisation.rb

2
app/controllers/organisations_controller.rb

@ -341,7 +341,7 @@ private
end end
def org_params def org_params
params.require(:organisation).permit(:name, :address_line1, :address_line2, :postcode, :phone, :holds_own_stock, :provider_type, :housing_registration_no, :active) params.require(:organisation).permit(:name, :address_line1, :address_line2, :postcode, :phone, :holds_own_stock, :provider_type, :housing_registration_no, :active, :profit_status, :group_member, :group)
end end
def rent_period_params def rent_period_params

16
app/frontend/controllers/organisations_controller.js

@ -1,16 +1,26 @@
import { Controller } from '@hotwired/stimulus' import { Controller } from '@hotwired/stimulus'
const profitStatusSelect = document.getElementById('organisation-profit-status-field');
const localAuthorityOption = profitStatusSelect.querySelector('option[value="local_authority"]');
const nonProfitOption = profitStatusSelect.querySelector('option[value="non_profit"]');
const profitOption = profitStatusSelect.querySelector('option[value="profit"]');
export default class extends Controller { export default class extends Controller {
updateProfitStatusOptions(event) { updateProfitStatusOptions(event) {
const providerType = event.target.value; const providerType = event.target.value;
const profitStatusSelect = document.getElementById('organisation-profit-status-field');
if (profitStatusSelect) { if (profitStatusSelect) {
profitStatusSelect.disabled = false; profitStatusSelect.disabled = false;
localAuthorityOption.hidden = false;
nonProfitOption.hidden = false;
profitOption.hidden = false;
if (providerType === "LA") { if (providerType === "LA") {
profitStatusSelect.value = "3"; profitStatusSelect.value = "local_authority";
profitStatusSelect.disabled = true; nonProfitOption.hidden = true;
profitOption.hidden = true;
} else if (providerType === "PRP") {
profitStatusSelect.value = "";
localAuthorityOption.hidden = true;
} }
} }
} }

22
app/helpers/organisations_helper.rb

@ -24,7 +24,7 @@ module OrganisationsHelper
attributes << { name: "Group number", value: organisation.group, editable: current_user.support? } attributes << { name: "Group number", value: organisation.group, editable: current_user.support? }
end end
attributes << { name: "For profit", value: organisation.profit_status, editable: current_user.support? } attributes << { name: "For profit", value: organisation.display_profit_status, editable: current_user.support? }
attributes << { name: "Rent periods", value: organisation.rent_period_labels, editable: true, format: :bullet } attributes << { name: "Rent periods", value: organisation.rent_period_labels, editable: true, format: :bullet }
attributes << { name: "Data Sharing Agreement" } attributes << { name: "Data Sharing Agreement" }
attributes << { name: "Status", value: status_tag(organisation.status) + delete_organisation_text(organisation), editable: false } attributes << { name: "Status", value: status_tag(organisation.status) + delete_organisation_text(organisation), editable: false }
@ -79,12 +79,24 @@ module OrganisationsHelper
end end
def group_organisation_options def group_organisation_options
null_option = [OpenStruct.new(id: "", name: "Select an option")] null_option = [OpenStruct.new(id: "", name: "Select an option", group: nil)]
organisations = Organisation.visible.map { |org| OpenStruct.new(id: org.id, name: org.name) } organisations = Organisation.visible.map { |org| OpenStruct.new(id: org.id, name: org.name, group: org.group) }
null_option + organisations null_option + organisations
end end
def profit_status_options def profit_status_options(provider_type = nil)
Organisation::PROFIT_STATUS.map { |key, value| OpenStruct.new(id: value, name: key.to_s.humanize) } null_option = [OpenStruct.new(id: "", name: "Select an option")]
profit_statuses = Organisation::PROFIT_STATUS.map do |key, _value|
OpenStruct.new(id: key, name: Organisation::DISPLAY_PROFIT_STATUS[key])
end
case provider_type
when "LA"
profit_statuses.select! { |option| option.id == :local_authority }
when "PRP"
profit_statuses.reject! { |option| option.id == :local_authority }
end
null_option + profit_statuses
end end
end end

6
app/models/organisation.rb

@ -144,6 +144,12 @@ class Organisation < ApplicationRecord
DISPLAY_PROVIDER_TYPE[provider_type.to_sym] DISPLAY_PROVIDER_TYPE[provider_type.to_sym]
end end
DISPLAY_PROFIT_STATUS = { "non_profit": "Non-profit", "profit": "Profit", "local_authority": "Local Authority" }.freeze
def display_profit_status
DISPLAY_PROFIT_STATUS.fetch(profit_status&.to_sym, "")
end
def has_managing_agents? def has_managing_agents?
managing_agents.count.positive? managing_agents.count.positive?
end end

Loading…
Cancel
Save