From 3a1a0ca7ef2097bfa65e0d3551d8d934c3019095 Mon Sep 17 00:00:00 2001 From: Riccardo Usardi Date: Fri, 11 Jul 2025 10:18:01 +0200 Subject: [PATCH] refact program.cs vineyardController, service e repo --- .../0.2.1634.3922/CodeChunks.db | Bin 122880 -> 196608 bytes .vs/uWine/DesignTimeBuild/.dtbcache.v2 | Bin 174253 -> 174694 bytes .vs/uWine/v17/.suo | Bin 160256 -> 168448 bytes .vs/uWine/v17/DocumentLayout.backup.json | 330 +++++++++++------- .vs/uWine/v17/DocumentLayout.json | 326 ++++++++++------- uWine.Api/Builder/Servicies.cs | 124 +++++++ uWine.Api/Controllers/AreaController.cs | 21 +- uWine.Api/Controllers/VineyardController.cs | 49 +++ uWine.Api/Program.cs | 35 +- .../Repositories/IVineyardRepository.cs | 3 + .../net8.0/uWine.Core.Domain.AssemblyInfo.cs | 2 +- ...uWine.Core.Domain.AssemblyInfoInputs.cache | 2 +- .../Helpers/CoordinatesHelper.cs | 47 ++- .../Repository/MariaDbVineyardRepository.cs | 36 ++ .../Services/CoordinatesService.cs | 21 +- .../Services/VineyardService.cs | 78 +++++ .../uWine.Core.Infrastructure.csproj | 1 + 17 files changed, 769 insertions(+), 306 deletions(-) create mode 100644 uWine.Api/Builder/Servicies.cs create mode 100644 uWine.Api/Controllers/VineyardController.cs create mode 100644 uWine.Core.Infrastructure/Services/VineyardService.cs diff --git a/.vs/uWine/CopilotIndices/0.2.1634.3922/CodeChunks.db b/.vs/uWine/CopilotIndices/0.2.1634.3922/CodeChunks.db index b4dc85ebb023a700d3257ec116b11a8861e495d6..30f0eaf043e0e3277743ccfb53381d43bcaa6e20 100644 GIT binary patch literal 196608 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/&;RBLvAIlUrmDUcF+89G@@+#OJ% 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 kf5hx@4k-?9{709 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 delta 21084 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 diff --git a/.vs/uWine/v17/.suo b/.vs/uWine/v17/.suo index d31083a7e3f70e512c9fe24fed7eb3c5905d26a0..b5e29af550c484b8d5671df963e2058b3d335ac5 100644 GIT binary patch delta 10320 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 PIpc)|abo{mw&MQ)&`Ypt delta 6996 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 nUhe-P`;m^{dtxYlH! + { + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(options => + { + var jwtSettings = builder.Configuration.GetSection("JwtSettings"); + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuer = true, + ValidateAudience = true, + ValidateLifetime = true, + ValidateIssuerSigningKey = true, + ValidIssuer = jwtSettings["Issuer"], + ValidAudience = jwtSettings["Audience"], + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings["Secret"])) + }; + }); + return builder; + } + + public static WebApplicationBuilder? AddRepository(WebApplicationBuilder? builder) + { + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + + return builder; + } + + public static WebApplicationBuilder? AddServices(WebApplicationBuilder? builder) + { + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + builder.Services.AddTransient(); + + return builder; + } + + public static WebApplicationBuilder? AddSwagger(WebApplicationBuilder? builder) + { + builder.Services.AddSwaggerGen(c => + { + c.SwaggerDoc("v1", new OpenApiInfo { Title = "Il tuo API", Version = "v1" }); + + // 1. Configurazione per JWT Bearer Token + c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + Description = "Inserisci il JWT Token nel campo 'Value' con il prefisso 'Bearer '. Esempio: 'Bearer your_token_here'", + Name = "Authorization", + In = ParameterLocation.Header, + Type = SecuritySchemeType.ApiKey, + Scheme = "Bearer" + }); + + c.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + } + }, + new string[] {} + } + }); + + // 2. Configurazione per Basic Authentication + c.AddSecurityDefinition("Basic", new OpenApiSecurityScheme + { + Description = "Basic authentication header", + Name = "Authorization", + In = ParameterLocation.Header, + Type = SecuritySchemeType.Http, + Scheme = "basic" + }); + + c.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Basic" + } + }, + new string[] {} + } + }); + + // Opzionale: per i commenti XML della documentazione + // var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; + // var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); + // c.IncludeXmlComments(xmlPath); + }); + return builder; + } + } +} diff --git a/uWine.Api/Controllers/AreaController.cs b/uWine.Api/Controllers/AreaController.cs index 0145a22..963110d 100644 --- a/uWine.Api/Controllers/AreaController.cs +++ b/uWine.Api/Controllers/AreaController.cs @@ -18,14 +18,14 @@ namespace uWine.Api.Controllers } [HttpPost("save-area")] - public IActionResult SaveArea([FromBody] Dictionary coordinates, int vineyardId) + public IActionResult SaveArea([FromBody] Dictionary coordinates, int vineyardId) { if (coordinates == null) return BadRequest("Invalid coordinates"); try { - _coordinatesService.SaveArea(vineyardId ,coordinates); + _coordinatesService.SaveArea(vineyardId, coordinates); return Ok(new { status = "Area set successfully" }); } catch (Exception ex) @@ -33,5 +33,22 @@ namespace uWine.Api.Controllers return StatusCode(500, new { error = ex.Message }); } } + + [HttpGet("get-area")] + public IActionResult GetArea(int vineyardId) + { + try + { + var area = _coordinatesService.GetArea(vineyardId); + if (area == null || area.Count == 0) + return NotFound("No area found for the given vineyard ID"); + + return Ok(area); + } + catch (Exception ex) + { + return StatusCode(500, new { error = ex.Message }); + } + } } } diff --git a/uWine.Api/Controllers/VineyardController.cs b/uWine.Api/Controllers/VineyardController.cs new file mode 100644 index 0000000..9df8802 --- /dev/null +++ b/uWine.Api/Controllers/VineyardController.cs @@ -0,0 +1,49 @@ +using Microsoft.AspNetCore.Mvc; +using uWine.Core.Infrastructure.Services; + +namespace uWine.Api.Controllers +{ + [ApiController] + [Route("/[controller]")] + public class VineyardController : Controller + { + public VineyardService _vineyardService; + public VineyardController(VineyardService vineyardService) + { + _vineyardService = vineyardService; + } + + + [HttpGet("get-user-vineyards")] + public IActionResult UserVineyards() + { + try + { + var UserId = int.Parse(User.FindFirst("userId")?.Value); + var list = _vineyardService.User(UserId); + + return Ok(list); + } + catch + { + return Unauthorized(new { status = 401 }); + } + } + + [HttpGet("get-owner-vineyards")] + public IActionResult OwnerVineyards() + { + try + { + var UserId = int.Parse(User.FindFirst("userId")?.Value); + var list = _vineyardService.Owner(UserId); + + return Ok(list); + } + catch + { + return Unauthorized(new { status = 401 }); + } + } + } +} diff --git a/uWine.Api/Program.cs b/uWine.Api/Program.cs index e7862b8..a931485 100644 --- a/uWine.Api/Program.cs +++ b/uWine.Api/Program.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Models; using System.Text; using uWine.Core.Domain.Repositories; using uWine.Core.Infrastructure.Repository; @@ -14,42 +15,18 @@ namespace uWine.Api { var builder = WebApplication.CreateBuilder(args); - builder.Services.AddAuthentication(options => - { - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; - }) - .AddJwtBearer(options => - { - var jwtSettings = builder.Configuration.GetSection("JwtSettings"); - options.TokenValidationParameters = new TokenValidationParameters - { - ValidateIssuer = true, - ValidateAudience = true, - ValidateLifetime = true, - ValidateIssuerSigningKey = true, - ValidIssuer = jwtSettings["Issuer"], - ValidAudience = jwtSettings["Audience"], - IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings["Secret"])) - }; - }); + builder = Builder.Servicies.AddAuthentiction(builder); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); - builder.Services.AddSwaggerGen(); + //builder.Services.AddSwaggerGen(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); + builder = Builder.Servicies.AddSwagger(builder); + builder = Builder.Servicies.AddRepository(builder); + builder = Builder.Servicies.AddServices(builder); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); //builder.Services.AddSingleton(); var app = builder.Build(); diff --git a/uWine.Core.Domain/Repositories/IVineyardRepository.cs b/uWine.Core.Domain/Repositories/IVineyardRepository.cs index 1299892..b83ad66 100644 --- a/uWine.Core.Domain/Repositories/IVineyardRepository.cs +++ b/uWine.Core.Domain/Repositories/IVineyardRepository.cs @@ -10,6 +10,9 @@ namespace uWine.Core.Domain.Repositories public interface IVineyardRepository { List GetOwnerVineyards(int ownerId); + List GetUserVineyards(int userId); void Insert(Vineyard vineyard, int ownerId); + void InsertArea(Dictionary coordinates, int vineyardId); + string Area(int vineyardId); } } diff --git a/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfo.cs b/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfo.cs index 7dec415..619afed 100644 --- a/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfo.cs +++ b/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("uWine.Core.Domain")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5aca82244e19b339516cae671f01e897766fe699")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a373201ca4c6a3dc43e4bc370112d65cebeb09fa")] [assembly: System.Reflection.AssemblyProductAttribute("uWine.Core.Domain")] [assembly: System.Reflection.AssemblyTitleAttribute("uWine.Core.Domain")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfoInputs.cache b/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfoInputs.cache index 72b3545..808e6c6 100644 --- a/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfoInputs.cache +++ b/uWine.Core.Domain/obj/Debug/net8.0/uWine.Core.Domain.AssemblyInfoInputs.cache @@ -1 +1 @@ -af0469651414fb1cc216fc5d5e51b3858d3ededd3bebba462f6393cc8502389f +b902622a631d1baa0110ad04e0fcf461794e939a926c828bd6ba317993ff3e98 diff --git a/uWine.Core.Infrastructure/Helpers/CoordinatesHelper.cs b/uWine.Core.Infrastructure/Helpers/CoordinatesHelper.cs index 538ab91..38e55a1 100644 --- a/uWine.Core.Infrastructure/Helpers/CoordinatesHelper.cs +++ b/uWine.Core.Infrastructure/Helpers/CoordinatesHelper.cs @@ -1,15 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using uWine.Core.Domain.Entities; +using NetTopologySuite.Geometries; +using NetTopologySuite.IO; namespace uWine.Core.Infrastructure.Helpers { public class CoordinatesHelper { - public static string ToWktPolygon(Dictionary coordinatesDict) + public static string ToWktPolygon(Dictionary coordinatesDict) { if (coordinatesDict == null || !coordinatesDict.Any()) { @@ -31,5 +27,42 @@ namespace uWine.Core.Infrastructure.Helpers return $"POLYGON(({closedPoints}))"; } + + public static Dictionary WktPolygonToDictionary(string wktPolygon) + { + if (string.IsNullOrWhiteSpace(wktPolygon)) + { + throw new ArgumentException("La stringa WKT del poligono non può essere nulla o vuota."); + } + + var reader = new WKTReader(); + NetTopologySuite.Geometries.Geometry geometry = reader.Read(wktPolygon); + + if (!(geometry is Polygon polygon)) + { + throw new ArgumentException("La stringa WKT non rappresenta un poligono valido."); + } + + var coordinatesDict = new Dictionary(); + var points = polygon.ExteriorRing.Coordinates; // Ottieni i punti dell'anello esterno + + // Nota: i poligoni WKT ripetono il primo punto alla fine per chiudere. + // Dobbiamo escludere l'ultimo punto se è identico al primo per non duplicarlo nel dictionary, + // a meno che tu non voglia mantenere anche il punto di chiusura. + int count = points.Length; + if (count > 0 && points[0].Equals2D(points[count - 1])) + { + count--; // Escludi l'ultimo punto se è una duplicazione del primo + } + + for (int i = 0; i < count; i++) + { + // Ricorda che NetTopologySuite usa (X, Y) che corrispondono a (Longitude, Latitude) per WGS84 + coordinatesDict.Add(i, new Domain.Entities.Coordinates(points[i].Y, points[i].X )); + } + + return coordinatesDict; + } + } } diff --git a/uWine.Core.Infrastructure/Repository/MariaDbVineyardRepository.cs b/uWine.Core.Infrastructure/Repository/MariaDbVineyardRepository.cs index 6a662ba..1d04cec 100644 --- a/uWine.Core.Infrastructure/Repository/MariaDbVineyardRepository.cs +++ b/uWine.Core.Infrastructure/Repository/MariaDbVineyardRepository.cs @@ -70,6 +70,18 @@ namespace uWine.Core.Infrastructure.Repository } } + public string Area(int vineyardId) + { + using (var connection = Connection()) + { + connection.Open(); + var command = new MySqlCommand("SELECT ST_AsText(area) FROM t_vineyard WHERE id = @id", connection); + command.Parameters.AddWithValue("@id", vineyardId); + var result = command.ExecuteScalar(); + return result?.ToString() ?? string.Empty; + } + } + public List GetOwnerVineyards(int ownerId) { var vineyards = new List(); @@ -92,5 +104,29 @@ namespace uWine.Core.Infrastructure.Repository } return vineyards; } + + public List GetUserVineyards(int userId) + { + var vineyards = new List(); + using (var connection = Connection()) + { + connection.Open(); + var command = new MySqlCommand("SELECT v.id, v.name, v.location, v.hectares, v.latitude, v.longitude " + + "FROM t_vineyard v " + + "JOIN t_owners_vineyards ov ON v.id = ov.vineyard_id " + + "JOUN t_user_owner uo on uo.owner_id = ov.owner_id" + + "WHERE uo.user_id = @userId", connection); + command.Parameters.AddWithValue("@userId", userId); + + using (var reader = command.ExecuteReader()) + { + while (reader.Read()) + { + vineyards.Add(Vineyard.FromRecord(reader)); + } + } + } + return vineyards; + } } } diff --git a/uWine.Core.Infrastructure/Services/CoordinatesService.cs b/uWine.Core.Infrastructure/Services/CoordinatesService.cs index 09b54ea..8548722 100644 --- a/uWine.Core.Infrastructure/Services/CoordinatesService.cs +++ b/uWine.Core.Infrastructure/Services/CoordinatesService.cs @@ -4,15 +4,17 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using uWine.Core.Domain.Entities; +using uWine.Core.Domain.Repositories; +using uWine.Core.Infrastructure.Helpers; using uWine.Core.Infrastructure.Repository; namespace uWine.Core.Infrastructure.Services { public class CoordinatesService { - public MariaDbVineyardRepository _vineyardRepository; + public IVineyardRepository _vineyardRepository; - public CoordinatesService(MariaDbVineyardRepository vineyardRepository) + public CoordinatesService(IVineyardRepository vineyardRepository) { _vineyardRepository = vineyardRepository; } @@ -28,14 +30,21 @@ namespace uWine.Core.Infrastructure.Services // return new Coordinates(vineyard.Latitude, vineyard.Longitude); //} - public async Task> VineyardCoordinates(int vineyardId) - { - - } + //public Dictionary VineyardCoordinates(int vineyardId) + //{ + // return new Dictionary(); + //} public void SaveArea(int vineyardId, Dictionary coordinates) { _vineyardRepository.InsertArea(coordinates, vineyardId); } + + public Dictionary GetArea(int vineyardId) + { + var dict = new Dictionary(); + dict = CoordinatesHelper.WktPolygonToDictionary(_vineyardRepository.Area(vineyardId)); + return dict; + } } } diff --git a/uWine.Core.Infrastructure/Services/VineyardService.cs b/uWine.Core.Infrastructure/Services/VineyardService.cs new file mode 100644 index 0000000..7467028 --- /dev/null +++ b/uWine.Core.Infrastructure/Services/VineyardService.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using uWine.Core.Domain.Entities; +using uWine.Core.Domain.Repositories; + +namespace uWine.Core.Infrastructure.Services +{ + public class VineyardService + { + public IVineyardRepository _vineyardRepository; + public CoordinatesService _coordinatesService; + public VineyardService(IVineyardRepository vineyardRepository, CoordinatesService coordinatesService) + { + _vineyardRepository = vineyardRepository; + _coordinatesService = coordinatesService; + } + + public void Insert(Vineyard vineyard, int ownerId) + { + if (vineyard == null) + { + throw new ArgumentNullException(nameof(vineyard), "Vineyard cannot be null"); + } + + _vineyardRepository.Insert(vineyard, ownerId); + + if (vineyard.Area != null || vineyard.Area.Count >0) + { + _coordinatesService.SaveArea(vineyard.Id, vineyard.Area); + } + } + + public List User(int userId) + { + if (userId <= 0) + { + throw new ArgumentException("User ID must be greater than zero.", nameof(userId)); + } + + var vineyards = _vineyardRepository.GetUserVineyards(userId); + if (vineyards == null || !vineyards.Any()) + { + return new List(); + } + + foreach (var vineyard in vineyards) + { + vineyard.Area = _coordinatesService.GetArea(vineyard.Id); + } + + return vineyards; + } + + public List Owner(int ownerId) + { + if (ownerId <= 0) + { + throw new ArgumentException("Owner ID must be greater than zero.", nameof(ownerId)); + } + + var vineyards = _vineyardRepository.GetOwnerVineyards(ownerId); + if (vineyards == null || !vineyards.Any()) + { + return new List(); + } + + foreach (var vineyard in vineyards) + { + vineyard.Area = _coordinatesService.GetArea(vineyard.Id); + } + + return vineyards; + } + } +} diff --git a/uWine.Core.Infrastructure/uWine.Core.Infrastructure.csproj b/uWine.Core.Infrastructure/uWine.Core.Infrastructure.csproj index 821dca6..95622a2 100644 --- a/uWine.Core.Infrastructure/uWine.Core.Infrastructure.csproj +++ b/uWine.Core.Infrastructure/uWine.Core.Infrastructure.csproj @@ -10,6 +10,7 @@ +