Test Docker
This commit is contained in:
		| @@ -113,4 +113,78 @@ public class ResultadosController : ControllerBase | ||||
|  | ||||
|         return Ok(await Task.FromResult(respuestaSimulada)); | ||||
|     } | ||||
|  | ||||
|     [HttpGet("bancas/{seccionId}")] | ||||
|     public async Task<IActionResult> GetBancasPorSeccion(string seccionId) | ||||
|     { | ||||
|         // 1. Buscamos el ámbito de la sección electoral | ||||
|         var seccion = await _dbContext.AmbitosGeograficos | ||||
|             .AsNoTracking() | ||||
|             .FirstOrDefaultAsync(a => a.SeccionId == seccionId && a.NivelId == 4); // Nivel 4 = Sección Electoral | ||||
|  | ||||
|         if (seccion == null) | ||||
|         { | ||||
|             return NotFound(new { message = $"No se encontró la sección electoral con ID {seccionId}" }); | ||||
|         } | ||||
|  | ||||
|         // 2. Buscamos todas las proyecciones para ese ámbito, incluyendo el nombre de la agrupación | ||||
|         var proyecciones = await _dbContext.ProyeccionesBancas | ||||
|             .AsNoTracking() | ||||
|             .Include(p => p.AgrupacionPolitica) // Incluimos el nombre del partido | ||||
|             .Where(p => p.AmbitoGeograficoId == seccion.Id) | ||||
|             .Select(p => new | ||||
|             { | ||||
|                 // Creamos un objeto anónimo para la respuesta, más limpio que un DTO para este caso simple | ||||
|                 AgrupacionNombre = p.AgrupacionPolitica.Nombre, | ||||
|                 Bancas = p.NroBancas | ||||
|             }) | ||||
|             .OrderByDescending(p => p.Bancas) | ||||
|             .ToListAsync(); | ||||
|  | ||||
|         if (!proyecciones.Any()) | ||||
|         { | ||||
|             return NotFound(new { message = $"No se han encontrado proyecciones de bancas para la sección {seccion.Nombre}" }); | ||||
|         } | ||||
|  | ||||
|         // 3. Devolvemos un objeto que contiene el nombre de la sección y la lista de resultados | ||||
|         return Ok(new | ||||
|         { | ||||
|             SeccionNombre = seccion.Nombre, | ||||
|             Proyeccion = proyecciones | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     [HttpGet("mapa")] | ||||
|     public async Task<IActionResult> GetResultadosParaMapa() | ||||
|     { | ||||
|         // Esta consulta es mucho más eficiente y se traduce bien a SQL. | ||||
|         // Paso 1: Para cada ámbito, encontrar la cantidad máxima de votos. | ||||
|         var maxVotosPorAmbito = _dbContext.ResultadosVotos | ||||
|             .GroupBy(rv => rv.AmbitoGeograficoId) | ||||
|             .Select(g => new | ||||
|             { | ||||
|                 AmbitoId = g.Key, | ||||
|                 MaxVotos = g.Max(v => v.CantidadVotos) | ||||
|             }); | ||||
|  | ||||
|         // Paso 2: Unir los resultados originales con los máximos para encontrar el registro ganador. | ||||
|         // Esto nos da, para cada ámbito, el registro completo del partido que tuvo más votos. | ||||
|         var resultadosGanadores = await _dbContext.ResultadosVotos | ||||
|             .Join( | ||||
|                 maxVotosPorAmbito, | ||||
|                 voto => new { AmbitoId = voto.AmbitoGeograficoId, Votos = voto.CantidadVotos }, | ||||
|                 max => new { AmbitoId = max.AmbitoId, Votos = max.MaxVotos }, | ||||
|                 (voto, max) => voto // Nos quedamos con el objeto 'ResultadoVoto' completo | ||||
|             ) | ||||
|             .Include(rv => rv.AmbitoGeografico) // Incluimos el ámbito para obtener el MunicipioId | ||||
|             .Where(rv => rv.AmbitoGeografico.MunicipioId != null) | ||||
|             .Select(rv => new | ||||
|             { | ||||
|                 MunicipioId = rv.AmbitoGeografico.MunicipioId, | ||||
|                 AgrupacionGanadoraId = rv.AgrupacionPoliticaId | ||||
|             }) | ||||
|             .ToListAsync(); | ||||
|  | ||||
|         return Ok(resultadosGanadores); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,62 @@ | ||||
| using Elecciones.Core.DTOs.ApiResponses; | ||||
| using Elecciones.Database; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using System.Linq; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace Elecciones.Api.Controllers; | ||||
|  | ||||
| [ApiController] | ||||
| [Route("api/[controller]")] | ||||
| public class TelegramasController : ControllerBase | ||||
| { | ||||
|   private readonly EleccionesDbContext _dbContext; | ||||
|  | ||||
|   public TelegramasController(EleccionesDbContext dbContext) | ||||
|   { | ||||
|     _dbContext = dbContext; | ||||
|   } | ||||
|  | ||||
|   /// <summary> | ||||
|   /// Obtiene la lista de IDs de todos los telegramas que han sido totalizados y descargados. | ||||
|   /// </summary> | ||||
|   [HttpGet] | ||||
|   public async Task<IActionResult> GetListaTelegramas() | ||||
|   { | ||||
|     var ids = await _dbContext.Telegramas | ||||
|         .AsNoTracking() | ||||
|         .OrderBy(t => t.Id) | ||||
|         .Select(t => t.Id) | ||||
|         .ToListAsync(); | ||||
|  | ||||
|     return Ok(ids); | ||||
|   } | ||||
|  | ||||
|   /// <summary> | ||||
|   /// Obtiene el contenido completo de un telegrama específico, incluyendo la imagen en Base64. | ||||
|   /// </summary> | ||||
|   /// <param name="mesaId">El ID único de la mesa/telegrama (ej. "0200100001M").</param> | ||||
|   [HttpGet("{mesaId}")] | ||||
|   public async Task<IActionResult> GetTelegramaPorId(string mesaId) | ||||
|   { | ||||
|     var telegrama = await _dbContext.Telegramas | ||||
|         .AsNoTracking() | ||||
|         .FirstOrDefaultAsync(t => t.Id == mesaId); | ||||
|  | ||||
|     if (telegrama == null) | ||||
|     { | ||||
|       return NotFound(new { message = $"No se encontró el telegrama con ID {mesaId}" }); | ||||
|     } | ||||
|  | ||||
|     // Devolvemos todos los datos del telegrama | ||||
|     return Ok(new | ||||
|     { | ||||
|       telegrama.Id, | ||||
|       telegrama.AmbitoGeograficoId, | ||||
|       telegrama.ContenidoBase64, | ||||
|       telegrama.FechaEscaneo, | ||||
|       telegrama.FechaTotalizacion | ||||
|     }); | ||||
|   } | ||||
| } | ||||
| @@ -14,6 +14,8 @@ | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Serilog.AspNetCore" Version="9.0.0" /> | ||||
|     <PackageReference Include="Serilog.Sinks.File" Version="7.0.0" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="9.0.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|   | ||||
| @@ -1,30 +1,26 @@ | ||||
| using Elecciones.Database; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Serilog; | ||||
|  | ||||
| // Esta es la estructura estándar y recomendada. | ||||
| var builder = WebApplication.CreateBuilder(args); | ||||
|  | ||||
| // --- 1. Configuración de Servicios --- | ||||
| // 1. Configurar Serilog. Esta es la forma correcta de integrarlo. | ||||
| builder.Host.UseSerilog((context, services, configuration) => configuration | ||||
|     .ReadFrom.Configuration(context.Configuration) | ||||
|     .ReadFrom.Services(services) | ||||
|     .Enrich.FromLogContext() | ||||
|     .WriteTo.Console() | ||||
|     .WriteTo.File("logs/api-.log", rollingInterval: RollingInterval.Day)); | ||||
|  | ||||
| // Añade la cadena de conexión y el DbContext para Entity Framework Core. | ||||
| // 2. Añadir servicios al contenedor. | ||||
| var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); | ||||
| builder.Services.AddDbContext<EleccionesDbContext>(options => | ||||
|     options.UseSqlServer(connectionString)); | ||||
|  | ||||
| // Añade los servicios para los controladores de la API. | ||||
| builder.Services.AddControllers(); | ||||
|  | ||||
| // Configura CORS para permitir que tu frontend (y www.eldia.com) consuman la API. | ||||
| // builder.Services.AddCors(options => | ||||
| // { | ||||
| //     options.AddDefaultPolicy(policy => | ||||
| //     { | ||||
| //         policy.WithOrigins("http://localhost:5173", "http://localhost:8600", "http://www.eldia.com", "http://elecciones2025.eldia.com") | ||||
| //               .AllowAnyHeader() | ||||
| //               .AllowAnyMethod(); | ||||
| //     }); | ||||
| // }); | ||||
|  | ||||
| var allowedOrigins = builder.Configuration["AllowedOrigins"]?.Split(',') ?? []; | ||||
| var allowedOrigins = builder.Configuration["AllowedOrigins"]?.Split(',') ?? Array.Empty<string>(); | ||||
| builder.Services.AddCors(options => | ||||
| { | ||||
|     options.AddDefaultPolicy(policy => | ||||
| @@ -38,34 +34,28 @@ builder.Services.AddCors(options => | ||||
|     }); | ||||
| }); | ||||
|  | ||||
|  | ||||
| // Añade la configuración de Swagger/OpenAPI para la documentación de la API. | ||||
| builder.Services.AddEndpointsApiExplorer(); | ||||
| builder.Services.AddSwaggerGen(); | ||||
|  | ||||
|  | ||||
| // 3. Construir la aplicación. | ||||
| var app = builder.Build(); | ||||
|  | ||||
| // --- 2. Configuración del Pipeline de Peticiones HTTP --- | ||||
| // 4. Configurar el pipeline de peticiones HTTP. | ||||
| // Añadimos el logging de peticiones de Serilog aquí. | ||||
| app.UseSerilogRequestLogging(); | ||||
|  | ||||
| // Habilita la UI de Swagger en el entorno de desarrollo. | ||||
| if (app.Environment.IsDevelopment()) | ||||
| { | ||||
|     app.UseSwagger(); | ||||
|     app.UseSwaggerUI(); | ||||
| } | ||||
|  | ||||
| // Redirige las peticiones HTTP a HTTPS. | ||||
| app.UseHttpsRedirection(); | ||||
|  | ||||
| // Usa la política de CORS que definimos arriba. | ||||
| app.UseCors(); | ||||
|  | ||||
| // Habilita la autorización (lo configuraremos si es necesario más adelante). | ||||
| app.UseAuthorization(); | ||||
|  | ||||
| // Mapea las rutas a los controladores de la API. | ||||
| app.MapControllers(); | ||||
|  | ||||
| // Inicia la aplicación. | ||||
| // 5. Ejecutar la aplicación. | ||||
| // El try/catch/finally se puede omitir; el logging de Serilog ya se encarga de los errores fatales. | ||||
| app.Run(); | ||||
| @@ -13,6 +13,8 @@ | ||||
|           "Microsoft.AspNetCore.OpenApi": "9.0.5", | ||||
|           "Microsoft.EntityFrameworkCore.SqlServer": "9.0.8", | ||||
|           "Microsoft.EntityFrameworkCore.Tools": "9.0.8", | ||||
|           "Serilog.AspNetCore": "9.0.0", | ||||
|           "Serilog.Sinks.File": "7.0.0", | ||||
|           "Swashbuckle.AspNetCore": "9.0.3" | ||||
|         }, | ||||
|         "runtime": { | ||||
| @@ -626,6 +628,20 @@ | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Microsoft.Extensions.FileProviders.Abstractions/9.0.0": { | ||||
|         "dependencies": { | ||||
|           "Microsoft.Extensions.Primitives": "9.0.8" | ||||
|         } | ||||
|       }, | ||||
|       "Microsoft.Extensions.Hosting.Abstractions/9.0.0": { | ||||
|         "dependencies": { | ||||
|           "Microsoft.Extensions.Configuration.Abstractions": "9.0.8", | ||||
|           "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8", | ||||
|           "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.8", | ||||
|           "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0", | ||||
|           "Microsoft.Extensions.Logging.Abstractions": "9.0.8" | ||||
|         } | ||||
|       }, | ||||
|       "Microsoft.Extensions.Http/9.0.8": { | ||||
|         "dependencies": { | ||||
|           "Microsoft.Extensions.Configuration.Abstractions": "9.0.8", | ||||
| @@ -840,6 +856,115 @@ | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog/4.2.0": { | ||||
|         "runtime": { | ||||
|           "lib/net9.0/Serilog.dll": { | ||||
|             "assemblyVersion": "4.2.0.0", | ||||
|             "fileVersion": "4.2.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog.AspNetCore/9.0.0": { | ||||
|         "dependencies": { | ||||
|           "Serilog": "4.2.0", | ||||
|           "Serilog.Extensions.Hosting": "9.0.0", | ||||
|           "Serilog.Formatting.Compact": "3.0.0", | ||||
|           "Serilog.Settings.Configuration": "9.0.0", | ||||
|           "Serilog.Sinks.Console": "6.0.0", | ||||
|           "Serilog.Sinks.Debug": "3.0.0", | ||||
|           "Serilog.Sinks.File": "7.0.0" | ||||
|         }, | ||||
|         "runtime": { | ||||
|           "lib/net9.0/Serilog.AspNetCore.dll": { | ||||
|             "assemblyVersion": "9.0.0.0", | ||||
|             "fileVersion": "9.0.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog.Extensions.Hosting/9.0.0": { | ||||
|         "dependencies": { | ||||
|           "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.8", | ||||
|           "Microsoft.Extensions.Hosting.Abstractions": "9.0.0", | ||||
|           "Microsoft.Extensions.Logging.Abstractions": "9.0.8", | ||||
|           "Serilog": "4.2.0", | ||||
|           "Serilog.Extensions.Logging": "9.0.0" | ||||
|         }, | ||||
|         "runtime": { | ||||
|           "lib/net9.0/Serilog.Extensions.Hosting.dll": { | ||||
|             "assemblyVersion": "9.0.0.0", | ||||
|             "fileVersion": "9.0.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog.Extensions.Logging/9.0.0": { | ||||
|         "dependencies": { | ||||
|           "Microsoft.Extensions.Logging": "9.0.8", | ||||
|           "Serilog": "4.2.0" | ||||
|         }, | ||||
|         "runtime": { | ||||
|           "lib/net9.0/Serilog.Extensions.Logging.dll": { | ||||
|             "assemblyVersion": "9.0.0.0", | ||||
|             "fileVersion": "9.0.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog.Formatting.Compact/3.0.0": { | ||||
|         "dependencies": { | ||||
|           "Serilog": "4.2.0" | ||||
|         }, | ||||
|         "runtime": { | ||||
|           "lib/net8.0/Serilog.Formatting.Compact.dll": { | ||||
|             "assemblyVersion": "3.0.0.0", | ||||
|             "fileVersion": "3.0.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog.Settings.Configuration/9.0.0": { | ||||
|         "dependencies": { | ||||
|           "Microsoft.Extensions.Configuration.Binder": "9.0.8", | ||||
|           "Microsoft.Extensions.DependencyModel": "9.0.8", | ||||
|           "Serilog": "4.2.0" | ||||
|         }, | ||||
|         "runtime": { | ||||
|           "lib/net9.0/Serilog.Settings.Configuration.dll": { | ||||
|             "assemblyVersion": "9.0.0.0", | ||||
|             "fileVersion": "9.0.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog.Sinks.Console/6.0.0": { | ||||
|         "dependencies": { | ||||
|           "Serilog": "4.2.0" | ||||
|         }, | ||||
|         "runtime": { | ||||
|           "lib/net8.0/Serilog.Sinks.Console.dll": { | ||||
|             "assemblyVersion": "6.0.0.0", | ||||
|             "fileVersion": "6.0.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog.Sinks.Debug/3.0.0": { | ||||
|         "dependencies": { | ||||
|           "Serilog": "4.2.0" | ||||
|         }, | ||||
|         "runtime": { | ||||
|           "lib/net8.0/Serilog.Sinks.Debug.dll": { | ||||
|             "assemblyVersion": "3.0.0.0", | ||||
|             "fileVersion": "3.0.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Serilog.Sinks.File/7.0.0": { | ||||
|         "dependencies": { | ||||
|           "Serilog": "4.2.0" | ||||
|         }, | ||||
|         "runtime": { | ||||
|           "lib/net9.0/Serilog.Sinks.File.dll": { | ||||
|             "assemblyVersion": "7.0.0.0", | ||||
|             "fileVersion": "7.0.0.0" | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       "Swashbuckle.AspNetCore/9.0.3": { | ||||
|         "dependencies": { | ||||
|           "Microsoft.Extensions.ApiDescription.Server": "9.0.0", | ||||
| @@ -1426,6 +1551,20 @@ | ||||
|       "path": "microsoft.extensions.diagnostics.abstractions/9.0.8", | ||||
|       "hashPath": "microsoft.extensions.diagnostics.abstractions.9.0.8.nupkg.sha512" | ||||
|     }, | ||||
|     "Microsoft.Extensions.FileProviders.Abstractions/9.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-uK439QzYR0q2emLVtYzwyK3x+T5bTY4yWsd/k/ZUS9LR6Sflp8MIdhGXW8kQCd86dQD4tLqvcbLkku8qHY263Q==", | ||||
|       "path": "microsoft.extensions.fileproviders.abstractions/9.0.0", | ||||
|       "hashPath": "microsoft.extensions.fileproviders.abstractions.9.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Microsoft.Extensions.Hosting.Abstractions/9.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-yUKJgu81ExjvqbNWqZKshBbLntZMbMVz/P7Way2SBx7bMqA08Mfdc9O7hWDKAiSp+zPUGT6LKcSCQIPeDK+CCw==", | ||||
|       "path": "microsoft.extensions.hosting.abstractions/9.0.0", | ||||
|       "hashPath": "microsoft.extensions.hosting.abstractions.9.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Microsoft.Extensions.Http/9.0.8": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
| @@ -1566,6 +1705,69 @@ | ||||
|       "path": "mono.texttemplating/3.0.0", | ||||
|       "hashPath": "mono.texttemplating.3.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog/4.2.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-gmoWVOvKgbME8TYR+gwMf7osROiWAURterc6Rt2dQyX7wtjZYpqFiA/pY6ztjGQKKV62GGCyOcmtP1UKMHgSmA==", | ||||
|       "path": "serilog/4.2.0", | ||||
|       "hashPath": "serilog.4.2.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog.AspNetCore/9.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-JslDajPlBsn3Pww1554flJFTqROvK9zz9jONNQgn0D8Lx2Trw8L0A8/n6zEQK1DAZWXrJwiVLw8cnTR3YFuYsg==", | ||||
|       "path": "serilog.aspnetcore/9.0.0", | ||||
|       "hashPath": "serilog.aspnetcore.9.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog.Extensions.Hosting/9.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-u2TRxuxbjvTAldQn7uaAwePkWxTHIqlgjelekBtilAGL5sYyF3+65NWctN4UrwwGLsDC7c3Vz3HnOlu+PcoxXg==", | ||||
|       "path": "serilog.extensions.hosting/9.0.0", | ||||
|       "hashPath": "serilog.extensions.hosting.9.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog.Extensions.Logging/9.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-NwSSYqPJeKNzl5AuXVHpGbr6PkZJFlNa14CdIebVjK3k/76kYj/mz5kiTRNVSsSaxM8kAIa1kpy/qyT9E4npRQ==", | ||||
|       "path": "serilog.extensions.logging/9.0.0", | ||||
|       "hashPath": "serilog.extensions.logging.9.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog.Formatting.Compact/3.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", | ||||
|       "path": "serilog.formatting.compact/3.0.0", | ||||
|       "hashPath": "serilog.formatting.compact.3.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog.Settings.Configuration/9.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-4/Et4Cqwa+F88l5SeFeNZ4c4Z6dEAIKbu3MaQb2Zz9F/g27T5a3wvfMcmCOaAiACjfUb4A6wrlTVfyYUZk3RRQ==", | ||||
|       "path": "serilog.settings.configuration/9.0.0", | ||||
|       "hashPath": "serilog.settings.configuration.9.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog.Sinks.Console/6.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-fQGWqVMClCP2yEyTXPIinSr5c+CBGUvBybPxjAGcf7ctDhadFhrQw03Mv8rJ07/wR5PDfFjewf2LimvXCDzpbA==", | ||||
|       "path": "serilog.sinks.console/6.0.0", | ||||
|       "hashPath": "serilog.sinks.console.6.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog.Sinks.Debug/3.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", | ||||
|       "path": "serilog.sinks.debug/3.0.0", | ||||
|       "hashPath": "serilog.sinks.debug.3.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Serilog.Sinks.File/7.0.0": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|       "sha512": "sha512-fKL7mXv7qaiNBUC71ssvn/dU0k9t0o45+qm2XgKAlSt19xF+ijjxyA3R6HmCgfKEKwfcfkwWjayuQtRueZFkYw==", | ||||
|       "path": "serilog.sinks.file/7.0.0", | ||||
|       "hashPath": "serilog.sinks.file.7.0.0.nupkg.sha512" | ||||
|     }, | ||||
|     "Swashbuckle.AspNetCore/9.0.3": { | ||||
|       "type": "package", | ||||
|       "serviceable": true, | ||||
|   | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -14,7 +14,7 @@ using System.Reflection; | ||||
| [assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Api")] | ||||
| [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] | ||||
| [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] | ||||
| [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1d580231134cc923bf8cbc524140ceb0ae88752f")] | ||||
| [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+39b1e9707275ed59ac4a7d32e26b951186a346bb")] | ||||
| [assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Api")] | ||||
| [assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Api")] | ||||
| [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] | ||||
|   | ||||
| @@ -173,3 +173,13 @@ E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Microsoft. | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Microsoft.Extensions.Diagnostics.Abstractions.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Microsoft.Extensions.Http.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Microsoft.Extensions.Options.ConfigurationExtensions.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\buenos-aires-municipios.geojson | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.AspNetCore.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.Extensions.Hosting.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.Extensions.Logging.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.Formatting.Compact.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.Settings.Configuration.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.Sinks.Console.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.Sinks.Debug.dll | ||||
| E:\Elecciones-2025\Elecciones-Web\src\Elecciones.Api\bin\Debug\net9.0\Serilog.Sinks.File.dll | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| {"GlobalPropertiesHash":"b5T/+ta4fUd8qpIzUTm3KyEwAYYUsU5ASo+CSFM3ByE=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["mhE0FuBM0BOF9SNOE0rY9setCw2ye3UUh7cEPjhgDdY=","AE1TAk4qas82IfXTyRHo\u002BfMlnTE4e7B1AJrEn9ZhBwo=","PA/Beu9jJpOBY5r5Y1CiSyqrARA2j7LHeWYUnEZpQO8=","ywKm3DCyXg4YCbZAIx3JUlT8N4Irff3GswYUVDST\u002BjQ=","P8JRhYPpULTLMAydvl3Ky\u002B92/tYDIjui0l66En4aXuQ=","r5wfLIFTEo2\u002Bd7Tsx44bFIb0SPNdPvg4KbBRNmbWVFA="],"CachedAssets":{},"CachedCopyCandidates":{}} | ||||
| {"GlobalPropertiesHash":"b5T/+ta4fUd8qpIzUTm3KyEwAYYUsU5ASo+CSFM3ByE=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["mhE0FuBM0BOF9SNOE0rY9setCw2ye3UUh7cEPjhgDdY=","t631p0kaOa0gMRIcaPzz1ZVPZ1kuq4pq4kYPWQgoPcM=","PA/Beu9jJpOBY5r5Y1CiSyqrARA2j7LHeWYUnEZpQO8=","ywKm3DCyXg4YCbZAIx3JUlT8N4Irff3GswYUVDST\u002BjQ=","P8JRhYPpULTLMAydvl3Ky\u002B92/tYDIjui0l66En4aXuQ=","/FHWuH7ftxc5u992j4YhVijd0fBiiQLWe\u002BV0ZlveX5c="],"CachedAssets":{},"CachedCopyCandidates":{}} | ||||
| @@ -1 +1 @@ | ||||
| {"GlobalPropertiesHash":"tJTBjV/i0Ihkc6XuOu69wxL8PBac9c9Kak6srMso4pU=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["mhE0FuBM0BOF9SNOE0rY9setCw2ye3UUh7cEPjhgDdY=","AE1TAk4qas82IfXTyRHo\u002BfMlnTE4e7B1AJrEn9ZhBwo=","PA/Beu9jJpOBY5r5Y1CiSyqrARA2j7LHeWYUnEZpQO8=","ywKm3DCyXg4YCbZAIx3JUlT8N4Irff3GswYUVDST\u002BjQ=","P8JRhYPpULTLMAydvl3Ky\u002B92/tYDIjui0l66En4aXuQ=","r5wfLIFTEo2\u002Bd7Tsx44bFIb0SPNdPvg4KbBRNmbWVFA="],"CachedAssets":{},"CachedCopyCandidates":{}} | ||||
| {"GlobalPropertiesHash":"tJTBjV/i0Ihkc6XuOu69wxL8PBac9c9Kak6srMso4pU=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["mhE0FuBM0BOF9SNOE0rY9setCw2ye3UUh7cEPjhgDdY=","t631p0kaOa0gMRIcaPzz1ZVPZ1kuq4pq4kYPWQgoPcM=","PA/Beu9jJpOBY5r5Y1CiSyqrARA2j7LHeWYUnEZpQO8=","ywKm3DCyXg4YCbZAIx3JUlT8N4Irff3GswYUVDST\u002BjQ=","P8JRhYPpULTLMAydvl3Ky\u002B92/tYDIjui0l66En4aXuQ=","/FHWuH7ftxc5u992j4YhVijd0fBiiQLWe\u002BV0ZlveX5c="],"CachedAssets":{},"CachedCopyCandidates":{}} | ||||
| @@ -1 +1 @@ | ||||
| {"GlobalPropertiesHash":"O7YawHw32G/Fh2bs+snZgm9O7okI0WYgTQmXM931znY=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["mhE0FuBM0BOF9SNOE0rY9setCw2ye3UUh7cEPjhgDdY=","AE1TAk4qas82IfXTyRHo\u002BfMlnTE4e7B1AJrEn9ZhBwo="],"CachedAssets":{},"CachedCopyCandidates":{}} | ||||
| {"GlobalPropertiesHash":"O7YawHw32G/Fh2bs+snZgm9O7okI0WYgTQmXM931znY=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["mhE0FuBM0BOF9SNOE0rY9setCw2ye3UUh7cEPjhgDdY=","t631p0kaOa0gMRIcaPzz1ZVPZ1kuq4pq4kYPWQgoPcM="],"CachedAssets":{},"CachedCopyCandidates":{}} | ||||
| @@ -71,6 +71,14 @@ | ||||
|               "target": "Package", | ||||
|               "version": "[9.0.8, )" | ||||
|             }, | ||||
|             "Serilog.AspNetCore": { | ||||
|               "target": "Package", | ||||
|               "version": "[9.0.0, )" | ||||
|             }, | ||||
|             "Serilog.Sinks.File": { | ||||
|               "target": "Package", | ||||
|               "version": "[7.0.0, )" | ||||
|             }, | ||||
|             "Swashbuckle.AspNetCore": { | ||||
|               "target": "Package", | ||||
|               "version": "[9.0.3, )" | ||||
|   | ||||
| @@ -3,10 +3,10 @@ | ||||
|   <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> | ||||
|     <Import Project="$(NuGetPackageRoot)system.text.json\9.0.8\buildTransitive\net8.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\9.0.8\buildTransitive\net8.0\System.Text.Json.targets')" /> | ||||
|     <Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server\9.0.0\build\Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server\9.0.0\build\Microsoft.Extensions.ApiDescription.Server.targets')" /> | ||||
|     <Import Project="$(NuGetPackageRoot)mono.texttemplating\3.0.0\buildTransitive\Mono.TextTemplating.targets" Condition="Exists('$(NuGetPackageRoot)mono.texttemplating\3.0.0\buildTransitive\Mono.TextTemplating.targets')" /> | ||||
|     <Import Project="$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets')" /> | ||||
|     <Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder\9.0.8\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder\9.0.8\buildTransitive\netstandard2.0\Microsoft.Extensions.Configuration.Binder.targets')" /> | ||||
|     <Import Project="$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Options.targets')" /> | ||||
|     <Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\9.0.8\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets')" /> | ||||
|     <Import Project="$(NuGetPackageRoot)mono.texttemplating\3.0.0\buildTransitive\Mono.TextTemplating.targets" Condition="Exists('$(NuGetPackageRoot)mono.texttemplating\3.0.0\buildTransitive\Mono.TextTemplating.targets')" /> | ||||
|     <Import Project="$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.codeanalysis.analyzers\3.3.4\buildTransitive\Microsoft.CodeAnalysis.Analyzers.targets')" /> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
		Reference in New Issue
	
	Block a user