#1192 Approval workflow state

This commit is contained in:
Karel Pičman 2022-10-13 10:46:42 +02:00
parent 39f15bd3b8
commit 54cd6ad3e1
3 changed files with 32 additions and 3 deletions

View File

@ -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)

View File

@ -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

View File

@ -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|