/// <summary> /// Создает документ и возвращает его идентификатор. /// </summary> /// <param name="material">Материал.</param> /// <returns>Идентификатор созданного документа.</returns> private async Task <int> CreateDocumentAndGetId(MaterialDetailDto material) { Document newDocument = _executor .GetHandler <CreateDocumentFromUploadedFileHandler>() .Process(handler => handler.Execute(material)); DicDocumentStatus workStatus = _executor .GetQuery <GetDocumentStatusByCodeQuery>() .Process(query => query.Execute(DicDocumentStatusCodes.InWork)); newDocument.StatusId = workStatus.Id; int documentId = await _executor .GetCommand <CreateDocumentCommand>() .Process(command => command.ExecuteAsync(newDocument)); DocumentWorkflow initialWorkflow = await _executor .GetQuery <GetInitialDocumentWorkflowQuery>() .Process(query => query.ExecuteAsync(documentId, NiisAmbientContext.Current.User.Identity.UserId)); await _executor .GetCommand <ApplyDocumentWorkflowCommand>() .Process(command => command.ExecuteAsync(initialWorkflow)); if (newDocument.DocumentType == DocumentType.Incoming) { await _executor .GetHandler <GenerateDocumentIncomingNumberHandler>() .Process(c => c.ExecuteAsync(documentId)); } return(documentId); }
/// <summary> /// Выполнение обработчика. /// </summary> /// <param name="documents">Документы.</param> public void Execute(IEnumerable <Domain.Entities.Document.Document> documents) { DicDocumentStatus finishedStatus = Executor .GetQuery <GetDocumentStatusByCodeQuery>() .Process(query => query.Execute(DicDocumentStatusCodes.Completed)); foreach (var document in documents) { document.Status = null; document.StatusId = finishedStatus.Id; } Executor .GetCommand <UpdateDocumentsCommand>() .Process(command => command.Execute(documents)); }