diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index bae02049..8f7e12fb 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -167,12 +167,12 @@ class DmsfFileRevision < ActiveRecord::Base str + l(:title_waiting_for_approval) when DmsfWorkflow::STATE_APPROVED str + l(:title_approved) - when DmsfWorkflow::STATE_DRAFT - str + l(:title_draft) + when DmsfWorkflow::STATE_ASSIGNED + str + l(:title_assigned) when DmsfWorkflow::STATE_REJECTED str + l(:title_rejected) else - str + str + l(:title_none) end end @@ -183,7 +183,7 @@ class DmsfFileRevision < ActiveRecord::Base self.dmsf_workflow_started_by = User.current.id if User.current self.dmsf_workflow_started_at = DateTime.now else - self.workflow = DmsfWorkflow::STATE_DRAFT + self.workflow = DmsfWorkflow::STATE_ASSIGNED self.dmsf_workflow_assigned_by = User.current.id if User.current self.dmsf_workflow_assigned_at = DateTime.now end diff --git a/app/models/dmsf_workflow.rb b/app/models/dmsf_workflow.rb index 875d37be..0efcea00 100644 --- a/app/models/dmsf_workflow.rb +++ b/app/models/dmsf_workflow.rb @@ -24,7 +24,7 @@ class DmsfWorkflow < ActiveRecord::Base validates_length_of :name, :maximum => 255 STATE_NONE = nil - STATE_DRAFT = 3 + STATE_ASSIGNED = 3 STATE_WAITING_FOR_APPROVAL = 1 STATE_APPROVED = 2 STATE_REJECTED = 4 diff --git a/app/models/dmsf_workflow_step_action.rb b/app/models/dmsf_workflow_step_action.rb index 2e5f49aa..ce653771 100644 --- a/app/models/dmsf_workflow_step_action.rb +++ b/app/models/dmsf_workflow_step_action.rb @@ -24,6 +24,7 @@ class DmsfWorkflowStepAction < ActiveRecord::Base validates :action, :presence => true validates :note, :presence => true, :unless => lambda { self.action == DmsfWorkflowStepAction::ACTION_APPROVE } validates :author_id, :presence => true + validates_uniqueness_of :dmsf_workflow_step_assignment_id, :scope => [:action], :unless => lambda {self.action == DmsfWorkflowStepAction::ACTION_DELEGATE} ACTION_APPROVE = 1 ACTION_REJECT = 2 @@ -49,15 +50,30 @@ class DmsfWorkflowStepAction < ActiveRecord::Base if action case action.to_i when ACTION_APPROVE - l(:title_approved) + l(:title_approval) when ACTION_REJECT - l(:title_rejected) + l(:title_rejection) when ACTION_DELEGATE - l(:title_delegated) + l(:title_delegation) + when ACTION_ASSIGN + l(:title_assignment) + when ACTION_START + l(:title_start) + end + end + end + + def self.workflow_str(action) + if action + case action.to_i + when ACTION_REJECT + l(:title_rejected) when ACTION_ASSIGN l(:title_assigned) - when ACTION_START - l(:title_started) + when ACTION_START, ACTION_DELEGATE, ACTION_APPROVE + l(:title_waiting_for_approval) + else + l(:title_none) end end end diff --git a/app/models/dmsf_workflow_step_assignment.rb b/app/models/dmsf_workflow_step_assignment.rb index 32c4e370..1a86ed6c 100644 --- a/app/models/dmsf_workflow_step_assignment.rb +++ b/app/models/dmsf_workflow_step_assignment.rb @@ -23,6 +23,7 @@ class DmsfWorkflowStepAssignment < ActiveRecord::Base validates :dmsf_workflow_step_id, :presence => true validates :dmsf_file_revision_id, :presence => true + validates_uniqueness_of :dmsf_workflow_step_id, :scope => [:dmsf_file_revision_id] def step DmsfWorkflowStep.find_by_id self.dmsf_workflow_step_id diff --git a/app/views/dmsf/show.html.erb b/app/views/dmsf/show.html.erb index bc022dca..11fb1dd0 100644 --- a/app/views/dmsf/show.html.erb +++ b/app/views/dmsf/show.html.erb @@ -185,6 +185,8 @@ :dmsf_file_revision_id => file.last_revision.id), :title => DmsfWorkflow.assignments_to_users_str(wf.next_assignments(file.last_revision.id)), :remote => true) %> + <% else %> + <%= file.last_revision.workflow_str(false) %> <% end %>