From 5921ce85413954fe0d0ea0529ce3fa8a6b194880 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Thu, 13 Jul 2023 10:05:04 +0100 Subject: [PATCH] feat: wip commit --- .../lettings_log_summary_component.html.erb | 2 +- app/helpers/filters_helper.rb | 11 +++++-- app/models/user.rb | 4 +-- app/services/filter_manager.rb | 15 +++++++++- app/views/logs/_log_filters.html.erb | 29 +++++++++++++------ 5 files changed, 46 insertions(+), 15 deletions(-) diff --git a/app/components/lettings_log_summary_component.html.erb b/app/components/lettings_log_summary_component.html.erb index 988417b6c..8c348ed68 100644 --- a/app/components/lettings_log_summary_component.html.erb +++ b/app/components/lettings_log_summary_component.html.erb @@ -58,7 +58,7 @@

Created <% if log.created_by %> - by <%= log.created_by.name || log.created_by.email %> + Assigned to <%= log.created_by.name || log.created_by.email %> <% end %>

diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index 34e768603..896e7f9c8 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -3,7 +3,8 @@ module FiltersHelper return false unless 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["organisation"].present? && filter == "organisation_select" && value == :specific_org return false if selected_filters[filter].blank? @@ -16,7 +17,7 @@ module FiltersHelper return false unless filters_json filters = JSON.parse(filters_json) - filters["user"] == "yours" || + filters["user"].present? || filters["organisation"].present? || filters["status"]&.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) } 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 { "2023": "2023/24", "2022": "2022/23", "2021": "2021/22" } end diff --git a/app/models/user.rb b/app/models/user.rb index 2cf45de45..432fce407 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -144,9 +144,9 @@ class User < ApplicationRecord def logs_filters(specific_org: false) 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 - %w[status years user bulk_upload_id] + %w[status years assigned_to user bulk_upload_id] end end diff --git a/app/services/filter_manager.rb b/app/services/filter_manager.rb index 39cd7cdd3..09e08893b 100644 --- a/app/services/filter_manager.rb +++ b/app/services/filter_manager.rb @@ -22,6 +22,7 @@ class FilterManager filters.each do |category, values| next if Array(values).reject(&:empty?).blank? next if category == "organisation" && all_orgs + next if category == "assigned_to" logs = logs.public_send("filter_by_#{category}", values, user) end @@ -53,7 +54,19 @@ class FilterManager new_filters[filter] = params[filter] if params[filter].present? 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 def filtered_logs(logs, search_term, filters) diff --git a/app/views/logs/_log_filters.html.erb b/app/views/logs/_log_filters.html.erb index d8235d350..1f949341e 100644 --- a/app/views/logs/_log_filters.html.erb +++ b/app/views/logs/_log_filters.html.erb @@ -6,7 +6,6 @@
<%= form_with html: { method: :get } do |f| %> - <% all_or_yours = { "all": { label: "All" }, "yours": { label: "Yours" } } %> <% if bulk_upload_options(@bulk_upload).present? %> <%= render partial: "filters/checkbox_filter", @@ -34,15 +33,27 @@ label: "Status", category: "status", } %> - <% end %> - <%= render partial: "filters/radio_filter", - locals: { - f:, - options: all_or_yours, - label: "Logs", - category: "user", - } %> + <%= render partial: "filters/radio_filter", + locals: { + f:, + options: { + "all": { label: "Any 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" %> <%= render partial: "filters/radio_filter", locals: {