Files
Elecciones-2025/Elecciones-Web/src/Elecciones.Api/Program.cs
dmolinari 1d58023113 Feat: Implementar API de resultados y widget de prueba dinámico con selector
API (Backend):
Se crea el endpoint GET /api/resultados/municipio/{id} para servir los resultados detallados de un municipio específico.
Se añade el endpoint GET /api/catalogos/municipios para poblar selectores en el frontend.
Se incluye un endpoint simulado GET /api/resultados/provincia/{id} para facilitar el desarrollo futuro del frontend.
Worker (Servicio de Ingesta):
La lógica de sondeo se ha hecho dinámica. Ahora consulta todos los municipios presentes en la base de datos en lugar de uno solo.
El servicio falso (FakeElectoralApiService) se ha mejorado para generar datos aleatorios para cualquier municipio solicitado.
Frontend (React):
Se crea el componente <MunicipioSelector /> que se carga con datos desde la nueva API de catálogos.
Se integra el selector en la página principal, permitiendo al usuario elegir un municipio.
El componente <MunicipioWidget /> ahora recibe el ID del municipio como una prop y muestra los datos del municipio seleccionado, actualizándose en tiempo real.
Configuración:
Se ajusta la política de CORS en la API para permitir peticiones desde el servidor de desarrollo de Vite (localhost:5173), solucionando errores de conexión en el entorno local.
2025-08-14 15:27:45 -03:00

57 lines
1.7 KiB
C#

using Elecciones.Database;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// --- 1. Configuración de Servicios ---
// Añade la cadena de conexión y el DbContext para Entity Framework Core.
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") // Añade aquí los dominios que necesites
.AllowAnyHeader()
.AllowAnyMethod();
});
});
// Añade la configuración de Swagger/OpenAPI para la documentación de la API.
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// --- 2. Configuración del Pipeline de Peticiones HTTP ---
// 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.
app.Run();