1+ using AzureDevopsStateTracker . DTOs ;
2+ using AzureDevopsStateTracker . Entities ;
3+ using AzureDevopsStateTracker . Interfaces ;
4+ using System . Collections . Generic ;
5+ using System . Linq ;
6+
7+ namespace AzureDevopsStateTracker . Adapters
8+ {
9+ internal class WorkItemAdapter : IWorkItemAdapter
10+ {
11+ public WorkItemDTO ToWorkItemDTO ( WorkItem workItem )
12+ {
13+ if ( workItem == null ) return null ;
14+
15+ return new WorkItemDTO ( )
16+ {
17+ Id = workItem . Id ,
18+ CreatedAt = workItem . CreatedAt ,
19+ AssignedTo = workItem . AssignedTo ,
20+ CreatedBy = workItem . CreatedBy ,
21+ CurrentStatus = workItem . CurrentStatus ,
22+ TeamProject = workItem . TeamProject ,
23+ AreaPath = workItem . AreaPath ,
24+ IterationPath = workItem . IterationPath ,
25+ Title = workItem . Title ,
26+ Type = workItem . Type ,
27+ Effort = workItem . Effort ,
28+ StoryPoints = workItem . StoryPoints ,
29+ OriginalEstimate = workItem . OriginalEstimate ,
30+ WorkItemParentId = workItem . WorkItemParentId ,
31+ Activity = workItem . Activity ,
32+ Tags = workItem . Tags == null ? new List < string > ( ) : workItem . Tags . Split ( ';' ) . ToList ( ) ,
33+ WorkItemsChangesDTO = ToWorkItemsChangeDTO ( workItem . WorkItemsChanges . OrderBy ( x => x . CreatedAt ) . ToList ( ) ) ,
34+ TimesByStateDTO = ToTimeByStatesDTO ( workItem . CalculateTotalTimeByState ( ) . ToList ( ) ) ,
35+ } ;
36+ }
37+
38+ public List < WorkItemDTO > ToWorkItemsDTO ( List < WorkItem > workItems )
39+ {
40+ var workItemsDTO = new List < WorkItemDTO > ( ) ;
41+
42+ if ( workItems == null ) return workItemsDTO ;
43+
44+ workItems . ForEach (
45+ workItem =>
46+ workItemsDTO . Add ( ToWorkItemDTO ( workItem ) ) ) ;
47+
48+ return workItemsDTO
49+ . ToList ( ) ;
50+ }
51+
52+ public WorkItemChangeDTO ToWorkItemChangeDTO ( WorkItemChange workIteChange )
53+ {
54+ if ( workIteChange == null ) return null ;
55+
56+ return new WorkItemChangeDTO ( )
57+ {
58+ NewDate = workIteChange . NewDate ,
59+ NewState = workIteChange . NewState ,
60+ OldState = workIteChange . OldState ,
61+ OldDate = workIteChange . OldDate ,
62+ ChangedBy = workIteChange . ChangedBy
63+ } ;
64+ }
65+
66+ public List < WorkItemChangeDTO > ToWorkItemsChangeDTO ( List < WorkItemChange > workItemsChanges )
67+ {
68+ var workItemsChangeDTO = new List < WorkItemChangeDTO > ( ) ;
69+
70+ if ( workItemsChanges == null ) return workItemsChangeDTO ;
71+
72+ workItemsChanges . ForEach (
73+ workItemsChange =>
74+ workItemsChangeDTO . Add ( ToWorkItemChangeDTO ( workItemsChange ) ) ) ;
75+
76+ return workItemsChangeDTO
77+ . Where ( w => w != null )
78+ . ToList ( ) ;
79+ }
80+
81+ public TimeByStateDTO ToTimeByStateDTO ( TimeByState workItemStatusTime )
82+ {
83+ if ( workItemStatusTime == null ) return null ;
84+
85+ return new TimeByStateDTO ( )
86+ {
87+ CreatedAt = workItemStatusTime . CreatedAt ,
88+ State = workItemStatusTime . State ,
89+ //TotalTime = workItemStatusTime.TotalTimeText,
90+ //TotalWorkedTime = workItemStatusTime.TotalWorkedTimeText
91+ } ;
92+ }
93+
94+ public List < TimeByStateDTO > ToTimeByStatesDTO ( List < TimeByState > workItemStatusTimes )
95+ {
96+ var workItemStatusTimeDTO = new List < TimeByStateDTO > ( ) ;
97+
98+ if ( workItemStatusTimes == null ) return workItemStatusTimeDTO ;
99+
100+ workItemStatusTimes . ForEach (
101+ workItemStatusTime =>
102+ workItemStatusTimeDTO . Add ( ToTimeByStateDTO ( workItemStatusTime ) ) ) ;
103+
104+ return workItemStatusTimeDTO
105+ . Where ( w => w != null )
106+ . ToList ( ) ;
107+ }
108+ }
109+ }
0 commit comments