Пример #1
0
        public async Task <int> UpdateTaskAsync(ViewUpdateTaskIOModel inputModel, string userId)
        {
            CaseTask taskRecordToUpdate = await dbContext.Tasks
                                          .FirstOrDefaultAsync(t => t.Id == inputModel.Id);

            List <FieldModification> fieldModifications = new List <FieldModification>();

            if (taskRecordToUpdate.TypeId != inputModel.TypeId)
            {
                fieldModifications.Add(new FieldModification
                {
                    FieldName = "Type",
                    OldValue  = await dbContext.TaskTypes.Where(tt => tt.Id == taskRecordToUpdate.TypeId).Select(tt => tt.Type).FirstOrDefaultAsync(),
                    NewValue  = await dbContext.TaskTypes.Where(tt => tt.Id == inputModel.TypeId).Select(tt => tt.Type).FirstOrDefaultAsync(),
                });
            }

            if (taskRecordToUpdate.StatusId != inputModel.StatusId)
            {
                fieldModifications.Add(new FieldModification
                {
                    FieldName = "Status",
                    OldValue  = await dbContext.TaskStatuses.Where(ts => ts.Id == taskRecordToUpdate.StatusId).Select(ts => ts.Status).FirstOrDefaultAsync(),
                    NewValue  = await dbContext.TaskStatuses.Where(ts => ts.Id == inputModel.StatusId).Select(ts => ts.Status).FirstOrDefaultAsync(),
                });
            }

            taskRecordToUpdate.TypeId         = inputModel.TypeId;
            taskRecordToUpdate.LastUpdatedUtc = DateTime.UtcNow;
            taskRecordToUpdate.StatusId       = inputModel.StatusId;

            if (fieldModifications.Count > 0)
            {
                TaskModificationLogRecord modificationLogRecord = new TaskModificationLogRecord
                {
                    ModificationTime = DateTime.UtcNow,
                    UserId           = userId,
                    TaskId           = taskRecordToUpdate.Id,
                    ModifiedFields   = fieldModifications,
                };

                dbContext.TaskModificationLogRecords.Add(modificationLogRecord);
            }

            dbContext.Tasks.Update(taskRecordToUpdate);

            int saveResult = await dbContext.SaveChangesAsync();

            return(saveResult);
        }
Пример #2
0
        public async Task <ViewUpdateTaskIOModel> GetTaskByIdAsync(int id)
        {
            ViewUpdateTaskIOModel outputModel = await dbContext.Tasks
                                                .Select(t => new ViewUpdateTaskIOModel
            {
                Id           = t.Id,
                CreatedOn    = t.ReportedAt,
                StatusId     = t.Status.Id,
                TypeId       = t.Type.Id,
                CaseId       = t.CaseId,
                TaskTypes    = dbContext.TaskTypes.ToArray(),
                TaskStatuses = dbContext.TaskStatuses.ToArray(),
            })
                                                .Where(t => t.Id == id)
                                                .FirstOrDefaultAsync();

            return(outputModel);
        }
Пример #3
0
        public async Task <IActionResult> Update(ViewUpdateTaskIOModel inputModel)
        {
            if (!ModelState.IsValid)
            {
                return(View("Error", new ErrorViewModel()));
            }

            string userId       = usersService.UserManager.GetUserId(User);
            int    updateResult = await tasksService.UpdateTaskAsync(inputModel, userId);

            if (updateResult > 0)
            {
                await usersService.UpdateUserLastActivityDateAsync(userId);

                TempData["TaskUpdatedSuccessfully"] = true;
            }

            return(LocalRedirect($"/Cases/ViewUpdate/{inputModel.CaseId}#tasks-table"));
        }
Пример #4
0
        public async Task <IActionResult> ViewUpdate(int id)
        {
            ViewUpdateTaskIOModel outputModel = await tasksService.GetTaskByIdAsync(id);

            return(View(outputModel));
        }