Skip to content

Commit 6683ed7

Browse files
committed
Updating
1 parent f38a25e commit 6683ed7

16 files changed

+505
-189
lines changed

AzureDevopsStateTracker/Adapters/WorkItemAdapter.cs

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using AzureDevopsStateTracker.DTOs;
22
using AzureDevopsStateTracker.Entities;
33
using AzureDevopsStateTracker.Interfaces;
4+
using System;
45
using System.Collections.Generic;
56
using System.Linq;
67

@@ -20,11 +21,18 @@ public WorkItemDTO ToWorkItemDTO(WorkItem workItem)
2021
CreatedBy = workItem.CreatedBy,
2122
CurrentStatus = workItem.CurrentStatus,
2223
TeamProject = workItem.TeamProject,
24+
AreaPath = workItem.AreaPath,
25+
IterationPath = workItem.IterationPath,
2326
Title = workItem.Title,
2427
Type = workItem.Type,
28+
Effort = workItem.Effort,
29+
StoryPoints = workItem.StoryPoints,
30+
OriginalEstimate = workItem.OriginalEstimate,
31+
WorkItemParentId = workItem.WorkItemParentId,
32+
Activity = workItem.Activity,
33+
Tags = workItem.Tags == null ? new List<string>() : workItem.Tags.Split(';').ToList(),
2534
WorkItemsChangesDTO = ToWorkItemsChangeDTO(workItem.WorkItemsChanges.OrderBy(x => x.CreatedAt).ToList()),
26-
WorkItemsStatusTimeDTO = ToWorkItemsStatusTimeDTO(workItem.WorkItemsStatusTime.OrderBy(x => x.CreatedAt).ToList()),
27-
TotalTimeByState = workItem.CalculateTotalTimeByState()
35+
TimesByStateDTO = ToTimeByStatesDTO(workItem.CalculateTotalTimeByState().ToList()),
2836
};
2937
}
3038

@@ -39,7 +47,6 @@ public List<WorkItemDTO> ToWorkItemsDTO(List<WorkItem> workItems)
3947
workItemsDTO.Add(ToWorkItemDTO(workItem)));
4048

4149
return workItemsDTO
42-
.Where(w => w != null)
4350
.ToList();
4451
}
4552

@@ -52,7 +59,8 @@ public WorkItemChangeDTO ToWorkItemChangeDTO(WorkItemChange workIteChange)
5259
NewDate = workIteChange.NewDate,
5360
NewState = workIteChange.NewState,
5461
OldState = workIteChange.OldState,
55-
OldDate = workIteChange.OldDate
62+
OldDate = workIteChange.OldDate,
63+
ChangedBy = workIteChange.ChangedBy
5664
};
5765
}
5866

@@ -71,30 +79,50 @@ public List<WorkItemChangeDTO> ToWorkItemsChangeDTO(List<WorkItemChange> workIte
7179
.ToList();
7280
}
7381

74-
public WorkItemStatusTimeDTO ToWorkItemStatusTimeDTO(WorkItemStatusTime workItemStatusTime)
82+
public TimeByStateDTO ToTimeByStateDTO(TimeByState workItemStatusTime)
7583
{
7684
if (workItemStatusTime == null) return null;
7785

78-
return new WorkItemStatusTimeDTO()
86+
return new TimeByStateDTO()
7987
{
88+
CreatedAt = workItemStatusTime.CreatedAt,
89+
UpdatedAt = workItemStatusTime.UpdatedAt,
8090
State = workItemStatusTime.State,
81-
TotalTime = workItemStatusTime.TotalTime.ToString()
91+
TotalTime = ToStringTime(new DateTime(workItemStatusTime.TotalTime).TimeOfDay),
92+
TotalWorkedTime = ToStringTime(new DateTime(workItemStatusTime.TotalWorkedTime).TimeOfDay)
8293
};
8394
}
8495

85-
public List<WorkItemStatusTimeDTO> ToWorkItemsStatusTimeDTO(List<WorkItemStatusTime> workItemStatusTimes)
96+
public List<TimeByStateDTO> ToTimeByStatesDTO(List<TimeByState> workItemStatusTimes)
8697
{
87-
var workItemStatusTimeDTO = new List<WorkItemStatusTimeDTO>();
98+
var workItemStatusTimeDTO = new List<TimeByStateDTO>();
8899

89100
if (workItemStatusTimes == null) return workItemStatusTimeDTO;
90101

91102
workItemStatusTimes.ForEach(
92103
workItemStatusTime =>
93-
workItemStatusTimeDTO.Add(ToWorkItemStatusTimeDTO(workItemStatusTime)));
104+
workItemStatusTimeDTO.Add(ToTimeByStateDTO(workItemStatusTime)));
94105

