private async Task <TaskViewModel> CreateTaskViewModel(TaskViewModelArgs args) { var taskProperties = new TaskPropertiesViewModel { ProjectTask = args.ProjectTask, TaskPriorities = new SelectList(await _tasksEndpoint.GetAllTaskPriorities(), "Id", "Name", 1), TaskStatuses = new SelectList(await _tasksEndpoint.GetAllTaskStatuses(), "Id", "Name", 1), TaskTypes = new SelectList(await _tasksEndpoint.GetAllTaskTypes(), "Id", "Name", 1) }; var model = new TaskViewModel { BannerMessage = args.BannerMessage, Comments = await GetComments(args.Comments, args.ProjectTask.Id), CurrentTaskStatus = args.CurrentStatusId != 0 ? args.CurrentStatusId : args.ProjectTask.TaskStatusId, NewComment = args.NewComment, ParentTask = await _tasksEndpoint.GetTask(args.ProjectTask.ParentTaskId ?? 0), Project = args.Project ?? await _projectsEndpoint.GetProject(args.ProjectTask.ProjectId), ProjectId = args.ProjectTask.ProjectId, ProjectTask = args.ProjectTask, SubTasks = await _tasksEndpoint.GetSubTasks(args.ProjectTask.Id), TaskProperties = taskProperties }; return(model); }
public async Task <IActionResult> Edit( [Bind( "Id,Description,Name,Created,ProjectId,ParentTaskId,TaskRef,TaskStatusId,TaskTypeId,TaskPriorityId,FixedInRelease")] TaskModel projectTask, int currentTaskStatus, string newComment, [Bind("Id,Comment")] IList <TaskCommentModel> comments, string addSubTask) { var taskViewModelArgs = new TaskViewModelArgs { ProjectTask = projectTask, CurrentStatusId = currentTaskStatus, Comments = comments, NewComment = newComment }; if (ModelState.IsValid) { if (projectTask.IsClosed() && await HasIncompleteSubTasks(projectTask.Id)) { taskViewModelArgs.BannerMessage = "Update Failed: Cannot complete a task that still has open sub tasks."; } else { projectTask.UserId = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; await _tasksEndpoint.UpdateTask(projectTask); await _commentsEndpoint.UpdateComments(comments); if (!string.IsNullOrWhiteSpace(newComment)) { await _commentsEndpoint.AddComment(new TaskCommentModel { TaskId = projectTask.Id, Comment = newComment, UserId = projectTask.UserId }); } if (!string.IsNullOrWhiteSpace(addSubTask)) { return(RedirectToAction("Create", new { id = addSubTask })); } if (projectTask.IsClosed() && projectTask.TaskStatusId != currentTaskStatus) { if (projectTask.HasParentTask()) { // return to the parent task return(RedirectToAction("Edit", new { id = projectTask.ParentTaskId })); } else { // return to the main index page return(RedirectToAction("Index")); } } return(RedirectToAction("Edit", projectTask.Id)); } } var model = await CreateTaskViewModel(taskViewModelArgs); return(View(model)); }