diff --git a/AzureDevOpsStateTracker.Functions/AzureDevOpsStateTracker.Functions.csproj b/AzureDevOpsStateTracker.Functions/AzureDevOpsStateTracker.Functions.csproj index b3121d3..6d0b3c8 100644 --- a/AzureDevOpsStateTracker.Functions/AzureDevOpsStateTracker.Functions.csproj +++ b/AzureDevOpsStateTracker.Functions/AzureDevOpsStateTracker.Functions.csproj @@ -1,13 +1,29 @@ - + netcoreapp3.1 v3 + 035287d5-0b94-46fd-b3a9-b927fdb7b8ed + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + PreserveNewest + PreserveNewest diff --git a/AzureDevOpsStateTracker.Functions/AzureDevOpsStateTracker.Functions.sln b/AzureDevOpsStateTracker.Functions/AzureDevOpsStateTracker.Functions.sln index 2a4bb9a..3d0754b 100644 --- a/AzureDevOpsStateTracker.Functions/AzureDevOpsStateTracker.Functions.sln +++ b/AzureDevOpsStateTracker.Functions/AzureDevOpsStateTracker.Functions.sln @@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.31229.75 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureDevOpsStateTracker.Functions", "AzureDevOpsStateTracker.Functions.csproj", "{3C86C085-C8C6-46BB-8315-D4348928034C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureDevOpsStateTracker.Functions", "AzureDevOpsStateTracker.Functions.csproj", "{3C86C085-C8C6-46BB-8315-D4348928034C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureDevopsStateTracker", "..\..\azure-devops-state-tracker\AzureDevopsStateTracker\AzureDevopsStateTracker.csproj", "{E71EE8C3-7D74-4C91-B244-2394160F7486}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +17,10 @@ Global {3C86C085-C8C6-46BB-8315-D4348928034C}.Debug|Any CPU.Build.0 = Debug|Any CPU {3C86C085-C8C6-46BB-8315-D4348928034C}.Release|Any CPU.ActiveCfg = Release|Any CPU {3C86C085-C8C6-46BB-8315-D4348928034C}.Release|Any CPU.Build.0 = Release|Any CPU + {E71EE8C3-7D74-4C91-B244-2394160F7486}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E71EE8C3-7D74-4C91-B244-2394160F7486}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E71EE8C3-7D74-4C91-B244-2394160F7486}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E71EE8C3-7D74-4C91-B244-2394160F7486}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AzureDevOpsStateTracker.Functions/Extensions/HttpRequestExtensions.cs b/AzureDevOpsStateTracker.Functions/Extensions/HttpRequestExtensions.cs index 3ec28ad..28bf241 100644 --- a/AzureDevOpsStateTracker.Functions/Extensions/HttpRequestExtensions.cs +++ b/AzureDevOpsStateTracker.Functions/Extensions/HttpRequestExtensions.cs @@ -6,7 +6,7 @@ namespace AzureDevOpsStateTracker.Functions.Extensions { public static class HttpRequestExtensions { - public static string ObterCorpo(this HttpRequest request) + public static string GetBody(this HttpRequest request) { string corpo; using (StreamReader reader = new StreamReader(request.Body, diff --git a/AzureDevOpsStateTracker.Functions/Startup.cs b/AzureDevOpsStateTracker.Functions/Startup.cs index 98850b4..b35b214 100644 --- a/AzureDevOpsStateTracker.Functions/Startup.cs +++ b/AzureDevOpsStateTracker.Functions/Startup.cs @@ -1,4 +1,7 @@ -using AzureDevOpsStateTracker.Functions; +using AzureDevopsStateTracker.Configurations; +using AzureDevopsStateTracker.Data; +using AzureDevopsStateTracker.Services; +using AzureDevOpsStateTracker.Functions; using Microsoft.Azure.Functions.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection; @@ -10,20 +13,12 @@ public class Startup : FunctionsStartup { public override void Configure(IFunctionsHostBuilder builder) { - builder.Services.AddScoped(); - - //builder.Services.AddHttpClient(); + var configuration = builder.GetContext().Configuration; - //builder.Services.AddSingleton((s) => { - // return new MyService(); - //}); - - //builder.Services.AddSingleton(); - } - - public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) - { + builder.Services.AddScoped(); + builder.Services.AddScoped(); + builder.Services.AddAzureDevopsStateTracker(new DataBaseConfig(configuration["ConnectionStrings:DefaultConnection1"], "StateTracker")); } } } \ No newline at end of file diff --git a/AzureDevOpsStateTracker.Functions/WorkItemFunctions.cs b/AzureDevOpsStateTracker.Functions/WorkItemFunctions.cs index 4eb9409..a1aae65 100644 --- a/AzureDevOpsStateTracker.Functions/WorkItemFunctions.cs +++ b/AzureDevOpsStateTracker.Functions/WorkItemFunctions.cs @@ -3,26 +3,61 @@ using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; +using AzureDevopsStateTracker.Services; +using AzureDevOpsStateTracker.Functions.Extensions; +using Newtonsoft.Json; +using AzureDevopsStateTracker.DTOs.Create; +using AzureDevopsStateTracker.DTOs.Update; +using System.Net; +using System; namespace AzureDevOpsStateTracker.Functions { public class WorkItemFunctions { - private readonly ServiceToInject _serviceToInject; + private readonly AzureDevopsStateTrackerService _azureDevopsStateTrackerService; - public WorkItemFunctions(ServiceToInject serviceToInject) + public WorkItemFunctions( + AzureDevopsStateTrackerService azureDevopsStateTrackerService) { - _serviceToInject = serviceToInject; + _azureDevopsStateTrackerService = azureDevopsStateTrackerService; } [FunctionName("workitem")] - public IActionResult Run( + public IActionResult Create( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger log) { - _serviceToInject.DoSomething(); - return new OkObjectResult("Ok - Run"); + try + { + var workItemDTO = JsonConvert.DeserializeObject(req.GetBody()); + _azureDevopsStateTrackerService.Create(workItemDTO); + } + catch (Exception ex) + { + return new OkObjectResult(ex.Message); + } + + return new OkObjectResult(HttpStatusCode.OK); + } + + [FunctionName("workitem-update")] + public IActionResult Update( + [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, + ILogger log) + { + try + { + var workItemDTO = JsonConvert.DeserializeObject(req.GetBody()); + _azureDevopsStateTrackerService.Update(workItemDTO); + } + catch (Exception ex) + { + return new OkObjectResult(ex.Message); + } + + return new OkObjectResult(HttpStatusCode.OK); } [FunctionName("ping")]