@@ -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