diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index b4b4f4851..34e257fb3 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -127,7 +127,7 @@ private filters.each do |category, values| next if values.reject(&:empty?).blank? - query = query.public_send("filter_by_#{category}", values) + query = query.public_send("filter_by_#{category}", values, current_user) end end query.all.includes(:owning_organisation, :managing_organisation) @@ -135,7 +135,7 @@ private def set_session_filters new_filters = session[:case_logs_filters].present? ? JSON.parse(session[:case_logs_filters]) : {} - %i[status years].each { |filter| new_filters[filter] = params[filter] if params[filter].present? } + %i[status years user].each { |filter| new_filters[filter] = params[filter] if params[filter].present? } session[:case_logs_filters] = new_filters.to_json end end diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 99ea8fdb5..7274ecc29 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -34,8 +34,8 @@ class CaseLog < ApplicationRecord belongs_to :managing_organisation, class_name: "Organisation" scope :for_organisation, ->(org) { where(owning_organisation: org).or(where(managing_organisation: org)) } - scope :filter_by_status, ->(status) { where status: status } - scope :filter_by_years, lambda { |years| + scope :filter_by_status, ->(status, user = nil) { where status: status } + scope :filter_by_years, lambda { |years, user = nil| first_year = years.shift query = filter_by_year(first_year) years.each { |year| query = query.or(filter_by_year(year)) } @@ -43,6 +43,12 @@ class CaseLog < ApplicationRecord } scope :filter_by_year, ->(year) { where(startdate: Time.utc(year.to_i, 4, 1)...Time.utc(year.to_i + 1, 4, 1)) } + scope :filter_by_user, lambda { |selected_user, user| + if !selected_user.include?("all") && user.present? + where(id: PaperTrail::Version.where(item_type: "CaseLog", event: "create", whodunnit: user.to_global_id.uri.to_s).map(&:item_id)) + end + } + AUTOGENERATED_FIELDS = %w[id status created_at updated_at discarded_at].freeze OPTIONAL_FIELDS = %w[postcode_known la_known first_time_property_let_as_social_housing tenant_code propcode].freeze RENT_TYPE_MAPPING = { 0 => 1, 1 => 2, 2 => 2, 3 => 3, 4 => 3, 5 => 3 }.freeze diff --git a/app/views/case_logs/_log_filters.erb b/app/views/case_logs/_log_filters.erb index 09432faa7..888028700 100644 --- a/app/views/case_logs/_log_filters.erb +++ b/app/views/case_logs/_log_filters.erb @@ -16,6 +16,7 @@ <% years = {"2021": "2021/22", "2022": "2022/23"} %> <%= render partial: "filters/checkbox_filter", locals: { f: f, options: years, label: "Collection year", category: "years" } %> <%= render partial: "filters/checkbox_filter", locals: { f: f, options: status_filters, label: "Status", category: "status" } %> + <%= render partial: "filters/checkbox_filter", locals: { f: f, options: {"all": "All", "yours": "Yours"}, label: "Logs", category: "user" } %> <%= f.govuk_submit "Apply filters", class: "govuk-!-margin-top-4" %> <% end %>