Browse Source

feat: add conditional banner behaviour, back link and update logs titles

pull/954/head
natdeanlewissoftwire 3 years ago
parent
commit
a70985988c
  1. 47
      app/controllers/organisation_relationships_controller.rb
  2. 6
      app/views/logs/index.html.erb
  3. 15
      app/views/organisation_relationships/add_housing_provider.html.erb
  4. 27
      app/views/organisation_relationships/housing_providers.html.erb
  5. 2
      config/routes.rb

47
app/controllers/organisation_relationships_controller.rb

@ -8,9 +8,11 @@ class OrganisationRelationshipsController < ApplicationController
def housing_providers def housing_providers
housing_providers = organisation.housing_providers housing_providers = organisation.housing_providers
unpaginated_filtered_housing_providers = filtered_collection(housing_providers, search_term) unpaginated_filtered_housing_providers = filtered_collection(housing_providers, search_term)
organisations = Organisation.all
respond_to do |format| respond_to do |format|
format.html do format.html do
@pagy, @housing_providers = pagy(unpaginated_filtered_housing_providers) @pagy, @housing_providers = pagy(unpaginated_filtered_housing_providers)
@organisations = organisations
@searched = search_term.presence @searched = search_term.presence
@total_count = housing_providers.size @total_count = housing_providers.size
render "organisation_relationships/housing_providers", layout: "application" render "organisation_relationships/housing_providers", layout: "application"
@ -19,24 +21,46 @@ class OrganisationRelationshipsController < ApplicationController
end end
def add_housing_provider def add_housing_provider
organisations = Organisation.all @organisations = Organisation.where.not(id: @organisation.id).pluck(:id, :name)
respond_to do |format| respond_to do |format|
format.html do format.html do
@organisations = organisations
render "organisation_relationships/add_housing_provider", layout: "application" render "organisation_relationships/add_housing_provider", layout: "application"
end end
end end
end end
def create def create_housing_provider
@resource = OrganisationRelationship.new create(0)
if params["related_organisation_id"] == nil end
@resource.errors.add :housing_providers, "Select a housing provider"
def create_managing_agent
create(1)
end
def create(relationship_type)
if related_organisation_id.empty?
@organisation.errors.add :related_organisation_id, "You must choose a housing provider"
@organisations = Organisation.where.not(id: @organisation.id).pluck(:id, :name)
render 'organisation_relationships/add_housing_provider'
return return
end end
@resource = OrganisationRelationship.new(child_organisation_id: @organisation.id, parent_organisation_id: related_organisation_params, relationship_type: 0) case relationship_type
@resource.save! when 0
redirect_to housing_providers_organisation_path if OrganisationRelationship.exists?(child_organisation_id: @organisation.id, parent_organisation_id: related_organisation_id, relationship_type: 0)
@organisation.errors.add :related_organisation_id, "You have already added this housing provider"
@organisations = Organisation.where.not(id: @organisation.id).pluck(:id, :name)
render 'organisation_relationships/add_housing_provider'
else
@resource = OrganisationRelationship.new(child_organisation_id: @organisation.id, parent_organisation_id: related_organisation_id, relationship_type: 0)
@resource.save!
redirect_to housing_providers_organisation_path(related_organisation_id:)
end
when 1
@resource = OrganisationRelationship.new(child_organisation_id: related_organisation_id, parent_organisation_id: @organisation.id, relationship_type: 1)
@resource.save!
redirect_to managing_agents_organisation_path
end
end end
private private
@ -45,8 +69,9 @@ private
@organisation ||= Organisation.find(params[:id]) @organisation ||= Organisation.find(params[:id])
end end
def related_organisation_params def related_organisation_id
params.require(:related_organisation_id) params.require(:organisation).permit(:related_organisation_id)
params["organisation"]["related_organisation_id"]
end end
def search_term def search_term

6
app/views/logs/index.html.erb

@ -3,7 +3,11 @@
<% content_for :title, title %> <% content_for :title, title %>
<%= render partial: "organisations/headings", locals: current_user.support? ? { main: "Logs", sub: nil } : { main: "Logs", sub: current_user.organisation.name } %> <% if current_page?(controller: 'lettings_logs', action: 'index') %>
<%= render partial: "organisations/headings", locals: current_user.support? ? { main: "Lettings logs", sub: nil } : { main: "Lettings logs", sub: current_user.organisation.name } %>
<% elsif current_page?(controller: 'sales_logs', action: 'index') %>
<%= render partial: "organisations/headings", locals: current_user.support? ? { main: "Sales logs", sub: nil } : { main: "Sales logs", sub: current_user.organisation.name } %>
<% end %>
<div class="app-filter-layout" data-controller="filter-layout"> <div class="app-filter-layout" data-controller="filter-layout">
<div class="govuk-button-group app-filter-toggle"> <div class="govuk-button-group app-filter-toggle">

15
app/views/organisation_relationships/add_housing_provider.html.erb

