From 54cd6ad3e1aab800978b74416bfb2a0c44d874c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Thu, 13 Oct 2022 10:46:42 +0200 Subject: [PATCH] #1192 Approval workflow state --- app/helpers/dmsf_queries_helper.rb | 10 ++++++++-- app/models/dmsf_query.rb | 4 +++- app/models/dmsf_workflow.rb | 21 +++++++++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/app/helpers/dmsf_queries_helper.rb b/app/helpers/dmsf_queries_helper.rb index bb1c3ce7..3433f29b 100644 --- a/app/helpers/dmsf_queries_helper.rb +++ b/app/helpers/dmsf_queries_helper.rb @@ -208,7 +208,8 @@ module DmsfQueriesHelper else url = log_dmsf_workflow_path(project_id: item.project_id, id: item.workflow_id, dmsf_link_id: item.id) end - link_to h(DmsfWorkflow.workflow_str(value.to_i)), url, remote: true + text, names = DmsfWorkflow.workflow_info(item.workflow, item.workflow_id, item.revision_id) + link_to h(text), url, remote: true, title: names else h(DmsfWorkflow.workflow_str(value.to_i)) end @@ -225,7 +226,12 @@ module DmsfQueriesHelper when :size ActiveSupport::NumberHelper.number_to_human_size value when :workflow - DmsfWorkflow.workflow_str value.to_i + if value + text, names = DmsfWorkflow.workflow_info(object.workflow, object.workflow_id, object.revision_id) + text + else + super column, object, value + end when :author if value user = User.find_by(id: value) diff --git a/app/models/dmsf_query.rb b/app/models/dmsf_query.rb index 7455f49d..06abd274 100644 --- a/app/models/dmsf_query.rb +++ b/app/models/dmsf_query.rb @@ -113,7 +113,9 @@ class DmsfQuery < Query add_available_filter 'title', type: :text add_available_filter 'updated', type: :date_past add_available_filter 'locked', type: :list, values: [[l(:general_text_yes), '1'], [l(:general_text_no), '0']] - add_custom_fields_filters DmsfFileRevisionCustomField.all + add_available_filter 'workflow', type: :list, values: [[l(:title_waiting_for_approval), '1'], + [l(:title_approved), '2'], [l(:title_assigned), '3'], [l(:title_rejected), '4'], [l(:title_obsolete), '5']] + add_custom_fields_filters DmsfFileRevisionCustomField.visible end def statement diff --git a/app/models/dmsf_workflow.rb b/app/models/dmsf_workflow.rb index a6c83223..90028c31 100644 --- a/app/models/dmsf_workflow.rb +++ b/app/models/dmsf_workflow.rb @@ -55,6 +55,27 @@ class DmsfWorkflow < ActiveRecord::Base end end + def self.workflow_info(workflow, workflow_id, revision_id) + text = '' + names = '' + dmsf_workflow = DmsfWorkflow.find_by(id: workflow_id) + if dmsf_workflow + assignments = dmsf_workflow.next_assignments(revision_id) + if assignments.any? + user_ids = assignments.map{ |a| a.user_id } + users = User.where(id: user_ids).all + names = users.map{ |u| u.name }.join(',') + workflow_step_id = assignments.first[:dmsf_workflow_step_id] + if workflow_step_id + step = DmsfWorkflowStep.find_by_id(workflow_step_id) + text = step.name if(step&.name.present?) + end + end + end + text = DmsfWorkflow.workflow_str(workflow.to_i) if(text.blank?) + [text, names] + end + def participiants users = Array.new dmsf_workflow_steps.each do |step|