Skip to content

Commit d904ad0

Browse files
committed
Initial structure
1 parent 9a8584b commit d904ad0

28 files changed

+1182
-56
lines changed

AzuereDevopsStateTracker/AzuereDevopsStateTracker.csproj

Lines changed: 0 additions & 15 deletions
This file was deleted.

AzuereDevopsStateTracker/Entities/WorkItem.cs

Lines changed: 0 additions & 16 deletions
This file was deleted.

AzuereDevopsStateTracker/Entities/WorkItemChanges.cs

Lines changed: 0 additions & 12 deletions
This file was deleted.

AzuereDevopsStateTracker/Entities/WorkItemStatusTime.cs

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
using AzureDevopsStateTracker.DTOs;
2+
using AzureDevopsStateTracker.Entities;
3+
using AzureDevopsStateTracker.Interfaces;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
7+
namespace AzureDevopsStateTracker.Adapters
8+
{
9+
internal class WorkItemAdapter : IWorkItemAdapter
10+
{
11+
public WorkItemDTO ToWorkItemDTO(WorkItem workItem)
12+
{
13+
if (workItem == null) return null;
14+
15+
return new WorkItemDTO()
16+
{
17+
Id = workItem.Id,
18+
CreatedAt = workItem.CreatedAt,
19+
AssignedTo = workItem.AssignedTo,
20+
CreatedBy = workItem.CreatedBy,
21+
CurrentStatus = workItem.CurrentStatus,
22+
TeamProject = workItem.TeamProject,
23+
Title = workItem.Title,
24+
Type = workItem.Type,
25+
WorkItemsChangesDTO = ToWorkItemsChangeDTO(workItem.WorkItemsChanges.OrderBy(x => x.CreatedAt).ToList()),
26+
WorkItemsStatusTimeDTO = ToWorkItemsStatusTimeDTO(workItem.WorkItemsStatusTime.OrderBy(x => x.CreatedAt).ToList()),
27+
TotalTimeByState = workItem.CalculateTotalTimeByState()
28+
};
29+
}
30+
31+
public List<WorkItemDTO> ToWorkItemsDTO(List<WorkItem> workItems)
32+
{
33+
var workItemsDTO = new List<WorkItemDTO>();
34+
35+
if (workItems == null) return workItemsDTO;
36+
37+
workItems.ForEach(
38+
workItem =>
39+
workItemsDTO.Add(ToWorkItemDTO(workItem)));
40+
41+
return workItemsDTO
42+
.Where(w => w != null)
43+
.ToList();
44+
}
45+
46+
public WorkItemChangeDTO ToWorkItemChangeDTO(WorkItemChange workIteChange)
47+
{
48+
if (workIteChange == null) return null;
49+
50+
return new WorkItemChangeDTO()
51+
{
52+
NewDate = workIteChange.NewDate,
53+
NewState = workIteChange.NewState,
54+
OldState = workIteChange.OldState,
55+
OldDate = workIteChange.OldDate
56+
};
57+
}
58+
59+
public List<WorkItemChangeDTO> ToWorkItemsChangeDTO(List<WorkItemChange> workItemsChanges)
60+
{
61+
var workItemsChangeDTO = new List<WorkItemChangeDTO>();
62+
63+
if (workItemsChanges == null) return workItemsChangeDTO;
64+
65+
workItemsChanges.ForEach(
66+
workItemsChange =>
67+
workItemsChangeDTO.Add(ToWorkItemChangeDTO(workItemsChange)));
68+
69+
return workItemsChangeDTO
70+
.Where(w => w != null)
71+
.ToList();
72+
}
73+
74+
public WorkItemStatusTimeDTO ToWorkItemStatusTimeDTO(WorkItemStatusTime workItemStatusTime)
75+
{
76+
if (workItemStatusTime == null) return null;
77+
78+
return new WorkItemStatusTimeDTO()
79+
{
80+
State = workItemStatusTime.State,
81+
TotalTime = workItemStatusTime.TotalTime.ToString()
82+
};
83+
}
84+
85+
public List<WorkItemStatusTimeDTO> ToWorkItemsStatusTimeDTO(List<WorkItemStatusTime> workItemStatusTimes)
86+
{
87+
var workItemStatusTimeDTO = new List<WorkItemStatusTimeDTO>();
88+
89+
if (workItemStatusTimes == null) return workItemStatusTimeDTO;
90+
91+
workItemStatusTimes.ForEach(
92+
workItemStatusTime =>
93+
workItemStatusTimeDTO.Add(ToWorkItemStatusTimeDTO(workItemStatusTime)));
94+
95+
return workItemStatusTimeDTO
96+
.Where(w => w != null)
97+
.ToList();
98+
}
99+
}
100+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp3.1</TargetFramework>
5+
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<Compile Remove="Migrations\20210706214802_AzureDevopsStateTrackerInitial.cs" />
10+
<Compile Remove="Migrations\20210706214802_AzureDevopsStateTrackerInitial.Designer.cs" />
11+
</ItemGroup>
12+
13+
<ItemGroup>
14+
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
15+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.16" />
16+
</ItemGroup>
17+
18+
</Project>

AzuereDevopsStateTracker/AzuereDevopsStateTracker.sln renamed to AzureDevopsStateTracker/AzureDevopsStateTracker.sln

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 16
44
VisualStudioVersion = 16.0.31402.337
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzuereDevopsStateTracker", "AzuereDevopsStateTracker.csproj", "{E00DFF81-08B1-4A71-82C4-7CED951299BE}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureDevopsStateTracker", "AzureDevopsStateTracker.csproj", "{E00DFF81-08B1-4A71-82C4-7CED951299BE}"
77
EndProject
88
Global
99
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using AzureDevopsStateTracker.Adapters;
2+
using AzureDevopsStateTracker.Data;
3+
using AzureDevopsStateTracker.Data.Context;
4+
using AzureDevopsStateTracker.Interfaces;
5+
using AzureDevopsStateTracker.Interfaces.Internals;
6+
using AzureDevopsStateTracker.Services;
7+
using Microsoft.AspNetCore.Builder;
8+
using Microsoft.EntityFrameworkCore;
9+
using Microsoft.Extensions.DependencyInjection;
10+
using System;
11+
12+
namespace AzureDevopsStateTracker.Configurations
13+
{
14+
public static class Configuration
15+
{
16+
public static IServiceCollection AddAzureDevopsStateTracker(this IServiceCollection services, DataBaseConfig configurations)
17+
{
18+
services.AddDbContext<AzureDevopsStateTrackerContext>(options =>
19+
options.UseSqlServer(DataBaseConfig.ConnectionsString));
20+
21+
services.AddScoped<AzureDevopsStateTrackerContext>();
22+
services.AddScoped<IWorkItemAdapter, WorkItemAdapter>();
23+
services.AddScoped<IWorkItemRepository, WorkItemRepository>();
24+
services.AddScoped<IAzureDevopsStateTrackerService, AzureDevopsStateTrackerService>();
25+
26+
return services;
27+
}
28+
29+
public static IApplicationBuilder UseAzureDevopsStateTracker(this IApplicationBuilder app, IServiceProvider serviceProvider)
30+
{
31+
var context = serviceProvider.GetService<AzureDevopsStateTrackerContext>();
32+
context.Database.Migrate();
33+
34+
return app;
35+
}
36+
}
37+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using Newtonsoft.Json;
2+
using System;
3+
4+
namespace AzureDevopsStateTracker.DTOs.Create
5+
{
6+
public class CreateWorkItemDTO
7+
{
8+
[JsonProperty("resource")]
9+
public ResourceDTO Resource { get; set; }
10+
}
11+
12+
public class ResourceDTO
13+
{
14+
[JsonProperty("id")]
15+
public string Id { get; set; }
16+
17+
[JsonProperty("fields")]
18+
public FieldsDTO Fields { get; set; }
19+
}
20+
21+
public class RevisionDTO
22+
{
23+
[JsonProperty("fields")]
24+
public FieldsDTO Fields { get; set; }
25+
}
26+
27+
public class FieldsDTO
28+
{
29+
[JsonProperty("System.AssignedTo")]
30+
public string AssignedTo { get; set; }
31+
32+
[JsonProperty("System.WorkItemType")]
33+
public string Type { get; set; }
34+
35+
[JsonProperty("System.CreatedDate")]
36+
public DateTime CreatedDate { get; set; }
37+
38+
[JsonProperty("System.CreatedBy")]
39+
public string CreatedBy { get; set; }
40+
41+
[JsonProperty("System.State")]
42+
public string State { get; set; }
43+
44+
[JsonProperty("System.Title")]
45+
public string Title { get; set; }
46+
}
47+
48+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
using Newtonsoft.Json;
2+
using System;
3+
4+
namespace AzureDevopsStateTracker.DTOs.Update
5+
{
6+
public class UpdatedWorkItemDTO
7+
{
8+
[JsonProperty("resource")]
9+
public ResourceDTO Resource { get; set; }
10+
}
11+
12+
public class ResourceDTO
13+
{
14+
[JsonProperty("workItemId")]
15+
public string WorkItemId { get; set; }
16+
17+
[JsonProperty("fields")]
18+
public ResourceFieldsDTO Fields { get; set; }
19+
20+
[JsonProperty("revision")]
21+
public RevisionDTO Revision { get; set; }
22+
}
23+
24+
public class RevisionDTO
25+
{
26+
[JsonProperty("fields")]
27+
public RevisionFieldsDTO Fields { get; set; }
28+
}
29+
30+
public class ResourceFieldsDTO
31+
{
32+
[JsonProperty("System.State")]
33+
public OldNewValues State { get; set; }
34+
35+
[JsonProperty("Microsoft.VSTS.Common.StateChangeDate")]
36+
public DateTimeOldNewValues StateChangeDate { get; set; }
37+
}
38+
39+
public class RevisionFieldsDTO
40+
{
41+
[JsonProperty("System.AssignedTo")]
42+
public string AssignedTo { get; set; }
43+
}
44+
45+
public class OldNewValues
46+
{
47+
[JsonProperty("oldValue")]
48+
public string OldValue { get; set; }
49+
50+
[JsonProperty("newValue")]
51+
public string NewValue { get; set; }
52+
}
53+
54+
public class DateTimeOldNewValues
55+
{
56+
[JsonProperty("oldValue")]
57+
public DateTime OldValue { get; set; }
58+
59+
[JsonProperty("newValue")]
60+
public DateTime NewValue { get; set; }
61+
}
62+
63+
64+
}

0 commit comments

Comments
 (0)