示例#1
0
        /// <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);
        }
示例#2
0
        /// <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));
        }