/// <summary> /// Purpose is to load up the lists from one spot, like task types, task priorities, etc. /// </summary> /// <returns></returns> private EditTaskViewModel GetInitialEditModel(int memberID) { var result = new EditTaskViewModel(); var memberProjects = _genericRepo.FindAll<Project>(); if (memberProjects != null && memberProjects.Count() > 0) result.Projects = memberProjects.Select(x => new SelectListItem { Text = x.Title, Value = x.ProjectID.ToString() }); var taskPriorities = _genericRepo.FindAll<TaskPriority>(); if (taskPriorities != null && taskPriorities.Count() > 0) result.TaskPriorities = taskPriorities.Select(x => new SelectListItem { Text = x.Label, Value = x.TaskPriorityID.ToString() }); var taskTypes = _genericRepo.FindAll<TaskType>(); if (taskTypes != null && taskTypes.Count() > 0) result.TaskTypes = taskTypes.Select(x => new SelectListItem { Text = x.Label, Value = x.TaskTypeID.ToString() }); return result; }
public ActionResult Save(EditTaskViewModel model) { model.MemberID = CurrentMember.MemberID; _service.Save(model); if (!String.IsNullOrEmpty(model.ReturnController)) { return RedirectToAction(model.ReturnAction, model.ReturnController); } else if (model.TaskID == model.ParentTaskID) { return RedirectToAction("Index"); } else { return RedirectToAction("Edit", new { id = model.ParentTaskID }); } }
public void Save(EditTaskViewModel model) { // TODO: Wrap this in a transaction! var task = _taskRepo.GetTask(model.TaskID) ?? new Task(); task.Title = model.Title; task.Description = model.Description; task.EstimatedHours = model.EstimatedHours; task.ActualHours = model.ActualHours; task.DueDate = model.DueDate; task.TaskPriorityID = model.TaskPriorityID; task.TaskTypeID = model.TaskTypeID; task.ProjectID = model.ProjectID; task.Reference = model.Reference; task.IsComplete = model.IsComplete; task.RootTaskID = model.RootTaskID; task.ParentTaskID = model.ParentTaskID; task.DateStarted = model.DateStarted; task.MemberNames = String.Empty; //reset this value, it'll get set appropriately below if (task.TaskID == 0) { task.DateCreated = DateTime.Now; task.CreatedBy = model.MemberID; if (String.IsNullOrEmpty(task.Description)) task.Description = task.Title; } _taskRepo.SaveTask(task); //at this point i need to check, if the root and parent are both zero, //that means that this task is a brand new top level task that we just created, //so let's assign the current tasks id to those and save again, otherwise //we should be good to go, the assumption is that we're creating a new subtask, //and hopefully we've done our job. if (task.ParentTaskID == 0 && task.RootTaskID == 0) { task.ParentTaskID = task.TaskID; task.RootTaskID = task.TaskID; _taskRepo.SaveTask(task); } //assoc task to member _taskRepo.RemoveTaskMembers(task.TaskID); if (model.SelectedTaskMemberIds.Length > 0) { foreach (var memberID in model.SelectedTaskMemberIds) { _memberRepo.AssociateTask(memberID, task.TaskID); _notificationService.Notify(NotificationTypes.NewTaskAssignedToMember, memberID, task.TaskID); } var memberFirstNames = _memberRepo.GetMemberFirstNames(model.SelectedTaskMemberIds); task.MemberNames = String.Join(",", memberFirstNames); _taskRepo.SaveTask(task); } if (String.IsNullOrEmpty(model.ReturnController) || model.ReturnController.Equals("Tasks", StringComparison.OrdinalIgnoreCase)) { _memberRepo.AssociateTask(model.MemberID, task.TaskID); } }