public int Create(NewModel model, int creatorId) { return -1; }
public int Create(NewModel model, int creatorId) { Task task = new Task(); task.Publisher = session.Load<User>(creatorId); task.Project = session.Load<Project>(model.CurrentProject.TailSelectedProject.Id); addParent(task, model.TaskItem.Parent); setAccepter(task, model.TaskItem.Accepter); model.TaskItem.Fill(task); task.Publish(); session.Save(task); session.Flush(); // important: to ensure the task is published first and then assigned later! if (model.TaskItem.Owner.Id.HasValue) { task.Owner = session.Load<User>(model.TaskItem.Owner.Id.Value); task.Assign(); } return task.Id; }
public ActionResult New(int? projectId, int? parentId) { NewModel model = new NewModel(); fillNewModel(model, projectId, parentId); return View(model); }
private void fillNewModel(NewModel model, int? projectId, int? parentId) { model.TaskItem = new FullItemModel(); if (parentId.HasValue) { //TODO: need check first? or return null from service? model.TaskItem.Parent = _taskService.GetLite(parentId.Value); } if (projectId == null) { if (Request.Cookies[CookieKey.PrevProjectInTaskNew] != null) { projectId = int.Parse(Request.Cookies[CookieKey.PrevProjectInTaskNew].Value); } else { model.CurrentProject = _projectService.GetDropdownlistLink(userHelper.CurrentUserId.Value); projectId = model.CurrentProject.TailSelectedProject.Id; } } else { model.CurrentProject = _projectService.GetDropdownlistLink(userHelper.CurrentUserId.Value, projectId.Value); } int intProjectId = projectId.Value; model.CurrentProject = _projectService.GetDropdownlistLink(userHelper.CurrentUserId.Value, intProjectId); model.AllDifficulties = _projectConfigService.GetDifficulties(intProjectId); model.Owners = _userService.GetOwners(intProjectId); model.Accepters = _userService.GetAccepters(projectId.Value); model.AllPriorities = _projectConfigService.GetPriorities(intProjectId); //TODO: duplicated with model.CurrentProject? model.TaskItem.Project = new FFLTask.SRV.ViewModel.Project.FullItemModel { LiteItem = new FFLTask.SRV.ViewModel.Project.LiteItemModel { Id = intProjectId } }; }
private ActionResult redirectAfterNew(NewModel model, int taskId) { switch (model.Redirect) { case RedirectPage.Current: return RedirectToAction("Edit", new { taskId = taskId }); case RedirectPage.Brother: return RedirectToAction("New", new { parentId = model.TaskItem.Parent.Id }); case RedirectPage.Child: return RedirectToAction("New", new { parentId = taskId }); case RedirectPage.List: return RedirectToAction("List", new { projectId = model.CurrentProject.TailSelectedProject.Id }); case RedirectPage.Other: return RedirectToAction("New"); //TODO: default: throw new Exception(); } }
public ActionResult New(NewModel model, IList<HttpPostedFileBase> file) { if (model.IdOrName == SearchBy.Name) { string strSelectedParentId = Request.Form["selectedParentTaskId"]; if (!string.IsNullOrEmpty(strSelectedParentId)) { model.TaskItem.Parent.Id = Convert.ToInt32(Request.Form["selectedParentTaskId"]); } //TODO: should use a specific viewmodel for parent task search ModelState.Remove("TaskItem.Parent.Id"); } int projectId = model.CurrentProject.TailSelectedProject.Id; int? parentId = model.TaskItem.Parent.Id; ModelState.Remove("TaskItem.Parent.Title"); if (!ModelState.IsValid) { fillNewModel(model, projectId, parentId); return View(model); } if (model.TaskItem.LiteItem.Virtual && model.TaskItem.ExpectedWorkPeriod.HasValue) { fillNewModel(model, projectId, parentId); ModelState.AddModelError("TaskItem.LiteItem.Virtual", "* 虚任务不能包含工时 "); return View(model); } if (getPrivilegeInProject(projectId) != PrivilegeInProject.HasPublish) { //TODO; //throw new NotImplementedException(); } if (parentId.HasValue && string.IsNullOrEmpty(_taskService.GetTitle(parentId.Value))) { fillNewModel(model, projectId, parentId); ViewBag.ShowNotFound = true; return View(model); } int taskId = _taskService.Create(model, userHelper.CurrentUserId.Value); upload(file, taskId); HttpCookie cookie = new HttpCookie(CookieKey.PrevProjectInTaskNew, projectId.ToString()); Response.Cookies.Add(cookie); return redirectAfterNew(model, taskId); }