95106
return workItemStatusTimeDTO
96107
.Where(w => w != null)
97108
.ToList();
98109
}
110+
111+
public string ToStringTime(TimeSpan timeSpan)
112+
{
113+
if (timeSpan.Days > 0)
114+
return $@"{timeSpan:%d} Dia(s) {timeSpan:%h}h e {timeSpan:%m}min e {timeSpan:%s}s";
115+
116+
if (timeSpan.Hours > 0)
117+
return $@"{timeSpan:%h}h e {timeSpan:%m}min e {timeSpan:%s}s";
118+
119+
if (timeSpan.Minutes > 0)
120+
return $@"{timeSpan:%m}min e {timeSpan:%s}s";
121+
122+
if (timeSpan.Seconds > 0)
123+
return $@"{timeSpan:%s}s";
124+
125+
return $@"{timeSpan:%hh}:{timeSpan:%mm}:{timeSpan:%ss}";
126+
}
99127
}
100128
}
Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,19 @@
11
using Newtonsoft.Json;
2-
using System;
32

43
namespace AzureDevopsStateTracker.DTOs.Create
54
{
65
public class CreateWorkItemDTO
76
{
87
[JsonProperty("resource")]
9-
public ResourceDTO Resource { get; set; }
8+
public Resource Resource { get; set; }
109
}
1110

12-
public class ResourceDTO
11+
public class Resource
1312
{
1413
[JsonProperty("id")]
1514
public string Id { get; set; }
1615

1716
[JsonProperty("fields")]
18-
public FieldsDTO Fields { get; set; }
17+
public Fields Fields { get; set; }
1918
}
20-
21-
public class RevisionDTO
22-
{
23-
[JsonProperty("fields")]
24-
public FieldsDTO Fields { get; set; }
25-
}
26-
27-
public class FieldsDTO
28-
{
29-
[JsonProperty("System.AssignedTo")]
30-
public string AssignedTo { get; set; }
31-
32-
[JsonProperty("System.WorkItemType")]
33-
public string Type { get; set; }
34-
35-
[JsonProperty("System.CreatedDate")]
36-
public DateTime CreatedDate { get; set; }
37-
38-
[JsonProperty("System.CreatedBy")]
39-
public string CreatedBy { get; set; }
40-
41-
[JsonProperty("System.State")]
42-
public string State { get; set; }
43-
44-
[JsonProperty("System.Title")]
45-
public string Title { get; set; }
46-
}
47-
4819
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
using Newtonsoft.Json;
2+
using System;
3+
4+
namespace AzureDevopsStateTracker.DTOs
5+
{
6+
public class Fields
7+
{
8+
[JsonProperty("System.AreaPath")]
9+
public string AreaPath { get; set; }
10+
11+
[JsonProperty("System.TeamProject")]
12+
public string TeamProject { get; set; }
13+
14+
[JsonProperty("System.IterationPath")]
15+
public string IterationPath { get; set; }
16+
17+
[JsonProperty("System.AssignedTo")]
18+
public string AssignedTo { get; set; }
19+
20+
[JsonProperty("System.WorkItemType")]
21+
public string Type { get; set; }
22+
23+
[JsonProperty("System.CreatedDate")]
24+
public DateTime CreatedDate { get; set; }
25+
26+
[JsonProperty("System.CreatedBy")]
27+
public string CreatedBy { get; set; }
28+
29+
[JsonProperty("System.ChangedBy")]
30+
public string ChangedBy { get; set; }
31+
32+
[JsonProperty("System.State")]
33+
public string State { get; set; }
34+
35+
[JsonProperty("System.Title")]
36+
public string Title { get; set; }
37+
38+
[JsonProperty("System.Tags")]
39+
public string Tags { get; set; }
40+
41+
[JsonProperty("System.Parent")]
42+
public string Parent { get; set; }
43+
44+
[JsonProperty("Microsoft.VSTS.Scheduling.StoryPoints")]
45+
public string StoryPoints { get; set; }
46+
47+
[JsonProperty("Microsoft.VSTS.Scheduling.OriginalEstimate")]
48+
public string OriginalEstimate { get; set; }
49+
50+
[JsonProperty("Microsoft.VSTS.Scheduling.RemainingWork")]
51+
public string RemainingWork { get; set; }
52+
53+
[JsonProperty("Microsoft.VSTS.Scheduling.Effort")]
54+
public string Effort { get; set; }
55+
56+
[JsonProperty("Microsoft.VSTS.Common.Activity")]
57+
public string Activity { get; set; }
58+
}
59+
}

AzureDevopsStateTracker/DTOs/Update/UpdateWorkItemDTO.cs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,37 @@ namespace AzureDevopsStateTracker.DTOs.Update
66
public class UpdatedWorkItemDTO
77
{
88
[JsonProperty("resource")]
9-
public ResourceDTO Resource { get; set; }
9+
public Resource Resource { get; set; }
1010
}
1111

12-
public class ResourceDTO
12+
public class Resource
1313
{
1414
[JsonProperty("workItemId")]
1515
public string WorkItemId { get; set; }
1616

1717
[JsonProperty("fields")]
18-
public ResourceFieldsDTO Fields { get; set; }
18+
public ResourceFields Fields { get; set; }
1919

2020
[JsonProperty("revision")]
21-
public RevisionDTO Revision { get; set; }
21+
public Revision Revision { get; set; }
2222
}
2323

24-
public class RevisionDTO
24+
public class Revision
2525
{
2626
[JsonProperty("fields")]
27-
public RevisionFieldsDTO Fields { get; set; }
27+
public Fields Fields { get; set; }
2828
}
2929

30-
public class ResourceFieldsDTO
30+
public class ResourceFields
3131
{
3232
[JsonProperty("System.State")]
3333
public OldNewValues State { get; set; }
3434

3535
[JsonProperty("Microsoft.VSTS.Common.StateChangeDate")]
3636
public DateTimeOldNewValues StateChangeDate { get; set; }
37-
}
3837

39-
public class RevisionFieldsDTO
40-
{
41-
[JsonProperty("System.AssignedTo")]
42-
public string AssignedTo { get; set; }
38+
[JsonProperty("System.ChangedBy")]
39+
public ChangedByOldNewValues ChangedBy { get; set; }
4340
}
4441

4542
public class OldNewValues
@@ -60,5 +57,12 @@ public class DateTimeOldNewValues
6057
public DateTime NewValue { get; set; }
6158
}
6259

