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); }
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); }
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")); }
public async Task <IActionResult> ViewUpdate(int id) { ViewUpdateTaskIOModel outputModel = await tasksService.GetTaskByIdAsync(id); return(View(outputModel)); }