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));
        }
Exemple #2
0
        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));
        }