60+
public class ChangedByOldNewValues
61+
{
62+
[JsonProperty("oldValue")]
63+
public string OldValue { get; set; }
6364

65+
[JsonProperty("newValue")]
66+
public string NewValue { get; set; }
67+
}
6468
}

AzureDevopsStateTracker/DTOs/WorkItemDTO.cs

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ public class WorkItemDTO
1818
[JsonProperty("type")]
1919
public string Type { get; set; }
2020

21+
[JsonProperty("effort")]
22+
public string Effort { get; set; }
23+
24+
[JsonProperty("story_points")]
25+
public string StoryPoints { get; set; }
26+
27+
[JsonProperty("original_estimate")]
28+
public string OriginalEstimate { get; set; }
29+
2130
[JsonProperty("created_by")]
2231
public string CreatedBy { get; set; }
2332

@@ -27,17 +36,29 @@ public class WorkItemDTO
2736
[JsonProperty("team_project")]
2837
public string TeamProject { get; set; }
2938

39+
[JsonProperty("iteration_path")]
40+
public string IterationPath { get; set; }
41+
42+
[JsonProperty("area_path")]
43+
public string AreaPath { get; set; }
44+
3045
[JsonProperty("current_status")]
3146
public string CurrentStatus { get; set; }
3247

48+
[JsonProperty("work_item_parent_id")]
49+
public string WorkItemParentId { get; set; }
50+
51+
[JsonProperty("activity")]
52+
public string Activity { get; set; }
53+
54+
[JsonProperty("tags")]
55+
public IEnumerable<string> Tags { get; set; }
56+
3357
[JsonProperty("workItems_changes")]
3458
public List<WorkItemChangeDTO> WorkItemsChangesDTO { get; set; }
3559

36-
[JsonProperty("workItems_status_time")]
37-
public List<WorkItemStatusTimeDTO> WorkItemsStatusTimeDTO { get; set; }
38-
39-
[JsonProperty("total_time_by_state")]
40-
public IEnumerable<Dictionary<string, string>> TotalTimeByState { get; set; }
60+
[JsonProperty("times_by_state")]
61+
public List<TimeByStateDTO> TimesByStateDTO { get; set; }
4162
}
4263

4364
public class WorkItemChangeDTO
@@ -53,15 +74,27 @@ public class WorkItemChangeDTO
5374

5475
[JsonProperty("old_date")]
5576
public DateTime? OldDate { get; set; }
77+
78+
[JsonProperty("changed_by")]
79+
public string ChangedBy { get; set; }
5680
}
5781

5882

59-
public class WorkItemStatusTimeDTO
83+
public class TimeByStateDTO
6084
{
85+
[JsonProperty("created_at")]
86+
public DateTime CreatedAt { get; set; }
87+
88+
[JsonProperty("updated_at")]
89+
public DateTime UpdatedAt { get; set; }
90+
6191
[JsonProperty("state")]
6292
public string State { get; set; }
6393

6494
[JsonProperty("total_time")]
6595
public string TotalTime { get; set; }
96+
97+
[JsonProperty("total_worked_time")]
98+
public string TotalWorkedTime { get; set; }
6699
}
67100
}

AzureDevopsStateTracker/Data/Context/AzureDevopsStateTrackerContext.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using AzureDevopsStateTracker.Entities;
22
using Microsoft.EntityFrameworkCore;
3-
using Microsoft.EntityFrameworkCore.Infrastructure;
4-
using Microsoft.EntityFrameworkCore.Storage;
53
using System;
64
using System.Linq;
75

@@ -14,7 +12,7 @@ public AzureDevopsStateTrackerContext(DbContextOptions options) : base(options)
1412

1513
public DbSet<WorkItem> WorkItems { get; set; }
1614
public DbSet<WorkItemChange> WorkItemsChange { get; set; }
17-
public DbSet<WorkItemStatusTime> WorkItemsStatusTime { get; set; }
15+
public DbSet<TimeByState> TimeByStates { get; set; }
1816

1917
protected override void OnModelCreating(ModelBuilder modelBuilder)
2018
{

0 commit comments

Comments
 (0)