diff --git a/app/controllers/template_folders_controller.rb b/app/controllers/template_folders_controller.rb index 03f58bf5..0a369a5b 100644 --- a/app/controllers/template_folders_controller.rb +++ b/app/controllers/template_folders_controller.rb @@ -32,7 +32,9 @@ class TemplateFoldersController < ApplicationController @pagy, @templates = pagy_auto(@templates, limit:) - load_related_submissions if params[:q].present? && @templates.blank? + if params[:q].present? && @templates.blank? + @related_submissions_pagy, @related_submissions = load_related_submissions(@template_folder) + end else @pagy, @template_folders = pagy(@template_folders, limit: FOLDERS_PER_PAGE) @@ -66,20 +68,20 @@ class TemplateFoldersController < ApplicationController params.require(:template_folder).permit(:name) end - def load_related_submissions - @related_submissions = + def load_related_submissions(template_folder) + related_submissions = Submission.accessible_by(current_ability) .where(archived_at: nil) .where(template_id: current_account.templates.active - .where(folder: [@template_folder, *@template_folder.subfolders]) + .where(folder: [template_folder, *template_folder.subfolders]) .select(:id)) .preload(:template_accesses, :created_by_user, template: :author, submitters: :start_form_submission_events) - @related_submissions = Submissions.search(current_user, @related_submissions, params[:q]) - .order(id: :desc) + related_submissions = Submissions.search(current_user, related_submissions, params[:q]) + .order(id: :desc) - @related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5) + pagy_auto(related_submissions, limit: 5) end end diff --git a/app/controllers/templates_archived_controller.rb b/app/controllers/templates_archived_controller.rb index 69b16936..ac05e6f3 100644 --- a/app/controllers/templates_archived_controller.rb +++ b/app/controllers/templates_archived_controller.rb @@ -14,7 +14,13 @@ class TemplatesArchivedController < ApplicationController return unless params[:q].present? && @templates.blank? - @related_submissions = + @related_submissions_pagy, @related_submissions = load_related_submissions + end + + private + + def load_related_submissions + related_submissions = Submission.accessible_by(current_ability) .joins(:template) .where.not(templates: { archived_at: nil }) @@ -22,9 +28,9 @@ class TemplatesArchivedController < ApplicationController template: :author, submitters: :start_form_submission_events) - @related_submissions = Submissions.search(current_user, @related_submissions, params[:q]) - .order(id: :desc) + related_submissions = Submissions.search(current_user, related_submissions, params[:q]) + .order(id: :desc) - @related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5) + pagy_auto(related_submissions, limit: 5) end end diff --git a/app/controllers/templates_dashboard_controller.rb b/app/controllers/templates_dashboard_controller.rb index 787d3a24..d7e7554d 100644 --- a/app/controllers/templates_dashboard_controller.rb +++ b/app/controllers/templates_dashboard_controller.rb @@ -38,7 +38,9 @@ class TemplatesDashboardController < ApplicationController @pagy, @templates = load_templates(@templates, @pagy.count) - load_related_submissions if params[:q].present? && @templates.blank? + if params[:q].present? && @templates.blank? + @related_submissions_pagy, @related_submissions = load_related_submissions + end end end @@ -110,17 +112,17 @@ class TemplatesDashboardController < ApplicationController end def load_related_submissions - @related_submissions = Submission.accessible_by(current_ability) - .left_joins(:template) - .where(archived_at: nil) - .where(templates: { archived_at: nil }) - .preload(:template_accesses, :created_by_user, - template: :author, - submitters: :start_form_submission_events) - - @related_submissions = Submissions.search(current_user, @related_submissions, params[:q]) - .order(id: :desc) - - @related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5) + related_submissions = Submission.accessible_by(current_ability) + .left_joins(:template) + .where(archived_at: nil) + .where(templates: { archived_at: nil }) + .preload(:template_accesses, :created_by_user, + template: :author, + submitters: :start_form_submission_events) + + related_submissions = Submissions.search(current_user, related_submissions, params[:q]) + .order(id: :desc) + + pagy_auto(related_submissions, limit: 5) end end diff --git a/app/controllers/templates_shared_controller.rb b/app/controllers/templates_shared_controller.rb index 90b5d159..4487c56f 100644 --- a/app/controllers/templates_shared_controller.rb +++ b/app/controllers/templates_shared_controller.rb @@ -18,5 +18,30 @@ class TemplatesSharedController < ApplicationController @templates = Templates.search(current_user, @templates, params[:q]) @pagy, @templates = pagy_auto(@templates, limit: 12) + + return unless params[:q].present? && @templates.blank? + + @related_submissions_pagy, @related_submissions = load_related_submissions(is_archived: @is_archived) + end + + private + + def load_related_submissions(is_archived:) + shared_templates = Templates.shared(current_user) + shared_templates = is_archived ? shared_templates.archived : shared_templates.active + + related_submissions = + Submission.accessible_by(current_ability) + .where(template_id: shared_templates.select(:id)) + .preload(:template_accesses, :created_by_user, + template: :author, + submitters: :start_form_submission_events) + + related_submissions = related_submissions.where(archived_at: nil) unless is_archived + + related_submissions = Submissions.search(current_user, related_submissions, params[:q]) + .order(id: :desc) + + pagy_auto(related_submissions, limit: 5) end end diff --git a/app/views/template_folders/show.html.erb b/app/views/template_folders/show.html.erb index 527af6ca..57fdb18c 100644 --- a/app/views/template_folders/show.html.erb +++ b/app/views/template_folders/show.html.erb @@ -30,7 +30,7 @@ <% end %>