ArchiveRequestTaskRouteHandlers.cs
2.99 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Workflow;
using DirRX.Container.ArchiveRequestTask;
using Newtonsoft.Json.Linq;
namespace DirRX.Container.Server
{
partial class ArchiveRequestTaskRouteHandlers
{
public virtual void Script9Execute()
{
var subTask = Sungero.Workflow.SimpleTasks.CreateAsSubtask(_obj);
subTask.AssignmentType = Sungero.Workflow.SimpleTask.AssignmentType.Notice;
subTask.Subject = ArchiveRequestTasks.Resources.InfoResultNoticeSubjectFormat(_obj.Subject);
subTask.ActiveText = Functions.ArchiveRequestTask.GetArchiveRequestNoticeText(_obj);
subTask.Author = Functions.Module.GetServiceUser();
subTask.NeedsReview = false;
var step = subTask.RouteSteps.AddNew();
step.AssignmentType = subTask.AssignmentType;
if (_obj.Initiator != null)
step.Performer = _obj.Initiator;
else
step.Performer = Users.GetAll(x => x.IsSystem == true && x.Name == "Administrator").FirstOrDefault();
step.Deadline = null;
subTask.Save();
subTask.Start();
}
public virtual bool Monitoring4Result()
{
// Проверить статус выполнения запроса.
if (_obj.RequestState != RequestState.InProcess || !_obj.RequestTaskId.HasValue || _obj.RequestTaskId.Value == 0)
return true;
// Получить данные из архива.
_obj.RequestResults = Functions.Module.GetArchiveRequestResult(_obj.RequestTaskId.Value);
_obj.Save();
if (!string.IsNullOrWhiteSpace(_obj.RequestResults))
{
var json = JObject.Parse(_obj.RequestResults);
var status = json.Value<string>("Status");
// Изменить статус выполнения запроса.
if (!string.IsNullOrEmpty(status) && status != "InProcess")
{
_obj.RequestState = new Sungero.Core.Enumeration(status);
_obj.Save();
return true;
}
}
return false;
}
public virtual void Script3Execute()
{
// Подготовить данные для передачи в виде json-строки.
_obj.RequestData = Functions.ArchiveRequestTask.CreateRequestData(_obj);
_obj.RequestState = RequestState.InQueue;
_obj.Save();
// Отправить запрос в архив.
Logger.DebugFormat("LTA. Request text = {0}", _obj.RequestData);
var taskId = Functions.Module.SendArchiveRequest(_obj.RequestData);
if (taskId > 0)
{
_obj.RequestTaskId = taskId;
_obj.RequestState = RequestState.InProcess;
}
else
{
_obj.RequestTaskId = null;
_obj.RequestState = RequestState.Error;
_obj.RequestResults = Functions.ArchiveRequestTask.CreateRequestResultsWithError(_obj, ArchiveRequestTasks.Resources.ErrorSendingRequest.ToString());
}
_obj.Save();
}
}
}