Example #1
0
        public ActionResult GetRevisionHistory(int workItemId, int revisionId)
        {
            QueryManager manager = new QueryManager();
            BugSummary   summary = manager.ItemByIdForRevision <BugSummary>(workItemId, revisionId);

            return(Content(summary.History));
        }
Example #2
0
        /// <summary>
        /// Produces a CSV represenation of the provided <see cref="BugSummary"/>.
        /// </summary>
        public static string ToCsv(this BugSummary summary)
        {
            StringBuilder builder = new StringBuilder();

            builder.Append(((WorkItemSummary)summary).ToCsv());

            // Priority
            builder.Append(summary.Priority);
            builder.Append(",");

            // Severity
            string severity = summary.Severity.Replace("\"", "\"\"");

            if (severity.IndexOf(",") > -1)
            {
                builder.Append("\"" + severity + "\"");
            }
            else
            {
                builder.Append(severity);
            }

            builder.Append(",");

            return(builder.AppendLine().ToString());
        }
Example #3
0
        public ActionResult Edit(int id, string fromUrl)
        {
            QueryManager manager = new QueryManager();
            BugSummary   item    = manager.ItemById <BugSummary>(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 <BugSummary> data = new MSAgileEditData <BugSummary>();

            data.WorkItem   = item;
            data.PageTitle  = "Bug " + id;
            data.FromUrl    = fromUrl;
            data.States     = item.ValidStates;
            data.Reasons    = item.ValidReasons;
            data.Priorities = item.ValidPriorities;
            data.Severities = item.ValidSeverities;

            return(View(data));
        }
Example #4
0
 /// <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)
 {
     try
     {
         QueryManager manager = new QueryManager();
         BugSummary   summary = manager.ItemById <BugSummary>(id);
         summary.ResolvedBy = UserContext.Current.Name;
         summary.State      = "Closed";
         Save(summary);
     }
     catch (Exception ex)
     {
         throw new SaveException(ex, "Unable to close Bug work item {0}", id);
     }
 }
Example #5
0
        /// <summary>
        /// Overrides the base <see cref="WorkItemManager.NewItem"/> method to include the severity and priority fields.
        /// </summary>
        public override WorkItemSummary NewItem()
        {
            BugSummary summary = new BugSummary();
            WorkItem item = base.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]);

            // Check if it Severity exists as Agile 4 templates don't have it
            if (item.Fields.Contains("Severity"))
                summary.Severity = summary.ValidSeverities[0];

            return summary;
        }
Example #6
0
        public ActionResult New(string id)
        {
            BugManager manager = new BugManager();
            BugSummary summary = (BugSummary)manager.NewItem();

            if (!string.IsNullOrWhiteSpace(id))
            {
                summary.Title = id;
            }

            MSAgileEditData <BugSummary> data = new MSAgileEditData <BugSummary>();

            data.PageTitle  = "New bug";
            data.States     = summary.ValidStates;
            data.Reasons    = summary.ValidReasons;
            data.Priorities = summary.ValidPriorities;
            data.Severities = summary.ValidSeverities;
            data.WorkItem   = summary;

            return(View("Edit", data));
        }
Example #7
0
        /// <summary>
        /// Overrides the base <see cref="WorkItemManager.NewItem"/> method to include the severity and priority fields.
        /// </summary>
        public override WorkItemSummary NewItem()
        {
            BugSummary summary = new BugSummary();
            WorkItem   item    = base.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]);
            }

            // Check if it Severity exists as Agile 4 templates don't have it
            if (item.Fields.Contains("Severity"))
            {
                summary.Severity = summary.ValidSeverities[0];
            }

            return(summary);
        }
Example #8
0
        public ActionResult Edit(BugSummary item,string fromUrl)
        {
            BugManager manager = new BugManager();

            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();
                BugSummary summary = queryManager.ItemById<BugSummary>(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.Severity = item.Severity;
                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<BugSummary> data = new MSAgileEditData<BugSummary>();
                data.WorkItem = summary;
                data.PageTitle = "Bug " + item.Id;
                data.FromUrl = fromUrl;
                data.States = summary.ValidStates;
                data.Reasons = summary.ValidReasons;
                data.Priorities = summary.ValidPriorities;
                data.Severities = summary.ValidSeverities;

                return View(data);
            }
        }
Example #9
0
        public ActionResult New(BugSummary item)
        {
            BugManager manager = new BugManager();

            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();
                BugSummary   summary      = queryManager.ItemById <BugSummary>(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.Severity      = item.Severity;
                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 <BugSummary> data = new MSAgileEditData <BugSummary>();
                data.WorkItem   = summary;
                data.PageTitle  = "Bug " + item.Id;
                data.States     = summary.ValidStates;
                data.Reasons    = summary.ValidReasons;
                data.Priorities = summary.ValidPriorities;
                data.Severities = summary.ValidSeverities;

                return(View(data));
            }
        }