Skip to content

Commit 5b4d03d

Browse files
authored
Merge pull request #4 from typinghard/5.0.1
Everything is ok
2 parents 6c989b5 + 978ffd1 commit 5b4d03d

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

AzureDevopsTracker/Entities/ChangeLogItem.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class ChangeLogItem : Entity
1010
public string Description { get; private set; }
1111
public string WorkItemType { get; private set; }
1212
public string ChangeLogId { get; private set; }
13+
public bool WasReleased => string.IsNullOrEmpty(ChangeLogId?.Trim());
1314

1415
/*EF*/
1516
public ChangeLog ChangeLog { get; private set; }

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: 23 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,12 @@ 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+
!workItem.ChangeLogItem.WasReleased)
174+
RemoveChangeLogItem(workItem);
175+
166176
if (workItem.CurrentStatus != "Closed" ||
167177
fields.ChangeLogDescription.IsNullOrEmpty())
168178
return;
@@ -188,6 +198,18 @@ public ChangeLogItem ToChangeLogItem(WorkItem workItem, Fields fields)
188198
{
189199
return new ChangeLogItem(workItem.Id, workItem.Title, fields.ChangeLogDescription, workItem.Type);
190200
}
201+
202+
public void RemoveChangeLogItem(WorkItem workItem)
203+
{
204+
var changeLogItem = _changeLogItemRepository.GetById(workItem.ChangeLogItem?.Id).Result;
205+
if (changeLogItem != null)
206+
{
207+
_changeLogItemRepository.Delete(changeLogItem);
208+
_changeLogItemRepository.SaveChangesAsync().Wait();
209+
210+
workItem.RemoveChangeLogItem();
211+
}
212+
}
191213
#endregion
192214
}
193215
}

0 commit comments

Comments
 (0)