Skip to content

Commit a63224f

Browse files
committed
Adding Changelog feature
1 parent f729a75 commit a63224f

File tree

9 files changed

+572
-8
lines changed

9 files changed

+572
-8
lines changed

AzureDevopsTracker/DTOs/Fields.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,8 @@ public class Fields
7676

7777
[JsonProperty("Custom.01f51eeb-416d-49b1-b7f9-b92f3a675de1")]
7878
public string Lancado { get; set; }
79+
80+
[JsonProperty("Custom.ChangeLogDescription")]
81+
public string ChangeLogDescription { get; set; }
7982
}
8083
}

AzureDevopsTracker/Data/Context/AzureDevopsTrackerContext.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public AzureDevopsTrackerContext(DbContextOptions options) : base(options)
1313
public DbSet<WorkItem> WorkItems { get; set; }
1414
public DbSet<WorkItemChange> WorkItemsChange { get; set; }
1515
public DbSet<TimeByState> TimeByStates { get; set; }
16+
public DbSet<ChangeLogItem> ChangeLogItems { get; set; }
17+
public DbSet<ChangeLog> ChangeLogs { get; set; }
1618

1719
protected override void OnModelCreating(ModelBuilder modelBuilder)
1820
{
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
namespace AzureDevopsTracker.Entities
6+
{
7+
public class ChangeLog : Entity
8+
{
9+
public string Response { get; private set; }
10+
public int Revision { get; set; }
11+
12+
private readonly List<ChangeLogItem> _changeLogItems = new List<ChangeLogItem>();
13+
public IReadOnlyCollection<ChangeLogItem> ChangeLogItems => _changeLogItems;
14+
private ChangeLog() { }
15+
16+
public ChangeLog(int newRevision)
17+
{
18+
Revision = newRevision;
19+
}
20+
21+
public void ReleaseItems()
22+
{
23+
_changeLogItems.ForEach(c => c.Release(Id));
24+
}
25+
26+
public void SetResponse(string response)
27+
{
28+
Response = response;
29+
}
30+
31+
public void ClearResponse()
32+
{
33+
Response = string.Empty;
34+
}
35+
36+
public void AddChangeLogItem(ChangeLogItem changeLogItem)
37+
{
38+
if (changeLogItem == null)
39+
throw new Exception("ChangeLogItem is required");
40+
41+
if (CheckChangeLogItem(changeLogItem))
42+
return;
43+
44+
_changeLogItems.Add(changeLogItem);
45+
}
46+
47+
public void AddChangeLogItems(IEnumerable<ChangeLogItem> changeLogItems)
48+
{
49+
if (changeLogItems == null)
50+
throw new Exception("WorkItemType is required");
51+
52+
foreach (var changeLogItem in changeLogItems)
53+
AddChangeLogItem(changeLogItem);
54+
}
55+
56+
private bool CheckChangeLogItem(ChangeLogItem changeLogItem)
57+
{
58+
return _changeLogItems.Any(x => x.WorkItemId == changeLogItem.WorkItemId);
59+
}
60+
}
61+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using AzureDevopsTracker.Extensions;
2+
using System;
3+
4+
namespace AzureDevopsTracker.Entities
5+
{
6+
public class ChangeLogItem : Entity
7+
{
8+
public string WorkItemId { get; private set; }
9+
public string Title { get; private set; }
10+
public string Description { get; private set; }
11+
public string WorkItemType { get; private set; }
12+
public string ChangeLogId { get; private set; }
13+
14+
/*EF*/
15+
public ChangeLog ChangeLog { get; private set; }
16+
private ChangeLogItem() { }
17+
18+
public ChangeLogItem(string workItemId, string title, string description, string workitemType)
19+
{
20+
WorkItemId = workItemId;
21+
Title = title;
22+
Description = description;
23+
WorkItemType = workitemType;
24+
25+
Validate();
26+
}
27+
28+
public void Release(string changeLogId)
29+
{
30+
ChangeLogId = changeLogId;
31+
}
32+
33+
public void Validate()
34+
{
35+
if (WorkItemId.IsNullOrEmpty() || Convert.ToInt64(WorkItemId) <= 0)
36+
throw new Exception("WorkItemId is required");
37+
38+
if (Title.IsNullOrEmpty())
39+
throw new Exception("Title is required");
40+
41+
if (WorkItemType.IsNullOrEmpty())
42+
throw new Exception("WorkItemType is required");
43+
}
44+
45+
}
46+
}

AzureDevopsTracker/Entities/WorkItem.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ public class WorkItem : Entity
2222
public string Activity { get; private set; }
2323
public string Lancado { get; private set; }
2424

25+
public string ChangeLogItemId { get; private set; }
26+
public ChangeLogItem ChangeLogItem { get; private set; }
27+
2528
private readonly List<WorkItemChange> _workItemsChanges;
2629
public IReadOnlyCollection<WorkItemChange> WorkItemsChanges => _workItemsChanges;
2730

@@ -106,6 +109,15 @@ public void ClearTimesByState()
106109
_timeByState.Clear();
107110
}
108111

112+
public void VinculateChangeLogItem(ChangeLogItem changeLogItem)
113+
{
114+
if (ChangeLogItem == null)
115+
throw new Exception("ChangeLogItem is null");
116+
117+
ChangeLogItemId = changeLogItem.Id;
118+
ChangeLogItem = changeLogItem;
119+
}
120+
109121
public IEnumerable<TimeByState> CalculateTotalTimeByState()
110122
{
111123
var timesByStateList = new List<TimeByState>();

AzureDevopsTracker/Migrations/20211206211800_Adding_ChangeLog.Designer.cs

Lines changed: 234 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)