/
IamDeveloper
/
Edk
Обзор
Документация
Войти
/
IamDeveloper
/
Edk
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Flow.cs
96 строк
4 KB
IamDeveloper
init
13 дек 2024, 15:07
13 дек 2024, 15:07
9714be3
Код
Авторство
О чём код?
using EdkClassLibrary; using SBRte; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Edk2directum { //реализация flow процесса регистрации документа в досье клиента для Дир. версии 5+ internal class Flow(IConnector connector, INotify notifier) { private readonly IConnector _connector = connector; private readonly INotify _notifier = notifier; public async Task Run(InternetDocument iDoc) { //TODO: Добавить Validate InternetDocument try { //Шаг 1 Получить ид группу доступа и отдела (заполнить Access блок) iDoc.Access = _connector.GetAccessRight(iDoc.SOURCE!); //Шаг 2 Проверить наличие клиента iDoc.OWNER!.DIRECTUM_ID = _connector.GetClientId(iDoc.CONTENT!.INN!, iDoc.Access.FILIAL_ID); //Шаг 3 Создать клиента (при наличии => Шаг 4) if (iDoc.OWNER!.DIRECTUM_ID == 0) iDoc.OWNER!.DIRECTUM_ID = _connector.CreateClient( iDoc.CONTENT!.SENDER!, iDoc.CONTENT!.INN!, iDoc.CONTENT!.KPP, iDoc.CONTENT!.CLN_ACCOUNT!, iDoc.Access.FILIAL_ID!); //Шаг 4 Для вложения создать запись ЭДК for (int i = 0; i < iDoc.ATTACHMENTS.ATTACHMENT_NUMBER; i++) { var edkId = _connector.CreateEdk( iDoc.Access.DEPT_ID!, iDoc.OWNER.DIRECTUM_ID, iDoc.CONTENT.NUM_DOC, iDoc.CONTENT.CLN_ACCOUNT, iDoc.CONTENT.RECIPIENT, #if DEBUG "ТЕСТ, пожалуйста игнорируйте", #else iDoc.ATTACHMENTS.ATTACHMENT[i].NAME!, #endif iDoc.DOC_ID, iDoc.CONTENT.DATE_DOC, iDoc.CONTENT.SUBJ_LETTER!, iDoc.Signs); //Шаг 5 Для вложения создать документ var docId = await _connector.CreateDoc(iDoc.ATTACHMENTS.ATTACHMENT[i].UNLOAD_TO_FILE!, iDoc.ATTACHMENTS.ATTACHMENT[i].NAME!, iDoc.Access.GROUP_ID); //Шаг 6 связать запись ЭДК и документ _connector.BindTo(edkId, docId); //Шаг 7 Добавить результат iDoc.Results.RESULTS.Add(new Result { DIRDOCID = docId, DIRORGID = iDoc.OWNER!.DIRECTUM_ID, DIRREFEDKID = edkId, ID = iDoc.ATTACHMENTS.ATTACHMENT[i].ID, STATE = "OK" }); //Шаг 8 Сохранить файл для Dashboard //Dashboard в текущем виде Depricated } } //TODO: Добавить возможность отката операции catch(InternetDocumentCannotRecieveAccessError err) { await _notifier.NotifyError(err.Message).ConfigureAwait(false); throw; } catch(InternetDocumentClientRecieveError err) { await _notifier.NotifyError(err.Message).ConfigureAwait(false); throw; } catch(InternetDocumentClientCreateError err) { await _notifier.NotifyError(err.Message).ConfigureAwait(false); throw; } catch(InternetDocumentEdkCreateError err) { await _notifier.NotifyError(err.Message).ConfigureAwait(false); throw; } catch(Exception err) { await _notifier.NotifyError(err.Message).ConfigureAwait(false); throw; } } } }