From e5ac27d251987259619ae4491c1e8f7088e847a8 Mon Sep 17 00:00:00 2001 From: "karel.picman@lbcfree.net" Date: Fri, 6 Nov 2020 10:50:01 +0100 Subject: [PATCH] Multiple steps with the same user workaround --- app/views/my/blocks/_open_approvals.html.erb | 23 ++++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/app/views/my/blocks/_open_approvals.html.erb b/app/views/my/blocks/_open_approvals.html.erb index a8d99261..5daf7923 100644 --- a/app/views/my/blocks/_open_approvals.html.erb +++ b/app/views/my/blocks/_open_approvals.html.erb @@ -22,18 +22,17 @@ <% assignments = Array.new %> <% if @user %> - <% all_assignments = DmsfWorkflowStepAssignment.joins( - 'LEFT JOIN dmsf_workflow_step_actions ON dmsf_workflow_step_assignments.id = dmsf_workflow_step_actions.dmsf_workflow_step_assignment_id').where( - dmsf_workflow_step_assignments: { user_id: @user.id }).where( - ['dmsf_workflow_step_actions.id IS NULL OR dmsf_workflow_step_actions.action = ?', DmsfWorkflowStepAction::ACTION_DELEGATE]) %> - <% all_assignments.find_each do |assignment| %> - <% if assignment.dmsf_file_revision.dmsf_file.last_revision && - !assignment.dmsf_file_revision.dmsf_file.last_revision.deleted? && - (assignment.dmsf_file_revision.workflow == DmsfWorkflow::STATE_WAITING_FOR_APPROVAL) && - (assignment.dmsf_file_revision == assignment.dmsf_file_revision.dmsf_file.last_revision) %> - <% assignments << assignment %> - <% end %> - <% end %> + <% all_assignments = DmsfWorkflowStepAssignment. + left_outer_joins(:dmsf_workflow_step_actions). + joins(:dmsf_workflow_step). + joins(:dmsf_file_revision). + where(dmsf_file_revisions: { deleted: DmsfFileRevision::STATUS_ACTIVE, workflow: DmsfWorkflow::STATE_WAITING_FOR_APPROVAL }). + where(dmsf_workflow_step_assignments: { user_id: @user.id }). + where(['dmsf_workflow_step_actions.id IS NULL OR dmsf_workflow_step_actions.action = ?', + DmsfWorkflowStepAction::ACTION_DELEGATE]). + order('dmsf_workflow_step_assignments.dmsf_file_revision_id, dmsf_workflow_steps.step').to_a %> + <% assignments = all_assignments.delete_if { |a| (a.dmsf_file_revision != a.dmsf_file_revision.dmsf_file.last_revision) } %> + <% assignments.uniq! { |a| a.dmsf_file_revision } %> <% end %> <% unless defined?(EasyExtensions) %>

<%= l(:open_approvals)%> (<%= assignments.size %>)