示例#1
0
        public async Task ChangeStatus(int idDocumentTask, DocumentTaskStatus documentStatus)
        {
            var now  = DateTime.Now;
            var task = await dbContext
                       .DocumentTasks
                       .Include(it => it.DocumentTaskStates).ThenInclude(it => it.DocumentTaskTypePath)
                       .FirstAsync(it => it.IdDocumentTask == idDocumentTask);

            task.LastModified = now;

            var lastState  = task.DocumentTaskStates.Last();
            var idNextPath = lastState.DocumentTaskTypePath?.IdNextPath;

            var state = new DocumentTaskState
            {
                IdDocumentTask         = idDocumentTask,
                StateDate              = now,
                DocumentTaskStatus     = documentStatus,
                IdDocumentTaskTypePath = idNextPath == null ? null : lastState.IdDocumentTaskTypePath
            };

            dbContext.DocumentTaskStates.Add(state);

            if (documentStatus == DocumentTaskStatus.Accepted && idNextPath.HasValue)
            {
                dbContext.DocumentTaskStates.Add(new DocumentTaskState
                {
                    IdDocumentTask         = idDocumentTask,
                    StateDate              = now,
                    DocumentTaskStatus     = DocumentTaskStatus.RequireAction,
                    IdDocumentTaskTypePath = idNextPath
                });
            }

            if (!idNextPath.HasValue && documentStatus == DocumentTaskStatus.Accepted || documentStatus == DocumentTaskStatus.Denied)
            {
                var documents = await dbContext
                                .Documents
                                .Where(it => it.IdDocumentTask == idDocumentTask)
                                .Select(it => it.IdDocument)
                                .ToListAsync();

                var service = new DocumentsService(dbContext);
                foreach (var idDocument in documents)
                {
                    await service.ChangeStatus(idDocument, DocumentStatus.Blocat);
                }
            }
        }
示例#2
0
        public async Task Add(string userId, int idDocumentTaskType, IEnumerable <int> idDocuments)
        {
            var now  = DateTime.Now;
            var task = new DocumentTask
            {
                UserId             = userId,
                DateAdded          = now,
                LastModified       = now,
                IdDocumentTaskType = idDocumentTaskType,
                Documents          = await dbContext.Documents.Where(it => idDocuments.Contains(it.IdDocument)).ToListAsync()
            };

            var taskType = await dbContext.DocumentTaskTypes.Include(it => it.Paths).FirstAsync(it => it.IdDocumentTaskType == idDocumentTaskType);

            var state = new DocumentTaskState
            {
                StateDate              = now,
                DocumentTaskStatus     = DocumentTaskStatus.RequireAction,
                IdDocumentTaskTypePath = taskType.Paths.First(it => it.Index == 0).IdDocumentTaskTypePath
            };

            task.DocumentTaskStates.Add(state);
            dbContext.DocumentTasks.Add(task);
        }