Browse Source

feat: only show data coordinators their org and stock owners in scheme owner select, update location policy

pull/1958/head
natdeanlewissoftwire 3 years ago
parent
commit
915b2adaaf
  1. 12
      app/policies/location_policy.rb
  2. 5
      app/views/schemes/details.html.erb
  3. 5
      app/views/schemes/edit_name.html.erb
  4. 10
      app/views/schemes/new.html.erb

12
app/policies/location_policy.rb

@ -16,14 +16,14 @@ class LocationPolicy
if location == Location
user.data_coordinator?
else
user.data_coordinator? && user.organisation == scheme&.owning_organisation
user.data_coordinator? && scheme_owned_by_user_org_or_stock_owner
end
end
def update?
return true if user.support?
user.data_coordinator? && scheme&.owning_organisation == user.organisation
user.data_coordinator? && scheme_owned_by_user_org_or_stock_owner
end
%w[
@ -51,7 +51,7 @@ class LocationPolicy
define_method method_name do
return true if user.support?
user.data_coordinator? && scheme&.owning_organisation == user.organisation
user.data_coordinator? && scheme_owned_by_user_org_or_stock_owner
end
end
@ -62,7 +62,7 @@ class LocationPolicy
define_method method_name do
return true if user.support?
user.organisation.parent_organisations.exists?(scheme&.owning_organisation_id) || scheme&.owning_organisation == user.organisation
scheme_owned_by_user_org_or_stock_owner
end
end
@ -71,4 +71,8 @@ private
def scheme
location.scheme
end
def scheme_owned_by_user_org_or_stock_owner
scheme&.owning_organisation == user.organisation || user.organisation.stock_owners.exists?(scheme&.owning_organisation_id)
end
end

5
app/views/schemes/details.html.erb

@ -48,7 +48,10 @@
:description,
legend: { text: "Is this scheme registered under the Care Standards Act 2000?", size: "m" } %>
<% organisations = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% all_orgs = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% user_org = [OpenStruct.new(id: current_user.organisation_id, name: current_user.organisation.name)] %>
<% stock_owners = current_user.organisation.stock_owners.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% organisations = current_user.support? ? all_orgs : user_org + stock_owners %>
<% if current_user.data_coordinator? && current_user.organisation.stock_owners.nil? %>
<%= f.hidden_field :owning_organisation_id, value: current_user.organisation.id %>

5
app/views/schemes/edit_name.html.erb

@ -25,7 +25,10 @@
label: { text: "This scheme contains confidential information" } %>
<% end %>
<% organisations = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% all_orgs = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% user_org = [OpenStruct.new(id: current_user.organisation_id, name: current_user.organisation.name)] %>
<% stock_owners = current_user.organisation.stock_owners.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% organisations = current_user.support? ? all_orgs : user_org + stock_owners %>
<% if current_user.data_coordinator? && current_user.organisation.stock_owners.nil? %>
<%= f.hidden_field :owning_organisation_id, value: current_user.organisation.id %>

10
app/views/schemes/new.html.erb

@ -26,10 +26,6 @@
label: { text: "This scheme contains confidential information" } %>
<% end %>
<% null_option = [OpenStruct.new(id: "", name: "Select an option")] %>
<% organisations = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% answer_options = null_option + organisations %>
<% 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,
scheme_types_selection,
@ -48,6 +44,12 @@
:description,
legend: { text: "Is this scheme registered under the Care Standards Act 2000?", size: "m" } %>
<% null_option = [OpenStruct.new(id: "", name: "Select an option")] %>
<% all_orgs = Organisation.all.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% user_org = [OpenStruct.new(id: current_user.organisation_id, name: current_user.organisation.name)] %>
<% stock_owners = current_user.organisation.stock_owners.map { |org| OpenStruct.new(id: org.id, name: org.name) } %>
<% answer_options = current_user.support? ? null_option + all_orgs : null_option + user_org + stock_owners %>
<% if current_user.data_coordinator? && current_user.organisation.stock_owners.nil? %>
<%= f.hidden_field :owning_organisation_id, value: current_user.organisation.id %>
<% else %>

Loading…
Cancel
Save