Browse Source

feat: wip commit

pull/1775/head
natdeanlewissoftwire 3 years ago
parent
commit
5921ce8541
  1. 2
      app/components/lettings_log_summary_component.html.erb
  2. 11
      app/helpers/filters_helper.rb
  3. 4
      app/models/user.rb
  4. 15
      app/services/filter_manager.rb
  5. 29
      app/views/logs/_log_filters.html.erb

2
app/components/lettings_log_summary_component.html.erb

@ -58,7 +58,7 @@
<p class="govuk-body"> <p class="govuk-body">
Created <time datetime="<%= log.created_at.iso8601 %>"><%= log.created_at.to_formatted_s(:govuk_date) %></time> Created <time datetime="<%= log.created_at.iso8601 %>"><%= log.created_at.to_formatted_s(:govuk_date) %></time>
<% if log.created_by %> <% if log.created_by %>
<span class="app-log-summary__footer--actor">by <%= log.created_by.name || log.created_by.email %></span> <span class="app-log-summary__footer--actor">Assigned to <%= log.created_by.name || log.created_by.email %></span>
<% end %> <% end %>
</p> </p>
</footer> </footer>

11
app/helpers/filters_helper.rb

@ -3,7 +3,8 @@ module FiltersHelper
return false unless session[session_name_for(filter_type)] return false unless session[session_name_for(filter_type)]
selected_filters = JSON.parse(session[session_name_for(filter_type)]) selected_filters = JSON.parse(session[session_name_for(filter_type)])
return true if selected_filters.blank? && filter == "user" && value == :all return true if !selected_filters.key?("user") && filter == "assigned_to" && value == :all
return true if selected_filters["assigned_to"] == "specific_user" && filter == "assigned_to" && value == :specific_user
return true if !selected_filters.key?("organisation") && filter == "organisation_select" && value == :all return true if !selected_filters.key?("organisation") && filter == "organisation_select" && value == :all
return true if selected_filters["organisation"].present? && filter == "organisation_select" && value == :specific_org return true if selected_filters["organisation"].present? && filter == "organisation_select" && value == :specific_org
return false if selected_filters[filter].blank? return false if selected_filters[filter].blank?
@ -16,7 +17,7 @@ module FiltersHelper
return false unless filters_json return false unless filters_json
filters = JSON.parse(filters_json) filters = JSON.parse(filters_json)
filters["user"] == "yours" || filters["user"].present? ||
filters["organisation"].present? || filters["organisation"].present? ||
filters["status"]&.compact_blank&.any? || filters["status"]&.compact_blank&.any? ||
filters["years"]&.compact_blank&.any? || filters["years"]&.compact_blank&.any? ||
@ -42,6 +43,12 @@ module FiltersHelper
[OpenStruct.new(id: "", name: "Select an option")] + organisation_options.map { |org| OpenStruct.new(id: org.id, name: org.name) } [OpenStruct.new(id: "", name: "Select an option")] + organisation_options.map { |org| OpenStruct.new(id: org.id, name: org.name) }
end end
def assigned_to_filter_options(user)
user_options = user.organisation.users
[OpenStruct.new(id: "", name: "Select an option")] + user_options.map { |user| OpenStruct.new(id: user.id, name: user.name) }
end
def collection_year_options def collection_year_options
{ "2023": "2023/24", "2022": "2022/23", "2021": "2021/22" } { "2023": "2023/24", "2022": "2022/23", "2021": "2021/22" }
end end

4
app/models/user.rb

@ -144,9 +144,9 @@ class User < ApplicationRecord
def logs_filters(specific_org: false) def logs_filters(specific_org: false)
if (support? && !specific_org) || organisation.has_managing_agents? if (support? && !specific_org) || organisation.has_managing_agents?
%w[status years user organisation bulk_upload_id] %w[status years assigned_to user organisation bulk_upload_id]
else else
%w[status years user bulk_upload_id] %w[status years assigned_to user bulk_upload_id]
end end
end end

15
app/services/filter_manager.rb

@ -22,6 +22,7 @@ class FilterManager
filters.each do |category, values| filters.each do |category, values|
next if Array(values).reject(&:empty?).blank? next if Array(values).reject(&:empty?).blank?
next if category == "organisation" && all_orgs next if category == "organisation" && all_orgs
next if category == "assigned_to"
logs = logs.public_send("filter_by_#{category}", values, user) logs = logs.public_send("filter_by_#{category}", values, user)
end end
@ -53,7 +54,19 @@ class FilterManager
new_filters[filter] = params[filter] if params[filter].present? new_filters[filter] = params[filter] if params[filter].present?
end end
end end
params["organisation_select"] == "all" ? new_filters.except("organisation") : new_filters
if params["organisation_select"] == "all"
new_filters = new_filters.except("organisation")
end
if params["assigned_to"] == "all"
new_filters = new_filters.except("user")
end
if params["assigned_to"] == "you"
new_filters["user"] = current_user.id.to_s
end
new_filters
end end
def filtered_logs(logs, search_term, filters) def filtered_logs(logs, search_term, filters)

29
app/views/logs/_log_filters.html.erb

@ -6,7 +6,6 @@
<div class="app-filter__content"> <div class="app-filter__content">
<%= form_with html: { method: :get } do |f| %> <%= form_with html: { method: :get } do |f| %>
<% all_or_yours = { "all": { label: "All" }, "yours": { label: "Yours" } } %>
<% if bulk_upload_options(@bulk_upload).present? %> <% if bulk_upload_options(@bulk_upload).present? %>
<%= render partial: "filters/checkbox_filter", <%= render partial: "filters/checkbox_filter",
@ -34,15 +33,27 @@
label: "Status", label: "Status",
category: "status", category: "status",
} %> } %>
<% end %>
<%= render partial: "filters/radio_filter", <%= render partial: "filters/radio_filter",
locals: { locals: {
f:, f:,
options: all_or_yours, options: {
label: "Logs", "all": { label: "Any user" },
category: "user", "you": { label: "You" },
} %> "specific_user": {
label: "Specific user",
conditional_filter: {
type: "select",
label: "User",
category: "user",
options: assigned_to_filter_options(@current_user),
},
},
},
label: "Assigned to",
category: "assigned_to",
} %>
<% end %>
<% if (@current_user.support? || @current_user.organisation.has_managing_agents?) && request.path == "/lettings-logs" %> <% if (@current_user.support? || @current_user.organisation.has_managing_agents?) && request.path == "/lettings-logs" %>
<%= render partial: "filters/radio_filter", locals: { <%= render partial: "filters/radio_filter", locals: {

Loading…
Cancel
Save