-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWorkItemAdapter.cs
More file actions
111 lines (93 loc) · 4.03 KB
/
WorkItemAdapter.cs
File metadata and controls
111 lines (93 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using AzureDevopsTracker.Dtos;
using AzureDevopsTracker.Entities;
using AzureDevopsTracker.Extensions;
using AzureDevopsTracker.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
namespace AzureDevopsTracker.Adapters
{
internal class WorkItemAdapter : IWorkItemAdapter
{
public WorkItemDto ToWorkItemDto(WorkItem workItem)
{
if (workItem is null) return null;
return new WorkItemDto()
{
Id = workItem.Id,
CreatedAt = workItem.CreatedAt,
AssignedTo = workItem.AssignedTo,
CreatedBy = workItem.CreatedBy,
CurrentStatus = workItem.CurrentStatus,
TeamProject = workItem.TeamProject,
AreaPath = workItem.AreaPath,
IterationPath = workItem.IterationPath,
Title = workItem.Title,
Type = workItem.Type,
Effort = workItem.Effort,
StoryPoints = workItem.StoryPoints,
OriginalEstimate = workItem.OriginalEstimate,
WorkItemParentId = workItem.WorkItemParentId,
Activity = workItem.Activity,
Tags = workItem.Tags is null ? new List<string>() : workItem.Tags.Split(';').ToList(),
WorkItemsChangesDto = ToWorkItemsChangeDto(workItem.WorkItemsChanges.OrderBy(x => x.CreatedAt).ToList()),
TimesByStateDto = ToTimeByStatesDto(workItem.CalculateTotalTimeByState().ToList()),
};
}
public List<WorkItemDto> ToWorkItemsDto(List<WorkItem> workItems)
{
var workItemsDto = new List<WorkItemDto>();
if (workItems is null) return workItemsDto;
workItems.ForEach(
workItem =>
workItemsDto.Add(ToWorkItemDto(workItem)));
return workItemsDto
.ToList();
}
public static WorkItemChangeDto ToWorkItemChangeDto(WorkItemChange workIteChange)
{
if (workIteChange is null) return null;
return new WorkItemChangeDto()
{
NewDate = workIteChange.NewDate,
NewState = workIteChange.NewState,
OldState = workIteChange.OldState,
OldDate = workIteChange.OldDate,
ChangedBy = workIteChange.ChangedBy
};
}
public static List<WorkItemChangeDto> ToWorkItemsChangeDto(List<WorkItemChange> workItemsChanges)
{
var workItemsChangeDto = new List<WorkItemChangeDto>();
if (workItemsChanges is null) return workItemsChangeDto;
workItemsChanges.ForEach(
workItemsChange =>
workItemsChangeDto.Add(ToWorkItemChangeDto(workItemsChange)));
return workItemsChangeDto
.Where(w => w is not null)
.ToList();
}
public static TimeByStateDto ToTimeByStateDto(TimeByState workItemStatusTime)
{
if (workItemStatusTime is null) return null;
return new TimeByStateDto()
{
CreatedAt = workItemStatusTime.CreatedAt,
State = workItemStatusTime.State,
TotalTime = TimeSpan.FromSeconds(workItemStatusTime.TotalTime).ToTextTime(),
TotalWorkedTime = TimeSpan.FromSeconds(workItemStatusTime.TotalWorkedTime).ToTextTime()
};
}
public static List<TimeByStateDto> ToTimeByStatesDto(List<TimeByState> workItemStatusTimes)
{
var workItemStatusTimeDto = new List<TimeByStateDto>();
if (workItemStatusTimes is null) return workItemStatusTimeDto;
workItemStatusTimes.ForEach(
workItemStatusTime =>
workItemStatusTimeDto.Add(ToTimeByStateDto(workItemStatusTime)));
return workItemStatusTimeDto
.Where(w => w is not null)
.ToList();
}
}
}