@ -1,21 +1,24 @@
<%= form_with model: @organisation, url: housing_providers_organisation_path, method: "post", local: true do |f| %> <%= form_with model: @organisation, url: housing_providers_organisation_path, method: "post", local: true do |f| %>
<%= f.govuk_error_summary %>
<% if current_user.support? %> <% if current_user.support? %>
<%= render partial: "organisations/headings", locals: { main: @organisation.name, sub: nil } %> <%= render partial: "organisations/headings", locals: { main: @organisation.name, sub: nil } %>
<%= render SubNavigationComponent.new(items: secondary_items(request.path, @organisation.id)) %> <%= render SubNavigationComponent.new(items: secondary_items(request.path, @organisation.id)) %>
<h2 class="govuk-visually-hidden">Add Housing Provider</h2> <h2 class="govuk-visually-hidden">Add Housing Provider</h2>
<% end %> <% end %>
<% answer_options = { "" => "Select an option" } %>
<% @organisations.each do |organisation| %>
<% answer_options[organisation.id] = organisation.name unless organisation.id == @organisation.id %>
<% end %>
<% if current_user.support? %> <% if current_user.support? %>
<%= govuk_back_link(href: :back) %>
<%= render partial: "organisations/headings", locals: { main: "What is the name of this organisation's housing provider?", sub: nil } %> <%= render partial: "organisations/headings", locals: { main: "What is the name of this organisation's housing provider?", sub: nil } %>
<p class="govuk-body">Start typing to search for a housing provider</p> <p class="govuk-body">Start typing to search for a housing provider</p>
<% else %> <% else %>
<% content_for :before_content do %>
<%= govuk_back_link(href: :back) %>
<% end %>
<%= render partial: "organisations/headings", locals: { main: "What is the name of your housing provider?", sub: nil } %> <%= render partial: "organisations/headings", locals: { main: "What is the name of your housing provider?", sub: nil } %>
<p class="govuk-body">Start typing to search for your housing provider</p> <p class="govuk-body">Start typing to search for your housing provider</p>
<% end %> <% end %>
<% answer_options = { "" => "Select an option" } %>
<% @organisations.each do |organisation| %>
<% answer_options[organisation[0]] = organisation[1] %>
<% end %>
<%= render partial: "organisation_relationships/related_organisation_select_question", locals: { <%= render partial: "organisation_relationships/related_organisation_select_question", locals: {
question: Form::Question.new("", {"answer_options" => answer_options}, nil), question: Form::Question.new("", {"answer_options" => answer_options}, nil),
f: } %> f: } %>
@ -30,5 +33,3 @@
</ul> </ul>
<% end %> <% end %>
<% end %> <% end %>

27
app/views/organisation_relationships/housing_providers.html.erb

@ -1,15 +1,28 @@
<% item_label = format_label(@pagy.count, "housing providers") %> <% item_label = format_label(@pagy.count, "housing providers") %>
<%= govuk_notification_banner(
title_text: "Success", <% if current_user.data_coordinator? %>
success: true, title_heading_level: 3, <% if params["related_organisation_id"] %>
title_id: "swanky-notifications" <%= govuk_notification_banner(
) do |notification_banner| title_text: "Success",
notification_banner.heading(text: "#{Organisation.find(params["related_organisation_id"].to_i).name} is now one of your housing providers") success: true, title_heading_level: 3,
end %> title_id: "swanky-notifications"
) do |notification_banner|
notification_banner.heading(text: "#{Organisation.find(params["related_organisation_id"]).name} is now one of your housing providers")
end %>
<% end %><% end %>
<% if current_user.support? %> <% if current_user.support? %>
<%= render partial: "organisations/headings", locals: { main: @organisation.name, sub: nil } %> <%= render partial: "organisations/headings", locals: { main: @organisation.name, sub: nil } %>
<%= render SubNavigationComponent.new(items: secondary_items(request.path, @organisation.id)) %> <%= render SubNavigationComponent.new(items: secondary_items(request.path, @organisation.id)) %>
<h2 class="govuk-visually-hidden">Housing Providers</h2> <h2 class="govuk-visually-hidden">Housing Providers</h2>
<% if params["related_organisation_id"] %>
<%= govuk_notification_banner(
title_text: "Success",
success: true, title_heading_level: 3,
title_id: "swanky-notifications"
) do |notification_banner|
notification_banner.heading(text: "#{Organisation.find(params["related_organisation_id"]).name} is now one of your housing providers")
end %>
<% end %>
<p class="govuk-body">This organisation can submit logs for its housing providers.</p> <p class="govuk-body">This organisation can submit logs for its housing providers.</p>
<% else %> <% else %>
<%= render partial: "organisations/headings", locals: { main: "Your housing providers", sub: nil } %> <%= render partial: "organisations/headings", locals: { main: "Your housing providers", sub: nil } %>

2
config/routes.rb

@ -81,7 +81,7 @@ Rails.application.routes.draw do
get "schemes", to: "organisations#schemes" get "schemes", to: "organisations#schemes"
get "housing-providers", to: "organisation_relationships#housing_providers" get "housing-providers", to: "organisation_relationships#housing_providers"
get "housing-providers/add", to: "organisation_relationships#add_housing_provider" get "housing-providers/add", to: "organisation_relationships#add_housing_provider"
post "housing-providers", to: "organisation_relationships#create" post "housing-providers", to: "organisation_relationships#create_housing_provider"
end end
end end

Loading…
Cancel
Save