# frozen_string_literal: true # Redmine plugin for Document Management System "Features" # # Karel Pičman # # This file is part of Redmine DMSF plugin. # # Redmine DMSF plugin is free software: you can redistribute it and/or modify it under the terms of the GNU General # Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Redmine DMSF plugin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with Redmine DMSF plugin. If not, see # . # Workflow step action class DmsfWorkflowStepAction < ApplicationRecord belongs_to :dmsf_workflow_step_assignment belongs_to :author, class_name: 'User' validates :action, presence: true validates :note, presence: true, unless: -> { action == DmsfWorkflowStepAction::ACTION_APPROVE } validates :dmsf_workflow_step_assignment_id, unless: -> { action == DmsfWorkflowStepAction::ACTION_DELEGATE }, uniqueness: { scope: [:action], case_sensitive: true } ACTION_APPROVE = 1 ACTION_REJECT = 2 ACTION_DELEGATE = 3 ACTION_ASSIGN = 4 ACTION_START = 5 def initialize(*args) super self.author_id = User.current.id if User.current end def self.finished?(action) [DmsfWorkflowStepAction::ACTION_APPROVE, DmsfWorkflowStepAction::ACTION_REJECT].include? action end def finished? DmsfWorkflowStepAction.finished? action end def self.action_str(action) return unless action case action.to_i when ACTION_APPROVE l(:title_approval) when ACTION_REJECT l(:title_rejection) when ACTION_DELEGATE l(:title_delegation) when ACTION_ASSIGN l(:title_assignment) when ACTION_START l(:title_start) end end def self.action_type_str(action) return unless action case action.to_i when ACTION_APPROVE 'approval' when ACTION_REJECT 'rejection' when ACTION_DELEGATE 'delegation' when ACTION_ASSIGN 'assignment' when ACTION_START 'start' end end def self.workflow_str(action) return unless action case action.to_i when ACTION_REJECT l(:title_rejected) when ACTION_ASSIGN l(:title_assigned) when ACTION_START, ACTION_DELEGATE, ACTION_APPROVE l(:title_waiting_for_approval) else l(:title_none) end end end