From 234ad22277ac2b4d5e8c38297c3f7ad2e61b1e7d Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 18 Oct 2021 11:59:29 +0200 Subject: [PATCH 1/6] UPdate readme specifiche --- Integrazioni/README.md | 11 +++++++++++ Integrazioni/README.pdf | Bin 0 -> 31133 bytes 2 files changed, 11 insertions(+) create mode 100644 Integrazioni/README.md create mode 100644 Integrazioni/README.pdf diff --git a/Integrazioni/README.md b/Integrazioni/README.md new file mode 100644 index 0000000..cf53245 --- /dev/null +++ b/Integrazioni/README.md @@ -0,0 +1,11 @@ +# Specifiche INtegrazioni + + +## Verifica C19 +Per la verifica dei certificati Covid-19 (GreenPass) abbiamo proceduto ad integrare GPW con app esterne, in particolare il flusso è il seguente + + * lettura QRCode da browser + * con applicazione node (basata su SDK ministero salute) decodifica QRCode da certificato valido + * chiamata a web.api x effettuare registrazione check (+ timbratura ingresso se necessario) + + diff --git a/Integrazioni/README.pdf b/Integrazioni/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..91fea3bc2740eaad8e08c0cc6e84a0af727ee87b GIT binary patch literal 31133 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 QJU|@Wu$r{A;tCS~2V}B+WB>pF literal 0 HcmV?d00001 From e85e056b0afd8c08aab7b6bba48e9648af7d68d9 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 18 Oct 2021 12:18:00 +0200 Subject: [PATCH 2/6] Aggiunta gitignore --- .gitignore | 330 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 330 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ec3b4e3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,330 @@ + +# ---> VisualStudio +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# ---> C Sharp +# Build Folders (you can keep bin if you'd like, to store dlls and pdbs) +[Bb]in/ +[Oo]bj/ + +# mstest test results +TestResults + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Rr]elease/ +x64/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.log +*.vspscc +*.vssscc +.builds + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper* + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish + +# Publish Web Output +*.Publish.xml + +# NuGet Packages Directory +packages + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +[Bb]in +[Oo]bj +sql +TestResults +[Tt]est[Rr]esult* +*.Cache +ClientBin +[Ss]tyle[Cc]op.* +~$* +*.dbmdl +Generated_Code #added for RIA/Silverlight projects + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML + From 4d6c7400f7a14703e3d8977f067eafcc06d9fd2f Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 18 Oct 2021 12:18:06 +0200 Subject: [PATCH 3/6] Prima release progetto Web.Api --- GPW.Api/GPW.Api.sln | 25 ++++++++ GPW.Api/GPW.Api/.config/dotnet-tools.json | 5 ++ .../Controllers/WeatherForecastController.cs | 39 ++++++++++++ GPW.Api/GPW.Api/GPW.Api.csproj | 22 +++++++ GPW.Api/GPW.Api/Program.cs | 26 ++++++++ .../GPW.Api/Properties/launchSettings.json | 31 +++++++++ GPW.Api/GPW.Api/Startup.cs | 59 ++++++++++++++++++ GPW.Api/GPW.Api/WeatherForecast.cs | 15 +++++ GPW.Api/GPW.Api/appsettings.Development.json | 9 +++ GPW.Api/GPW.Api/appsettings.json | 10 +++ GPW.Api/GPW.Api/logs/.placeholder.txt | 1 + Integrazioni/README.md | 17 ++++- Integrazioni/README.pdf | Bin 31133 -> 43655 bytes 13 files changed, 257 insertions(+), 2 deletions(-) create mode 100644 GPW.Api/GPW.Api.sln create mode 100644 GPW.Api/GPW.Api/.config/dotnet-tools.json create mode 100644 GPW.Api/GPW.Api/Controllers/WeatherForecastController.cs create mode 100644 GPW.Api/GPW.Api/GPW.Api.csproj create mode 100644 GPW.Api/GPW.Api/Program.cs create mode 100644 GPW.Api/GPW.Api/Properties/launchSettings.json create mode 100644 GPW.Api/GPW.Api/Startup.cs create mode 100644 GPW.Api/GPW.Api/WeatherForecast.cs create mode 100644 GPW.Api/GPW.Api/appsettings.Development.json create mode 100644 GPW.Api/GPW.Api/appsettings.json create mode 100644 GPW.Api/GPW.Api/logs/.placeholder.txt diff --git a/GPW.Api/GPW.Api.sln b/GPW.Api/GPW.Api.sln new file mode 100644 index 0000000..ef46213 --- /dev/null +++ b/GPW.Api/GPW.Api.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31727.386 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GPW.Api", "GPW.Api\GPW.Api.csproj", "{EF8D5A17-0D60-4EF0-9262-57AFAC574843}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EF8D5A17-0D60-4EF0-9262-57AFAC574843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EF8D5A17-0D60-4EF0-9262-57AFAC574843}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EF8D5A17-0D60-4EF0-9262-57AFAC574843}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EF8D5A17-0D60-4EF0-9262-57AFAC574843}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4EA406A5-8A20-49F6-85EE-ADDDBB02833F} + EndGlobalSection +EndGlobal diff --git a/GPW.Api/GPW.Api/.config/dotnet-tools.json b/GPW.Api/GPW.Api/.config/dotnet-tools.json new file mode 100644 index 0000000..b0e38ab --- /dev/null +++ b/GPW.Api/GPW.Api/.config/dotnet-tools.json @@ -0,0 +1,5 @@ +{ + "version": 1, + "isRoot": true, + "tools": {} +} \ No newline at end of file diff --git a/GPW.Api/GPW.Api/Controllers/WeatherForecastController.cs b/GPW.Api/GPW.Api/Controllers/WeatherForecastController.cs new file mode 100644 index 0000000..5b46439 --- /dev/null +++ b/GPW.Api/GPW.Api/Controllers/WeatherForecastController.cs @@ -0,0 +1,39 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace GPW.Api.Controllers +{ + [ApiController] + [Route("[controller]")] + public class WeatherForecastController : ControllerBase + { + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + private readonly ILogger _logger; + + public WeatherForecastController(ILogger logger) + { + _logger = logger; + } + + [HttpGet] + public IEnumerable Get() + { + var rng = new Random(); + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = DateTime.Now.AddDays(index), + TemperatureC = rng.Next(-20, 55), + Summary = Summaries[rng.Next(Summaries.Length)] + }) + .ToArray(); + } + } +} diff --git a/GPW.Api/GPW.Api/GPW.Api.csproj b/GPW.Api/GPW.Api/GPW.Api.csproj new file mode 100644 index 0000000..c9be2f6 --- /dev/null +++ b/GPW.Api/GPW.Api/GPW.Api.csproj @@ -0,0 +1,22 @@ + + + + net5.0 + + + + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS01.pubxml" /> + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS02.pubxml" /> + + + + + + + + + Always + + + + diff --git a/GPW.Api/GPW.Api/Program.cs b/GPW.Api/GPW.Api/Program.cs new file mode 100644 index 0000000..ca954ac --- /dev/null +++ b/GPW.Api/GPW.Api/Program.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace GPW.Api +{ + public class Program + { + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }); + } +} diff --git a/GPW.Api/GPW.Api/Properties/launchSettings.json b/GPW.Api/GPW.Api/Properties/launchSettings.json new file mode 100644 index 0000000..f9a770b --- /dev/null +++ b/GPW.Api/GPW.Api/Properties/launchSettings.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:65210", + "sslPort": 44300 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "GPW.Api": { + "commandName": "Project", + "dotnetRunMessages": "true", + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/GPW.Api/GPW.Api/Startup.cs b/GPW.Api/GPW.Api/Startup.cs new file mode 100644 index 0000000..4a8154b --- /dev/null +++ b/GPW.Api/GPW.Api/Startup.cs @@ -0,0 +1,59 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.HttpsPolicy; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Microsoft.OpenApi.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace GPW.Api +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + + services.AddControllers(); + services.AddSwaggerGen(c => + { + c.SwaggerDoc("v1", new OpenApiInfo { Title = "GPW.Api", Version = "v1" }); + }); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + app.UseSwagger(); + app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "GPW.Api v1")); + } + + app.UseHttpsRedirection(); + + app.UseRouting(); + + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + } + } +} diff --git a/GPW.Api/GPW.Api/WeatherForecast.cs b/GPW.Api/GPW.Api/WeatherForecast.cs new file mode 100644 index 0000000..83b5c3e --- /dev/null +++ b/GPW.Api/GPW.Api/WeatherForecast.cs @@ -0,0 +1,15 @@ +using System; + +namespace GPW.Api +{ + public class WeatherForecast + { + public DateTime Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string Summary { get; set; } + } +} diff --git a/GPW.Api/GPW.Api/appsettings.Development.json b/GPW.Api/GPW.Api/appsettings.Development.json new file mode 100644 index 0000000..8983e0f --- /dev/null +++ b/GPW.Api/GPW.Api/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/GPW.Api/GPW.Api/appsettings.json b/GPW.Api/GPW.Api/appsettings.json new file mode 100644 index 0000000..d9d9a9b --- /dev/null +++ b/GPW.Api/GPW.Api/appsettings.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*" +} diff --git a/GPW.Api/GPW.Api/logs/.placeholder.txt b/GPW.Api/GPW.Api/logs/.placeholder.txt new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/GPW.Api/GPW.Api/logs/.placeholder.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Integrazioni/README.md b/Integrazioni/README.md index cf53245..32b9281 100644 --- a/Integrazioni/README.md +++ b/Integrazioni/README.md @@ -1,5 +1,5 @@ -# Specifiche INtegrazioni - +# Specifiche Integrazioni +Di seguito le specifiche delle integrazioni tra GPW e sistemi terzi ## Verifica C19 Per la verifica dei certificati Covid-19 (GreenPass) abbiamo proceduto ad integrare GPW con app esterne, in particolare il flusso è il seguente @@ -9,3 +9,16 @@ Per la verifica dei certificati Covid-19 (GreenPass) abbiamo proceduto ad integr * chiamata a web.api x effettuare registrazione check (+ timbratura ingresso se necessario) +### Schema funzionamento chiamata +La chiamta fatta dal sw esterno a GPW deve impiegare + + * chiamata POST web.api + * payload json contenente il valore decodificato da DCC + * elaborazione web.api (registrazione certificato + eventuale timbratura) + * risultato chiamata per display a video risultato positivo verifica + + +Esempio per insomnia in allegato nella folder **InsomniaTest** del progetto, visualizzabile come swagger all'indirizzo swagger/index.html del progetto ed ai seguenti indirizzi in produzione: + * https://IIS01/GPW/Api/swagger/index.html + * https://IIS02/GPW/Api/swagger/index.html + * diff --git a/Integrazioni/README.pdf b/Integrazioni/README.pdf index 91fea3bc2740eaad8e08c0cc6e84a0af727ee87b..3205522b62d077fbeb2e3af10b61f63bb92ed741 100644 GIT binary patch delta 27664 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 TR@NB2aDWMn!N~YlRp$QyYAGC5 delta 15546 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 Z+uOU4@+2CR5h1X%a{tp%QHd)^{68WPnfL$z From 6d516af83bde5ee3936c08ec5b340a60b5892a20 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 18 Oct 2021 12:38:05 +0200 Subject: [PATCH 4/6] Aggiunta fake call x registrare chiamata verifica C19 --- GPW.Api/GPW.Api/Controllers/VC19Controller.cs | 60 +++++++++++++++++++ GPW.Api/GPW.Api/DCCDecode.cs | 18 ++++++ GPW.Api/GPW.Api/VC19Check.cs | 22 +++++++ 3 files changed, 100 insertions(+) create mode 100644 GPW.Api/GPW.Api/Controllers/VC19Controller.cs create mode 100644 GPW.Api/GPW.Api/DCCDecode.cs create mode 100644 GPW.Api/GPW.Api/VC19Check.cs diff --git a/GPW.Api/GPW.Api/Controllers/VC19Controller.cs b/GPW.Api/GPW.Api/Controllers/VC19Controller.cs new file mode 100644 index 0000000..cd94213 --- /dev/null +++ b/GPW.Api/GPW.Api/Controllers/VC19Controller.cs @@ -0,0 +1,60 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace GPW.Api.Controllers +{ + [ApiController] + [Route("api/[controller]")] + //[Route("[controller]")] + public class VC19Controller : ControllerBase + { + #region Private Fields + + private readonly ILogger _logger; + + #endregion Private Fields + + #region Public Constructors + + public VC19Controller(ILogger logger) + { + _logger = logger; + } + + #endregion Public Constructors + + #region Public Methods + + [HttpGet] + public IEnumerable Get() + { + var rng = new Random(); + return Enumerable.Range(1, 5).Select(index => new VC19Check + { + DTRecord = DateTime.Now.AddMinutes(-index * 3), + CheckRecorded = rng.Next(0, 10) > 5 ? true : false, + TimbrRecorder = rng.Next(0, 10) > 5 ? true : false + }) + .ToArray(); + } + + [HttpPost] + public VC19Check Post(DCCDecode DecodedData) + { + VC19Check answ = new VC19Check + { + DTRecord = DateTime.Now, + CheckRecorded = true, + TimbrRecorder = true + }; + return answ; + } + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/GPW.Api/GPW.Api/DCCDecode.cs b/GPW.Api/GPW.Api/DCCDecode.cs new file mode 100644 index 0000000..a453f80 --- /dev/null +++ b/GPW.Api/GPW.Api/DCCDecode.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace GPW.Api +{ + public class DCCDecode + { + #region Public Properties + + public string Cognome { get; set; } = ""; + public DateTime DOB { get; set; } + public string Nome { get; set; } = ""; + + #endregion Public Properties + } +} \ No newline at end of file diff --git a/GPW.Api/GPW.Api/VC19Check.cs b/GPW.Api/GPW.Api/VC19Check.cs new file mode 100644 index 0000000..5220eac --- /dev/null +++ b/GPW.Api/GPW.Api/VC19Check.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace GPW.Api +{ + /// + /// Esito chiamata VC19 + /// + public class VC19Check + { + #region Public Properties + + public bool CheckRecorded { get; set; } = true; + + public DateTime DTRecord { get; set; } = DateTime.Now; + public bool TimbrRecorder { get; set; } = false; + + #endregion Public Properties + } +} \ No newline at end of file From 6177a119e06c222e5be07fc243079bdb7478eebb Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 18 Oct 2021 12:46:47 +0200 Subject: [PATCH 5/6] Aggiunta test insomnia --- InsomniaTest/GPW.Api.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 InsomniaTest/GPW.Api.json diff --git a/InsomniaTest/GPW.Api.json b/InsomniaTest/GPW.Api.json new file mode 100644 index 0000000..39bb290 --- /dev/null +++ b/InsomniaTest/GPW.Api.json @@ -0,0 +1 @@ +{"_type":"export","__export_format":4,"__export_date":"2021-10-18T10:46:32.117Z","__export_source":"insomnia.desktop.app:v2021.5.3","resources":[{"_id":"req_13d8a26fe9d4433684a0816a33ecd618","parentId":"wrk_15a980661ee94bab9d1ccc5a2bac0f42","modified":1634553716040,"created":1634553671776,"url":"{{ _.BASE_URL }}/api/VC19","name":"DailyCheckList","description":"","method":"GET","body":{},"parameters":[],"headers":[],"authentication":{},"metaSortKey":-1627351578955,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"wrk_15a980661ee94bab9d1ccc5a2bac0f42","parentId":null,"modified":1634552379774,"created":1634552379774,"name":"GPW.Api","description":"","scope":"collection","_type":"workspace"},{"_id":"req_92b40959f3b14d069a1defaea63782d4","parentId":"wrk_15a980661ee94bab9d1ccc5a2bac0f42","modified":1634553902195,"created":1634553726864,"url":"{{ _.BASE_URL }}/api/VC19","name":"RecordCheck","description":"","method":"POST","body":{"mimeType":"application/json","text":"{\n \"cognome\": \"ROSSI\",\n \"dob\": \"1980-10-01\",\n \"nome\": \"PAOLO\"\n}"},"parameters":[],"headers":[{"name":"Content-Type","value":"application/json","id":"pair_ed76bfea595e4917be2ce6797185529e"}],"authentication":{},"metaSortKey":-1626151423711,"isPrivate":false,"settingStoreCookies":true,"settingSendCookies":true,"settingDisableRenderRequestBody":false,"settingEncodeUrl":true,"settingRebuildPath":true,"settingFollowRedirects":"global","_type":"request"},{"_id":"env_659ee5f03be1f9fc42cab55192dd76583acae449","parentId":"wrk_15a980661ee94bab9d1ccc5a2bac0f42","modified":1634552627514,"created":1634552379782,"name":"Base Environment","data":{},"dataPropertyOrder":{},"color":null,"isPrivate":false,"metaSortKey":1634552379782,"_type":"environment"},{"_id":"jar_659ee5f03be1f9fc42cab55192dd76583acae449","parentId":"wrk_15a980661ee94bab9d1ccc5a2bac0f42","modified":1634552379783,"created":1634552379783,"name":"Default Jar","cookies":[],"_type":"cookie_jar"},{"_id":"spc_f198ccd3ea154fce9ba8e43694030bf9","parentId":"wrk_15a980661ee94bab9d1ccc5a2bac0f42","modified":1634552379777,"created":1634552379777,"fileName":"GPW.Api","contents":"","contentType":"yaml","_type":"api_spec"},{"_id":"env_9ae41782f3fc4f33bb679db14ed36156","parentId":"env_659ee5f03be1f9fc42cab55192dd76583acae449","modified":1634552719561,"created":1634552420009,"name":"DEV","data":{"BASE_URL":"https://localhost:44300"},"dataPropertyOrder":{"&":["BASE_URL"]},"color":null,"isPrivate":false,"metaSortKey":1634552420009,"_type":"environment"},{"_id":"env_8b92b7eaf4fc43538d77db9768714516","parentId":"env_659ee5f03be1f9fc42cab55192dd76583acae449","modified":1634552533475,"created":1634552444561,"name":"IIS01","data":{"BASE_URL":"https://iis01/GPW/Api"},"dataPropertyOrder":{"&":["BASE_URL"]},"color":null,"isPrivate":false,"metaSortKey":1634552444561,"_type":"environment"},{"_id":"env_6047c5aeb1f445748982b91445f3691d","parentId":"env_659ee5f03be1f9fc42cab55192dd76583acae449","modified":1634552536977,"created":1634552456998,"name":"IIS02","data":{"BASE_URL":"https://iis02/GPW/Api"},"dataPropertyOrder":{"&":["BASE_URL"]},"color":null,"isPrivate":false,"metaSortKey":1634552456998,"_type":"environment"}]} \ No newline at end of file From d1ac3edb2e082b9d38ac5a9f785cdb96d5a1c60b Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 18 Oct 2021 12:46:53 +0200 Subject: [PATCH 6/6] Aggiunta metodi pubblicati --- GPW.Api/GPW.Api/Controllers/VC19Controller.cs | 3 ++- GPW.Api/GPW.Api/VC19Check.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/GPW.Api/GPW.Api/Controllers/VC19Controller.cs b/GPW.Api/GPW.Api/Controllers/VC19Controller.cs index cd94213..cbe8129 100644 --- a/GPW.Api/GPW.Api/Controllers/VC19Controller.cs +++ b/GPW.Api/GPW.Api/Controllers/VC19Controller.cs @@ -50,7 +50,8 @@ namespace GPW.Api.Controllers { DTRecord = DateTime.Now, CheckRecorded = true, - TimbrRecorder = true + TimbrRecorder = true, + Result = $"OK, Check Recorded for {DecodedData.Cognome} {DecodedData.Nome} {DecodedData.DOB:yyyy.MM.dd}" }; return answ; } diff --git a/GPW.Api/GPW.Api/VC19Check.cs b/GPW.Api/GPW.Api/VC19Check.cs index 5220eac..ddb6f6a 100644 --- a/GPW.Api/GPW.Api/VC19Check.cs +++ b/GPW.Api/GPW.Api/VC19Check.cs @@ -13,8 +13,8 @@ namespace GPW.Api #region Public Properties public bool CheckRecorded { get; set; } = true; - public DateTime DTRecord { get; set; } = DateTime.Now; + public string Result { get; set; } = ""; public bool TimbrRecorder { get; set; } = false; #endregion Public Properties