Skip to content

Commit fde9fb8

Browse files
committed
Add Create method. Others fixes.
1 parent 6f9b981 commit fde9fb8

File tree

4 files changed

+31
-17
lines changed

4 files changed

+31
-17
lines changed

AzureDevopsTracker/Data/WorkItemRepository.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public async Task<WorkItem> GetByWorkItemId(string workItemId)
1818
.Include(x => x.WorkItemsChanges)
1919
.Include(x => x.TimeByStates)
2020
.Include(x => x.ChangeLogItem)
21+
.Include(x => x.CustomFields)
2122
.FirstOrDefaultAsync(x => x.Id == workItemId);
2223
}
2324

@@ -27,6 +28,7 @@ public async Task<IEnumerable<WorkItem>> ListByWorkItemId(IEnumerable<string> wo
2728
.Include(x => x.WorkItemsChanges)
2829
.Include(x => x.TimeByStates)
2930
.Include(x => x.ChangeLogItem)
31+
.Include(x => x.CustomFields)
3032
.Where(x => workItemsId.Contains(x.Id))
3133
.ToListAsync();
3234
}
@@ -37,6 +39,7 @@ public async Task<IEnumerable<WorkItem>> ListByIterationPath(string iterationPat
3739
.Include(x => x.WorkItemsChanges)
3840
.Include(x => x.TimeByStates)
3941
.Include(x => x.ChangeLogItem)
42+
.Include(x => x.CustomFields)
4043
.Where(x => x.IterationPath == iterationPath)
4144
.ToListAsync();
4245
}

AzureDevopsTracker/Entities/WorkItemCustomField.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ public class WorkItemCustomField
1111

1212
public WorkItem WorkItem { get; private set; }
1313

14-
public WorkItemCustomField(string key, string value)
14+
public WorkItemCustomField(string workItemId, string key, string value)
1515
{
16+
WorkItemId = workItemId;
1617
Key = key;
1718
Value = value;
1819
}

AzureDevopsTracker/Helpers/ReadJsonHelper.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ namespace AzureDevopsTracker.Helpers
77
{
88
public static class ReadJsonHelper
99
{
10-
public static IEnumerable<WorkItemCustomField> ReadJson(string jsonTexto)
10+
public static IEnumerable<WorkItemCustomField> ReadJson(string workItemId, string jsonTexto)
1111
{
1212
try
1313
{
1414
var workItemCustomFields = new List<WorkItemCustomField>();
1515
foreach (KeyValuePair<string, JToken> element in JObject.Parse(jsonTexto))
1616
{
1717
if (element.Value is JObject)
18-
ReadJsonObject(workItemCustomFields, (JObject)element.Value);
18+
ReadJsonObject(workItemId, workItemCustomFields, (JObject)element.Value);
1919
else
20-
GetWorkItemCustomField(workItemCustomFields, element.Key, element.Value.ToString());
20+
GetWorkItemCustomField(workItemCustomFields, workItemId, element.Key, element.Value.ToString());
2121
}
2222

2323
return workItemCustomFields;
@@ -28,19 +28,19 @@ public static IEnumerable<WorkItemCustomField> ReadJson(string jsonTexto)
2828
}
2929
}
3030

31-
private static void ReadJsonObject(List<WorkItemCustomField> workItemCustomFields, JObject objeto)
31+
private static void ReadJsonObject(string workItemId, List<WorkItemCustomField> workItemCustomFields, JObject objeto)
3232
{
3333
foreach (KeyValuePair<string, JToken> item in objeto)
3434
if (item.Value is JObject)
35-
ReadJsonObject(workItemCustomFields, (JObject)item.Value);
35+
ReadJsonObject(workItemId, workItemCustomFields, (JObject)item.Value);
3636
else
37-
GetWorkItemCustomField(workItemCustomFields, item.Key, item.Value.ToString());
37+
GetWorkItemCustomField(workItemCustomFields, workItemId, item.Key, item.Value.ToString());
3838
}
3939

40-
private static void GetWorkItemCustomField(List<WorkItemCustomField> workItemCustomFields, string key, string value)
40+
private static void GetWorkItemCustomField(List<WorkItemCustomField> workItemCustomFields, string workItemId, string key, string value)
4141
{
4242
if (key is not null && !key.ToLower().Contains("custom")) return;
43-
workItemCustomFields.Add(new WorkItemCustomField(key, value));
43+
workItemCustomFields.Add(new WorkItemCustomField(workItemId, key, value));
4444
}
4545
}
4646
}

AzureDevopsTracker/Services/AzureDevopsTrackerService.cs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using AzureDevopsTracker.Helpers;
77
using AzureDevopsTracker.Interfaces;
88
using AzureDevopsTracker.Interfaces.Internals;
9+
using Newtonsoft.Json;
910
using System;
1011
using System.Linq;
1112
using System.Threading.Tasks;
@@ -212,19 +213,28 @@ public void RemoveChangeLogItem(WorkItem workItem)
212213
}
213214
}
214215

215-
public Task Create(string jsonText, bool addWorkItemChange = true)
216+
/*
217+
* Still missing:
218+
* - Migration
219+
* - Update function
220+
*/
221+
public async Task Create(string jsonText, bool addWorkItemChange = true)
216222
{
217-
throw new NotImplementedException();
218-
219223
try
220224
{
221-
ReadJsonHelper.ReadJson(jsonText);
222-
}
223-
catch (Exception)
224-
{
225+
var workItemDTO = JsonConvert.DeserializeObject<CreateWorkItemDTO>(jsonText);
226+
await Create(workItemDTO);
225227

226-
throw;
228+
var workItem = await _workItemRepository.GetByWorkItemId(workItemDTO.Resource.Id);
229+
if (workItem is null)
230+
return;
231+
232+
var customFields = ReadJsonHelper.ReadJson(workItem.Id, jsonText);
233+
if (customFields is not null && customFields.Any())
234+
workItem.AddCustomFields(customFields);
227235
}
236+
catch
237+
{ }
228238
}
229239

230240
public Task Update(string jsonText)

0 commit comments

Comments
 (0)