public ActionResult ChangeTaskStatus(ChangeTaskStatusViewModel vm) { if (ModelState.IsValid) { var selectedTask = _taskRepository.Get(vm.TaskId); if (selectedTask != null) { selectedTask.TaskStatus = vm.TaskStatus; selectedTask.UpdatedByUserId = WebUser.Id; _taskRepository.Update(selectedTask); _unitOfWork.Commit(); // Add Task Effort var effort = new TaskEffort { TaskId = selectedTask.Id, Effort = vm.Effort, Comments = vm.Comments, CreatedByUserId = WebUser.Id }; _taskEffortRepository.Create(effort); _unitOfWork.Commit(); return(RedirectToAction("Details", "Projects", new { Id = selectedTask.ProjectId })); } } return(View(vm)); }
public ActionResult ChangeTaskStatus(ChangeTaskStatusViewModel vm) { if (ModelState.IsValid) { var selectedTask = _taskRepository.Get(vm.Id, "Assignee.User.Person"); if (selectedTask != null) { selectedTask.TaskStatus = vm.TaskStatus; selectedTask.UpdatedByUserId = WebUser.Id; _taskRepository.Update(selectedTask); _unitOfWork.Commit(); #if !DEBUG _emailComposerService.TaskUpdated(selectedTask.Id); #endif // Add Task Effort var effort = new TaskEffort { TaskId = selectedTask.Id, Effort = vm.Effort, Comments = vm.Comments, CreatedByUserId = WebUser.Id }; _taskEffortRepository.Create(effort); _unitOfWork.Commit(); // Log as a Task Activity var activity = new TaskActivity { TaskId = selectedTask.Id, Title = "Changed Status", Comment = $"{WebUser.Name} changed status of the Task at {DateTime.UtcNow.ToString("G")} to state {selectedTask.TaskStatus}, with comments - {vm.Comments}", CreatedByUserId = WebUser.Id }; _taskActivityRepository.Create(activity); _unitOfWork.Commit(); // Notify Creator of the Task var createdByUser = _userRepository.Get(selectedTask.CreatedByUserId); if (createdByUser != null) { var message = $"{selectedTask.Title} has been changed to {selectedTask.TaskStatus}"; _notificationService.NotifyUser("Task Status Changed", message, createdByUser.Code); } return(RedirectToAction("Details", "Tasks", new { selectedTask.Id })); } } return(View(vm)); }