public ActionResult Edit(int id, string fromUrl) { QueryManager manager = new QueryManager(); TaskSummary item = manager.ItemById <TaskSummary>(id); item.IsNew = false; // Change the user's current project if this work item is different. // The project can be different if they've come from the stored queries page. if (item.ProjectName != UserContext.Current.CurrentProject.Name) { UserContext.Current.ChangeCurrentProject(item.ProjectName); } MSAgileEditData <TaskSummary> data = new MSAgileEditData <TaskSummary>(); data.WorkItem = item; data.PageTitle = "Task " + id; data.FromUrl = fromUrl; data.States = item.ValidStates; data.Reasons = item.ValidReasons; data.Priorities = item.ValidPriorities; data.Severities = item.ValidSeverities; return(View(data)); }
/// <summary> /// Overrides the base <see cref="WorkItemManager.NewItem"/> method to include remaining work,completed work hours and priority fields. /// </summary> public override WorkItemSummary NewItem() { TaskSummary summary = new TaskSummary(); WorkItem item = CreateWorkItem(summary.WorkItemType, summary); summary.PopulateAllowedValues(item); // Check if it Priority exists as Agile 4 templates don't have it if (item.Fields.Contains("Priority")) { summary.Priority = int.Parse(summary.ValidPriorities[0]); } if (item.Fields.Contains("Remaining Work") && item.Fields["Remaining Work"].Value != null) { summary.EstimatedHours = item.Fields["Remaining Work"].Value.ToString().ToDoubleOrDefault(); } if (item.Fields.Contains("Completed Work") && item.Fields["Completed Work"].Value != null) { summary.CompletedHours = item.Fields["Completed Work"].Value.ToString().ToDoubleOrDefault(); } // No "Remaining Work" field exists when the state is new. return(summary); }
/// <summary> /// Produces a CSV represenation of the provided <see cref="TaskSummary"/>. /// </summary> public static string ToCsv(this TaskSummary summary) { StringBuilder builder = new StringBuilder(); builder.Append(((WorkItemSummary)summary).ToCsv()); // Priority builder.Append(summary.Priority); builder.Append(","); return(builder.AppendLine().ToString()); }
/// <summary> /// Overrides the base <see cref="WorkItemManager.Close"/> method to modify the behaviour so that a resolved by field is included. /// </summary> public override void Close(int id) { QueryManager manager = new QueryManager(); try { TaskSummary summary = manager.ItemById <TaskSummary>(id); summary.ResolvedBy = UserContext.Current.Name; summary.State = "Closed"; Save(summary); } catch (Exception ex) { throw new SaveException(ex, "Unable to close Task work item {0}", id); } }
public ActionResult New(string id) { TaskManager manager = new TaskManager(); TaskSummary summary = (TaskSummary)manager.NewItem(); if (!string.IsNullOrWhiteSpace(id)) { summary.Title = id; } MSAgileEditData <TaskSummary> data = new MSAgileEditData <TaskSummary>(); data.PageTitle = "New task"; data.States = summary.ValidStates; data.Reasons = summary.ValidReasons; data.Priorities = summary.ValidPriorities; data.Severities = summary.ValidSeverities; data.WorkItem = summary; return(View("Edit", data)); }
/// <summary> /// Overrides the base <see cref="WorkItemManager.NewItem"/> method to include remaining work,completed work hours and priority fields. /// </summary> public override WorkItemSummary NewItem() { TaskSummary summary = new TaskSummary(); WorkItem item = CreateWorkItem(summary.WorkItemType, summary); summary.PopulateAllowedValues(item); // Check if it Priority exists as Agile 4 templates don't have it if (item.Fields.Contains("Priority")) summary.Priority = int.Parse(summary.ValidPriorities[0]); if (item.Fields.Contains("Remaining Work") && item.Fields["Remaining Work"].Value != null) summary.EstimatedHours = item.Fields["Remaining Work"].Value.ToString().ToDoubleOrDefault(); if (item.Fields.Contains("Completed Work") && item.Fields["Completed Work"].Value != null) summary.CompletedHours = item.Fields["Completed Work"].Value.ToString().ToDoubleOrDefault(); // No "Remaining Work" field exists when the state is new. return summary; }
public ActionResult New(TaskSummary item) { TaskManager manager = new TaskManager(); try { item.CreatedBy = UserContext.Current.Name; item.IsNew = true; manager.Save(item); // item.Id is updated // Save the files once it's saved (as we can't add an AttachmentsCollection as it has no constructors) if (Request.Files.Count > 0) { try { // Save to the App_Data folder. List <Attachment> attachments = new List <Attachment>(); string filename1 = SaveFile("uploadFile1", item.Id); string filename2 = SaveFile("uploadFile2", item.Id); string filename3 = SaveFile("uploadFile3", item.Id); if (!string.IsNullOrEmpty(filename1)) { attachments.Add(new Attachment(filename1, Request.Form["uploadFile1Comments"])); } if (!string.IsNullOrEmpty(filename2)) { attachments.Add(new Attachment(filename2, Request.Form["uploadFile2Comments"])); } if (!string.IsNullOrEmpty(filename3)) { attachments.Add(new Attachment(filename3, Request.Form["uploadFile3Comments"])); } manager.SaveAttachments(item.Id, attachments); } catch (IOException e) { TempData["Error"] = e.Message; return(RedirectToAction("Edit", new { id = item.Id })); } } return(RedirectToAction("Index")); } catch (SaveException e) { TempData["Error"] = e.Message; // Get the original back, to populate the valid reasons. QueryManager queryManager = new QueryManager(); TaskSummary summary = queryManager.ItemById <TaskSummary>(item.Id); summary.IsNew = false; // Repopulate from the POST'd data summary.Title = item.Title; summary.State = item.State; summary.Reason = item.Reason; summary.Priority = item.Priority; summary.Description = item.Description; summary.AssignedTo = item.AssignedTo; summary.AreaId = item.AreaId; summary.AreaPath = item.AreaPath; summary.IterationId = item.IterationId; summary.IterationPath = item.IterationPath; MSAgileEditData <TaskSummary> data = new MSAgileEditData <TaskSummary>(); data.WorkItem = summary; data.PageTitle = "Task " + item.Id; data.States = summary.ValidStates; data.Reasons = summary.ValidReasons; data.Priorities = summary.ValidPriorities; data.Severities = summary.ValidSeverities; return(View(data)); } }
public ActionResult Edit(TaskSummary item, string fromUrl) { TaskManager manager = new TaskManager(); try { item.IsNew = false; manager.Save(item); // Save the files once it's saved (as we can't add an AttachmentsCollection as it has no constructors) if (Request.Files.Count > 0) { try { // Save to the App_Data folder. List<Attachment> attachments = new List<Attachment>(); string filename1 = SaveFile("uploadFile1", item.Id); string filename2 = SaveFile("uploadFile2", item.Id); string filename3 = SaveFile("uploadFile3", item.Id); if (!string.IsNullOrEmpty(filename1)) { attachments.Add(new Attachment(filename1, Request.Form["uploadFile1Comments"])); } if (!string.IsNullOrEmpty(filename2)) { attachments.Add(new Attachment(filename2, Request.Form["uploadFile2Comments"])); } if (!string.IsNullOrEmpty(filename3)) { attachments.Add(new Attachment(filename3, Request.Form["uploadFile3Comments"])); } manager.SaveAttachments(item.Id, attachments); } catch (IOException e) { TempData["Error"] = e.Message; return RedirectToAction("Edit", new { id = item.Id }); } } if (string.IsNullOrEmpty(fromUrl)) return RedirectToAction("View", new { id = item.Id }); else return Redirect(fromUrl); } catch (SaveException e) { TempData["Error"] = e.Message; // Get the original back, to populate the valid reasons. QueryManager queryManager = new QueryManager(); TaskSummary summary = queryManager.ItemById<TaskSummary>(item.Id); summary.IsNew = false; // Repopulate from the POST'd data summary.Title = item.Title; summary.State = item.State; summary.Reason = item.Reason; summary.Priority = item.Priority; summary.Description = item.Description; summary.AssignedTo = item.AssignedTo; summary.AreaId = item.AreaId; summary.AreaPath = item.AreaPath; summary.IterationId = item.IterationId; summary.IterationPath = item.IterationPath; MSAgileEditData<TaskSummary> data = new MSAgileEditData<TaskSummary>(); data.WorkItem = summary; data.PageTitle = "Task " + item.Id; data.FromUrl = fromUrl; data.States = summary.ValidStates; data.Reasons = summary.ValidReasons; data.Priorities = summary.ValidPriorities; data.Severities = summary.ValidSeverities; return View(data); } }