VerificationActAssignmentActions.cs
3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.Storage.VerificationActAssignment;
namespace DirRX.Storage.Client
{
partial class VerificationActAssignmentActions
{
public virtual void Terminate(Sungero.Workflow.Client.ExecuteResultActionArgs e)
{
var document = _obj.DocumentGroup.DestructionActs.Single();
PublicFunctions.DestructionAct.Remote.RemoveAllCaseFiles(document);
}
public virtual bool CanTerminate(Sungero.Workflow.Client.CanExecuteResultActionArgs e)
{
return true;
}
public virtual void Forward(Sungero.Workflow.Client.ExecuteResultActionArgs e)
{
if (_obj.Addressee == null)
{
e.AddError(VerificationActTasks.Resources.CantRedirectWithoutAddressee);
e.Cancel();
}
var document = _obj.DocumentGroup.DestructionActs.SingleOrDefault();
document.Archivist = _obj.Addressee;
document.Save();
}
public virtual bool CanForward(Sungero.Workflow.Client.CanExecuteResultActionArgs e)
{
return true;
}
public virtual void Complete(Sungero.Workflow.Client.ExecuteResultActionArgs e)
{
var document = _obj.DocumentGroup.DestructionActs.SingleOrDefault();
document.LifeCycleState = Storage.DestructionAct.LifeCycleState.Active;
document.Save();
// Проверить наличие документа.
if (document == null || !document.HasVersions)
{
e.AddError(VerificationActTasks.Resources.ErrorDocumentNotFound);
return;
}
// Проверить тип текущего пользователя.
var currentUser = Sungero.CoreEntities.Users.Current;
if (currentUser == null || currentUser.IsSystem == true)
{
e.AddError(VerificationActTasks.Resources.ErrorSystemUserIsNotAllowed);
return;
}
// Проверить подписанта в акте.
if (document.Signatory == null)
{
e.AddError(VerificationActTasks.Resources.ErrorSignatoryNotFound);
return;
}
// Переформировать акт (для добавления утверждающего).
Storage.PublicFunctions.DestructionAct.GenerateLastVersionFromReport(document);
// Подписать документ, если еще не подписан.
if (!Signatures.Get(document.LastVersion).Where(s => s.Signatory.Equals(currentUser) && s.SignatureType == SignatureType.Endorsing).Any())
{
if (!Signatures.Endorse(document.LastVersion, VerificationActTasks.Resources.EndorseNote))
{
e.AddError(VerificationActTasks.Resources.ErrorUnableToSign);
return;
}
}
// Отправить на согласование по регламенту.
PublicFunctions.Module.SendDestructionActForApproving(document, _obj.Performer);
}
public virtual bool CanComplete(Sungero.Workflow.Client.CanExecuteResultActionArgs e)
{
return true;
}
}
}