2023-01-24 08:45:13 -07:00

79 lines
3.9 KiB
C#

using Adaptation.FileHandlers.json.WorkItems;
using System;
namespace Adaptation.FileHandlers.json.ViewModels;
public class WorkItem
{
public string AreaPath { get; set; } // { init; get; }
public string AssignedToDisplayName { get; set; } // { init; get; }
public int CommentCount { get; set; } // { init; get; }
public string CreatedDate { get; set; } // { init; get; }
public string ClosedDate { get; set; } // { init; get; }
public string Description { get; set; } // { init; get; }
public string Discussion { get; set; } // { init; get; }
public string Effort { get; set; } // { init; get; }
public string HypertextReference { get; set; } // { init; get; }
public int Id { get; set; } // { init; get; }
public string IterationPath { get; set; } // { init; get; }
public string Req { get; set; } // { init; get; }
public string ResolvedDate { get; set; } // { init; get; }
public string Priority { get; set; } // { init; get; }
public string State { get; set; } // { init; get; }
public string Tags { get; set; } // { init; get; }
public string TargetDate { get; set; } // { init; get; }
public string Title { get; set; } // { init; get; }
public string WorkItemType { get; set; } // { init; get; }
public WorkItem(Root raw)
{
string req;
string[] words;
if (string.IsNullOrEmpty(raw.Fields.SystemHistory))
words = Array.Empty<string>();
else
words = raw.Fields.SystemHistory.Split(' ');
if (words.Length < 3 || words[0] != "Req" || words[1] != ":")
req = raw.Id.ToString();
else
req = words[2].Split('<')[0];
string systemAreaPath = raw.Fields.SystemAreaPath.Replace(@"Mesa_FI\", string.Empty);
string iterationPath = raw.Fields.SystemIterationPath.Replace(@"Mesa_FI\", string.Empty);
string hypertextReference = string.IsNullOrEmpty(raw.Links?.Html?.Href) ? string.Empty : raw.Links.Html.Href;
string systemAssignedToDisplayName = raw.Fields.SystemAssignedTo is null ? string.Empty : raw.Fields.SystemAssignedTo.DisplayName;
string effort = raw.Fields.MicrosoftVSTSSchedulingEffort < 0.1 ? "" : Math.Floor(raw.Fields.MicrosoftVSTSSchedulingEffort).ToString("0");
string createdDate = raw.Fields.SystemCreatedDate == DateTime.MinValue ? string.Empty : raw.Fields.SystemCreatedDate.ToString("dd-MMM-yy");
string closedDate = raw.Fields.MicrosoftVSTSCommonClosedDate == DateTime.MinValue ? string.Empty : raw.Fields.MicrosoftVSTSCommonClosedDate.ToString("dd-MMM-yy");
string resolvedDate = raw.Fields.MicrosoftVSTSCommonResolvedDate == DateTime.MinValue ? string.Empty : raw.Fields.MicrosoftVSTSCommonResolvedDate.ToString("dd-MMM-yy");
string targetDate = raw.Fields.MicrosoftVSTSSchedulingTargetDate == DateTime.MinValue ? string.Empty : raw.Fields.MicrosoftVSTSSchedulingTargetDate.ToString("dd-MMM-yy");
string priority = raw.Fields.SystemWorkItemType == "Bug" ? "BugFix" : raw.Fields.MicrosoftVSTSCommonPriority switch
{
1 => "High",
2 => "Med",
3 => "Low",
4 => "TBD",
_ => throw new NotImplementedException(),
};
AreaPath = systemAreaPath;
AssignedToDisplayName = systemAssignedToDisplayName;
CommentCount = raw.Fields.SystemCommentCount;
CreatedDate = createdDate;
ClosedDate = closedDate;
Description = raw.Fields.SystemDescription;
Discussion = raw.Fields.SystemHistory;
Effort = effort;
HypertextReference = hypertextReference;
Id = raw.Id;
IterationPath = iterationPath;
Priority = priority;
Req = req;
ResolvedDate = resolvedDate;
State = raw.Fields.SystemState;
Tags = raw.Fields.SystemTags;
TargetDate = targetDate;
Title = raw.Fields.SystemTitle;
WorkItemType = raw.Fields.SystemWorkItemType;
}
}