ExchangeDocumentProcessingAssignmentClientFunctions.cs
3.22 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Exchange.ExchangeDocumentProcessingAssignment;
namespace Sungero.Exchange.Client
{
partial class ExchangeDocumentProcessingAssignmentFunctions
{
/// <summary>
/// Показать диалог выбора главного документа.
/// </summary>
/// <param name="documents">Документы.</param>
/// <param name="needSignDocuments">Документы, требующие подписания.</param>
/// <param name="currentAction">Действие по отправке.</param>
/// <returns>Документ.</returns>
public static Sungero.Domain.Shared.IEntity ShowMainDocumentChoosingDialog(List<Content.IElectronicDocument> documents,
List<Content.IElectronicDocument> needSignDocuments,
Domain.Shared.IActionInfo currentAction)
{
// Определить подходящие документы.
var documentsList = Docflow.PublicFunctions.OfficialDocument.GetSuitableDocuments(documents, currentAction);
var needSignDocumentList = Docflow.PublicFunctions.OfficialDocument.GetSuitableDocuments(needSignDocuments, currentAction);
if (needSignDocumentList.Any())
documentsList = needSignDocumentList;
return Docflow.PublicFunctions.OfficialDocument.ChooseMainDocument(documentsList, needSignDocuments);
}
/// <summary>
/// Отправить извещения о получении.
/// </summary>
/// <param name="certificate">Сертификат для подписания ИОП. Чтобы не запрашивать повторно, при одновременной отправке ИОП и УОУ. Может быть null - тогда подберется автоматически.</param>
/// <returns>Результат отправки или подтверждения выполнения без отправки ИОП.</returns>
public bool SendDeliveryConfirmation(ICertificate certificate)
{
var result = Exchange.Functions.Module.SendDeliveryConfirmation(_obj.Box, certificate, false);
if (!string.IsNullOrEmpty(result))
{
// Если в ящике указан сертификат для автоматической работы с ИОПами, то диалог тут лишний.
// Исключение - ситуация, когда подписание как раз и было выполнено указанным сертификатом.
var rootBox = ExchangeCore.PublicFunctions.BoxBase.GetRootBox(_obj.Box);
if (rootBox.CertificateReceiptNotifications == null || Equals(rootBox.CertificateReceiptNotifications, certificate))
{
var dialog = Dialogs.CreateTaskDialog(ExchangeDocumentProcessingAssignments.Resources.CompleteAsgWithoutSendDeliveryConfirmation, result, MessageType.Question);
dialog.Buttons.AddYesNo();
return dialog.Show() == DialogButtons.Yes;
}
}
return true;
}
}
}