Skip to content

Commit 57cfb28

Browse files
committed
Removing changelog item when new state is diferent do closed and exist ChangeLogItem in WorkItem
1 parent 6c989b5 commit 57cfb28

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

AzureDevopsTracker/Entities/WorkItem.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class WorkItem : Entity
3030
private readonly List<TimeByState> _timeByState;
3131
public IReadOnlyCollection<TimeByState> TimeByStates => _timeByState;
3232
public string CurrentStatus => _workItemsChanges?.OrderBy(x => x.CreatedAt)?.LastOrDefault()?.NewState;
33+
public string LastStatus => _workItemsChanges?.OrderBy(x => x.CreatedAt)?.ToList()?.Skip(1)?.LastOrDefault()?.OldState;
3334

3435
private WorkItem()
3536
{
@@ -108,6 +109,11 @@ public void ClearTimesByState()
108109
_timeByState.Clear();
109110
}
110111

112+
public void RemoveChangeLogItem()
113+
{
114+
ChangeLogItem = null;
115+
}
116+
111117
public void VinculateChangeLogItem(ChangeLogItem changeLogItem)
112118
{
113119
if (changeLogItem == null)

AzureDevopsTracker/Services/AzureDevopsTrackerService.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,16 @@ public class AzureDevopsTrackerService : IAzureDevopsTrackerService
1515
{
1616
public readonly IWorkItemRepository _workItemRepository;
1717
public readonly IWorkItemAdapter _workItemAdapter;
18+
public readonly IChangeLogItemRepository _changeLogItemRepository;
1819

1920
public AzureDevopsTrackerService(
20-
IWorkItemAdapter workItemAdapter, IWorkItemRepository workItemRepository)
21+
IWorkItemAdapter workItemAdapter,
22+
IWorkItemRepository workItemRepository,
23+
IChangeLogItemRepository changeLogItemRepository)
2124
{
2225
_workItemAdapter = workItemAdapter;
2326
_workItemRepository = workItemRepository;
27+
_changeLogItemRepository = changeLogItemRepository;
2428
}
2529

2630
public async Task Create(CreateWorkItemDTO create, bool addWorkItemChange = true)
@@ -163,6 +167,11 @@ public void RemoveTimeByStateFromDataBase(WorkItem workItem)
163167

164168
public void CheckWorkItemAvailableToChangeLog(WorkItem workItem, Fields fields)
165169
{
170+
if (workItem.CurrentStatus != "Closed" &&
171+
workItem.LastStatus == "Closed" &&
172+
workItem.ChangeLogItem != null)
173+
RemoveChangeLogItem(workItem);
174+
166175
if (workItem.CurrentStatus != "Closed" ||
167176
fields.ChangeLogDescription.IsNullOrEmpty())
168177
return;
@@ -188,6 +197,18 @@ public ChangeLogItem ToChangeLogItem(WorkItem workItem, Fields fields)
188197
{
189198
return new ChangeLogItem(workItem.Id, workItem.Title, fields.ChangeLogDescription, workItem.Type);
190199
}
200+
201+
public void RemoveChangeLogItem(WorkItem workItem)
202+
{
203+
var changeLotItem = _changeLogItemRepository.GetById(workItem.ChangeLogItem?.Id).Result;
204+
if (changeLotItem != null)
205+
{
206+
_changeLogItemRepository.Delete(changeLotItem);
207+
_changeLogItemRepository.SaveChangesAsync().Wait();
208+
209+
workItem.RemoveChangeLogItem();
210+
}
211+
}
191212
#endregion
192213
}
193214
}

0 commit comments

Comments
 (0)