Fix Controllers Resultados
This commit is contained in:
@@ -247,7 +247,6 @@ export const getEstablecimientosPorMunicipio = async (municipioId: string): Prom
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getPanelElectoral = async (eleccionId: number, ambitoId: string | null, categoriaId: number): Promise<PanelElectoralDto> => {
|
export const getPanelElectoral = async (eleccionId: number, ambitoId: string | null, categoriaId: number): Promise<PanelElectoralDto> => {
|
||||||
|
|
||||||
// Construimos la URL base
|
// Construimos la URL base
|
||||||
let url = ambitoId
|
let url = ambitoId
|
||||||
? `/elecciones/${eleccionId}/panel/${ambitoId}`
|
? `/elecciones/${eleccionId}/panel/${ambitoId}`
|
||||||
|
|||||||
@@ -138,15 +138,13 @@ public class ResultadosController : ControllerBase
|
|||||||
var resultadosPorMunicipio = await _dbContext.ResultadosVotos
|
var resultadosPorMunicipio = await _dbContext.ResultadosVotos
|
||||||
.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Include(r => r.AgrupacionPolitica)
|
.Include(r => r.AgrupacionPolitica)
|
||||||
.Where(r => r.EleccionId == eleccionId && r.AmbitoGeografico.NivelId == 30) // Nivel 30 = Municipio
|
.Where(r => r.EleccionId == eleccionId && r.AmbitoGeografico.DistritoId == distritoId && r.AmbitoGeografico.NivelId == 30) // Nivel 30 = Municipio
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
// Obtenemos TODOS los logos relevantes en una sola consulta
|
|
||||||
var todosLosLogos = await _dbContext.LogosAgrupacionesCategorias.AsNoTracking()
|
var todosLosLogos = await _dbContext.LogosAgrupacionesCategorias.AsNoTracking()
|
||||||
.Where(l => l.EleccionId == eleccionId || l.EleccionId == 0) // Trae los de la elección actual y los de fallback
|
.Where(l => l.EleccionId == eleccionId || l.EleccionId == 0)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
// --- LÓGICA DE AGRUPACIÓN Y CÁLCULO ---
|
|
||||||
var resultadosAgrupados = resultadosPorMunicipio
|
var resultadosAgrupados = resultadosPorMunicipio
|
||||||
.GroupBy(r => r.CategoriaId)
|
.GroupBy(r => r.CategoriaId)
|
||||||
.Select(g => new
|
.Select(g => new
|
||||||
@@ -155,7 +153,6 @@ public class ResultadosController : ControllerBase
|
|||||||
CategoriaNombre = estadosPorCategoria.ContainsKey(g.Key) ? estadosPorCategoria[g.Key].CategoriaElectoral.Nombre : "Desconocido",
|
CategoriaNombre = estadosPorCategoria.ContainsKey(g.Key) ? estadosPorCategoria[g.Key].CategoriaElectoral.Nombre : "Desconocido",
|
||||||
EstadoRecuento = estadosPorCategoria.GetValueOrDefault(g.Key),
|
EstadoRecuento = estadosPorCategoria.GetValueOrDefault(g.Key),
|
||||||
TotalVotosCategoria = g.Sum(r => r.CantidadVotos),
|
TotalVotosCategoria = g.Sum(r => r.CantidadVotos),
|
||||||
// Agrupamos por el ID de la agrupación, no por el objeto, para evitar duplicados
|
|
||||||
ResultadosAgrupados = g.GroupBy(r => r.AgrupacionPoliticaId)
|
ResultadosAgrupados = g.GroupBy(r => r.AgrupacionPoliticaId)
|
||||||
.Select(partidoGroup => new
|
.Select(partidoGroup => new
|
||||||
{
|
{
|
||||||
@@ -172,10 +169,7 @@ public class ResultadosController : ControllerBase
|
|||||||
Resultados = g.ResultadosAgrupados
|
Resultados = g.ResultadosAgrupados
|
||||||
.Select(r =>
|
.Select(r =>
|
||||||
{
|
{
|
||||||
// --- USAMOS EL NUEVO MÉTODO HELPER ---
|
|
||||||
// Para el resumen provincial, el ámbito es siempre el de la provincia.
|
|
||||||
var logoUrl = GetLogoUrl(r.Agrupacion.Id, g.CategoriaId, provincia.Id, todosLosLogos);
|
var logoUrl = GetLogoUrl(r.Agrupacion.Id, g.CategoriaId, provincia.Id, todosLosLogos);
|
||||||
|
|
||||||
return new
|
return new
|
||||||
{
|
{
|
||||||
Id = r.Agrupacion.Id,
|
Id = r.Agrupacion.Id,
|
||||||
@@ -196,7 +190,6 @@ public class ResultadosController : ControllerBase
|
|||||||
return Ok(resultadosAgrupados);
|
return Ok(resultadosAgrupados);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpGet("bancas-por-seccion/{seccionId}/{camara}")]
|
[HttpGet("bancas-por-seccion/{seccionId}/{camara}")]
|
||||||
public async Task<IActionResult> GetBancasPorSeccion([FromRoute] int eleccionId, string seccionId, string camara)
|
public async Task<IActionResult> GetBancasPorSeccion([FromRoute] int eleccionId, string seccionId, string camara)
|
||||||
{
|
{
|
||||||
@@ -1011,52 +1004,47 @@ public class ResultadosController : ControllerBase
|
|||||||
[HttpGet("panel/{ambitoId?}")]
|
[HttpGet("panel/{ambitoId?}")]
|
||||||
public async Task<IActionResult> GetPanelElectoral(int eleccionId, string? ambitoId, [FromQuery] int categoriaId)
|
public async Task<IActionResult> GetPanelElectoral(int eleccionId, string? ambitoId, [FromQuery] int categoriaId)
|
||||||
{
|
{
|
||||||
// Caso 1: Sin ID -> Vista Nacional
|
|
||||||
if (string.IsNullOrEmpty(ambitoId))
|
if (string.IsNullOrEmpty(ambitoId))
|
||||||
{
|
{
|
||||||
return await GetPanelNacional(eleccionId, categoriaId);
|
return await GetPanelNacional(eleccionId, categoriaId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Intenta interpretar el ambitoId como un ID numérico de municipio.
|
bool esProvincia = await _dbContext.AmbitosGeograficos
|
||||||
|
.AsNoTracking()
|
||||||
|
.AnyAsync(a => a.NivelId == 10 && a.DistritoId == ambitoId);
|
||||||
|
|
||||||
|
if (esProvincia)
|
||||||
|
{
|
||||||
|
return await GetPanelProvincial(eleccionId, ambitoId, categoriaId);
|
||||||
|
}
|
||||||
|
|
||||||
if (int.TryParse(ambitoId, out int idNumerico))
|
if (int.TryParse(ambitoId, out int idNumerico))
|
||||||
{
|
{
|
||||||
// Consulta a la BD para verificar si existe un municipio (NivelId=30) con este ID.
|
|
||||||
// Esta consulta es muy rápida y resuelve la ambigüedad.
|
|
||||||
bool esMunicipio = await _dbContext.AmbitosGeograficos
|
bool esMunicipio = await _dbContext.AmbitosGeograficos
|
||||||
|
.AsNoTracking()
|
||||||
.AnyAsync(a => a.Id == idNumerico && a.NivelId == 30);
|
.AnyAsync(a => a.Id == idNumerico && a.NivelId == 30);
|
||||||
|
|
||||||
if (esMunicipio)
|
if (esMunicipio)
|
||||||
{
|
{
|
||||||
// Si es un municipio válido, llama al método municipal.
|
|
||||||
return await GetPanelMunicipal(eleccionId, idNumerico, categoriaId);
|
return await GetPanelMunicipal(eleccionId, idNumerico, categoriaId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Si no es un ID de municipio válido (o no es un número),
|
return NotFound($"No se pudo encontrar un ámbito electoral válido para el ID '{ambitoId}'.");
|
||||||
// se asume que es un distritoId provincial y se llama al método provincial.
|
|
||||||
return await GetPanelProvincial(eleccionId, ambitoId, categoriaId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<IActionResult> GetPanelMunicipal(int eleccionId, int ambitoId, int categoriaId)
|
private async Task<IActionResult> GetPanelMunicipal(int eleccionId, int ambitoId, int categoriaId)
|
||||||
{
|
{
|
||||||
// 1. Obtener la entidad del municipio y, a partir de ella, la de su provincia.
|
|
||||||
var municipio = await _dbContext.AmbitosGeograficos.AsNoTracking()
|
var municipio = await _dbContext.AmbitosGeograficos.AsNoTracking()
|
||||||
.FirstOrDefaultAsync(a => a.Id == ambitoId && a.NivelId == 30);
|
.FirstOrDefaultAsync(a => a.Id == ambitoId && a.NivelId == 30);
|
||||||
|
|
||||||
if (municipio == null) return NotFound($"No se encontró el municipio con ID {ambitoId}.");
|
if (municipio == null) return NotFound($"No se encontró el municipio con ID {ambitoId}.");
|
||||||
|
|
||||||
var provincia = await _dbContext.AmbitosGeograficos.AsNoTracking()
|
var provincia = await _dbContext.AmbitosGeograficos.AsNoTracking()
|
||||||
.FirstOrDefaultAsync(a => a.DistritoId == municipio.DistritoId && a.NivelId == 10);
|
.FirstOrDefaultAsync(a => a.DistritoId == municipio.DistritoId && a.NivelId == 10);
|
||||||
|
|
||||||
// Si por alguna razón no encontramos la provincia, no podemos continuar.
|
|
||||||
if (provincia == null) return NotFound($"No se pudo determinar la provincia para el municipio con ID {ambitoId}.");
|
if (provincia == null) return NotFound($"No se pudo determinar la provincia para el municipio con ID {ambitoId}.");
|
||||||
|
|
||||||
// 2. Cargar todos los overrides de candidatos y logos relevantes (igual que en la vista provincial).
|
var todosLosOverrides = await _dbContext.CandidatosOverrides.AsNoTracking().Where(c => c.EleccionId == eleccionId || c.EleccionId == 0).ToListAsync();
|
||||||
var todosLosOverrides = await _dbContext.CandidatosOverrides.AsNoTracking()
|
var todosLosLogos = await _dbContext.LogosAgrupacionesCategorias.AsNoTracking().Where(l => l.EleccionId == eleccionId || l.EleccionId == 0).ToListAsync();
|
||||||
.Where(c => c.EleccionId == eleccionId || c.EleccionId == 0).ToListAsync();
|
|
||||||
var todosLosLogos = await _dbContext.LogosAgrupacionesCategorias.AsNoTracking()
|
|
||||||
.Where(l => l.EleccionId == eleccionId || l.EleccionId == 0).ToListAsync();
|
|
||||||
|
|
||||||
// 3. Obtener los votos solo para ESE municipio (esto no cambia).
|
|
||||||
var resultadosCrudos = await _dbContext.ResultadosVotos.AsNoTracking()
|
var resultadosCrudos = await _dbContext.ResultadosVotos.AsNoTracking()
|
||||||
.Include(r => r.AgrupacionPolitica)
|
.Include(r => r.AgrupacionPolitica)
|
||||||
.Where(r => r.EleccionId == eleccionId &&
|
.Where(r => r.EleccionId == eleccionId &&
|
||||||
@@ -1064,26 +1052,17 @@ public class ResultadosController : ControllerBase
|
|||||||
r.AmbitoGeograficoId == ambitoId)
|
r.AmbitoGeograficoId == ambitoId)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
// El resto de la lógica es muy similar, pero ahora usamos los helpers con el ID de la provincia.
|
|
||||||
if (!resultadosCrudos.Any())
|
if (!resultadosCrudos.Any())
|
||||||
{
|
{
|
||||||
return Ok(new PanelElectoralDto
|
return Ok(new PanelElectoralDto { AmbitoNombre = municipio.Nombre, MapaData = new List<ResultadoMapaDto>(), ResultadosPanel = new List<AgrupacionResultadoDto>(), EstadoRecuento = new EstadoRecuentoDto() });
|
||||||
{
|
|
||||||
AmbitoNombre = municipio.Nombre,
|
|
||||||
MapaData = new List<ResultadoMapaDto>(),
|
|
||||||
ResultadosPanel = new List<AgrupacionResultadoDto>(),
|
|
||||||
EstadoRecuento = new EstadoRecuentoDto()
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var totalVotosMunicipio = (decimal)resultadosCrudos.Sum(r => r.CantidadVotos);
|
var totalVotosMunicipio = (decimal)resultadosCrudos.Sum(r => r.CantidadVotos);
|
||||||
var resultadosPanel = resultadosCrudos
|
var resultadosPanel = resultadosCrudos
|
||||||
.Select(g =>
|
.Select(g =>
|
||||||
{
|
{
|
||||||
// 4. ¡LA CLAVE! Usamos el ID de la PROVINCIA para buscar el override.
|
|
||||||
var candidatoMatch = FindBestCandidatoMatch(todosLosOverrides, g.AgrupacionPolitica.Id, categoriaId, provincia.Id, eleccionId);
|
var candidatoMatch = FindBestCandidatoMatch(todosLosOverrides, g.AgrupacionPolitica.Id, categoriaId, provincia.Id, eleccionId);
|
||||||
var logoMatch = FindBestLogoMatch(todosLosLogos, g.AgrupacionPolitica.Id, categoriaId, provincia.Id, eleccionId);
|
var logoMatch = FindBestLogoMatch(todosLosLogos, g.AgrupacionPolitica.Id, categoriaId, provincia.Id, eleccionId);
|
||||||
|
|
||||||
return new AgrupacionResultadoDto
|
return new AgrupacionResultadoDto
|
||||||
{
|
{
|
||||||
Id = g.AgrupacionPolitica.Id,
|
Id = g.AgrupacionPolitica.Id,
|
||||||
@@ -1092,7 +1071,6 @@ public class ResultadosController : ControllerBase
|
|||||||
Color = g.AgrupacionPolitica.Color,
|
Color = g.AgrupacionPolitica.Color,
|
||||||
Votos = g.CantidadVotos,
|
Votos = g.CantidadVotos,
|
||||||
Porcentaje = totalVotosMunicipio > 0 ? (g.CantidadVotos / totalVotosMunicipio) * 100 : 0,
|
Porcentaje = totalVotosMunicipio > 0 ? (g.CantidadVotos / totalVotosMunicipio) * 100 : 0,
|
||||||
// Asignamos los datos del override encontrado
|
|
||||||
NombreCandidato = candidatoMatch?.NombreCandidato,
|
NombreCandidato = candidatoMatch?.NombreCandidato,
|
||||||
LogoUrl = logoMatch?.LogoUrl
|
LogoUrl = logoMatch?.LogoUrl
|
||||||
};
|
};
|
||||||
@@ -1119,44 +1097,50 @@ public class ResultadosController : ControllerBase
|
|||||||
return Ok(respuesta);
|
return Ok(respuesta);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Este método se ejecutará cuando la URL sea, por ejemplo, /api/elecciones/2/panel/02?categoriaId=2
|
|
||||||
private async Task<IActionResult> GetPanelProvincial(int eleccionId, string distritoId, int categoriaId)
|
private async Task<IActionResult> GetPanelProvincial(int eleccionId, string distritoId, int categoriaId)
|
||||||
{
|
{
|
||||||
var provincia = await _dbContext.AmbitosGeograficos.AsNoTracking()
|
var provincia = await _dbContext.AmbitosGeograficos.AsNoTracking()
|
||||||
.FirstOrDefaultAsync(a => a.DistritoId == distritoId && a.NivelId == 10);
|
.FirstOrDefaultAsync(a => a.DistritoId == distritoId && a.NivelId == 10);
|
||||||
if (provincia == null) return NotFound($"No se encontró la provincia con DistritoId {distritoId}.");
|
if (provincia == null) return NotFound($"No se encontró la provincia con DistritoId {distritoId}.");
|
||||||
|
|
||||||
// --- INICIO DE LA MODIFICACIÓN ---
|
|
||||||
var todosLosOverrides = await _dbContext.CandidatosOverrides.AsNoTracking().Where(c => c.EleccionId == eleccionId || c.EleccionId == 0).ToListAsync();
|
var todosLosOverrides = await _dbContext.CandidatosOverrides.AsNoTracking().Where(c => c.EleccionId == eleccionId || c.EleccionId == 0).ToListAsync();
|
||||||
var todosLosLogos = await _dbContext.LogosAgrupacionesCategorias.AsNoTracking().Where(l => l.EleccionId == eleccionId || l.EleccionId == 0).ToListAsync();
|
var todosLosLogos = await _dbContext.LogosAgrupacionesCategorias.AsNoTracking().Where(l => l.EleccionId == eleccionId || l.EleccionId == 0).ToListAsync();
|
||||||
// --- FIN DE LA MODIFICACIÓN ---
|
|
||||||
|
|
||||||
// ... (la lógica de agregación de votos no cambia)
|
var votosAgregados = await _dbContext.ResultadosVotos
|
||||||
var resultadosAgregados = await _dbContext.ResultadosVotos.AsNoTracking()
|
.AsNoTracking()
|
||||||
.Where(r => r.EleccionId == eleccionId && r.CategoriaId == categoriaId && r.AmbitoGeografico.DistritoId == distritoId && r.AmbitoGeografico.NivelId == 30)
|
.Where(r => r.EleccionId == eleccionId
|
||||||
.GroupBy(r => r.AgrupacionPolitica)
|
&& r.CategoriaId == categoriaId
|
||||||
.Select(g => new { Agrupacion = g.Key, TotalVotos = g.Sum(r => r.CantidadVotos) })
|
&& r.AmbitoGeografico.DistritoId == distritoId
|
||||||
|
&& r.AmbitoGeografico.NivelId == 30)
|
||||||
|
.GroupBy(r => new { r.AgrupacionPoliticaId, r.AgrupacionPolitica.Nombre, r.AgrupacionPolitica.NombreCorto, r.AgrupacionPolitica.Color })
|
||||||
|
.Select(g => new
|
||||||
|
{
|
||||||
|
AgrupacionId = g.Key.AgrupacionPoliticaId,
|
||||||
|
Nombre = g.Key.Nombre,
|
||||||
|
NombreCorto = g.Key.NombreCorto,
|
||||||
|
Color = g.Key.Color,
|
||||||
|
TotalVotos = g.Sum(r => r.CantidadVotos)
|
||||||
|
})
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
var totalVotosProvincia = (decimal)resultadosAgregados.Sum(r => r.TotalVotos);
|
var totalVotosProvincia = (decimal)votosAgregados.Sum(r => r.TotalVotos);
|
||||||
|
|
||||||
var resultadosPanel = resultadosAgregados
|
var resultadosPanel = votosAgregados
|
||||||
.Select(g =>
|
.Select(g =>
|
||||||
{
|
{
|
||||||
// Aplicamos la misma lógica de búsqueda de overrides
|
var candidatoMatch = FindBestCandidatoMatch(todosLosOverrides, g.AgrupacionId, categoriaId, provincia.Id, eleccionId);
|
||||||
var candidatoMatch = FindBestCandidatoMatch(todosLosOverrides, g.Agrupacion.Id, categoriaId, provincia.Id, eleccionId);
|
var logoMatch = FindBestLogoMatch(todosLosLogos, g.AgrupacionId, categoriaId, provincia.Id, eleccionId);
|
||||||
var logoMatch = FindBestLogoMatch(todosLosLogos, g.Agrupacion.Id, categoriaId, provincia.Id, eleccionId);
|
|
||||||
|
|
||||||
return new AgrupacionResultadoDto
|
return new AgrupacionResultadoDto
|
||||||
{
|
{
|
||||||
Id = g.Agrupacion.Id,
|
Id = g.AgrupacionId,
|
||||||
Nombre = g.Agrupacion.Nombre,
|
Nombre = g.Nombre,
|
||||||
NombreCorto = g.Agrupacion.NombreCorto,
|
NombreCorto = g.NombreCorto,
|
||||||
Color = g.Agrupacion.Color,
|
Color = g.Color,
|
||||||
Votos = g.TotalVotos,
|
Votos = g.TotalVotos,
|
||||||
Porcentaje = totalVotosProvincia > 0 ? (g.TotalVotos / totalVotosProvincia) * 100 : 0,
|
Porcentaje = totalVotosProvincia > 0 ? (g.TotalVotos / totalVotosProvincia) * 100 : 0,
|
||||||
NombreCandidato = candidatoMatch?.NombreCandidato, // <-- DATO AÑADIDO
|
NombreCandidato = candidatoMatch?.NombreCandidato,
|
||||||
LogoUrl = logoMatch?.LogoUrl // <-- DATO AÑADIDO
|
LogoUrl = logoMatch?.LogoUrl
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
.OrderByDescending(r => r.Votos)
|
.OrderByDescending(r => r.Votos)
|
||||||
@@ -1168,7 +1152,7 @@ public class ResultadosController : ControllerBase
|
|||||||
var respuesta = new PanelElectoralDto
|
var respuesta = new PanelElectoralDto
|
||||||
{
|
{
|
||||||
AmbitoNombre = provincia.Nombre,
|
AmbitoNombre = provincia.Nombre,
|
||||||
MapaData = new List<ResultadoMapaDto>(), // Se carga por separado
|
MapaData = new List<ResultadoMapaDto>(),
|
||||||
ResultadosPanel = resultadosPanel,
|
ResultadosPanel = resultadosPanel,
|
||||||
EstadoRecuento = new EstadoRecuentoDto
|
EstadoRecuento = new EstadoRecuentoDto
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Api")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Api")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+99d56033b1a6c61db0f436c43e0d58d9a544cf53")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+4cefb833d9fbf4d6fb71559bef4eefcea7222e86")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Api")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Api")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Api")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Api")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"b5T/+ta4fUd8qpIzUTm3KyEwAYYUsU5ASo+CSFM3ByE=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["YB39loxHH43S4MF8aTOiogcIbBAIq5Qj3dlJkIfYVxI=","t631p0kaOa0gMRIcaPzz1ZVPZ1kuq4pq4kYPWQgoPcM=","PA/Beu9jJpOBY5r5Y1CiSyqrARA2j7LHeWYUnEZpQO8=","E2ODTAlJxzsXY1iP1eB/02NIUK\u002BnQveGlWAOHY1cpgA=","Of8nTYw5l\u002BgiAJo7z6XYIntG2tUtCFcILzHbTiiXn\u002Bw=","PDy\u002BTiayvNAoXXBEgwC/kCojpgOOMI6RQOIoSXs3LJc=","ePXrkee3hv3wHUr8S7aYmRVvXUTxQf76zApKGv3/l3o=","DXx5dQywLo3UsY2zQaUG\u002BbW4ObiYbybxPBWxeJD2bhk=","muVh5sjH3sgdvuz4TbuTwTggX1uDnsWXgoosMKST/r4=","nrP5gSIA5vzgp8v12CAOr943QYLxU4Til6oiCcWSNI8=","yMd45U9BK07I3b3fBQ627PWTYyZ2ZjrmFc5VD\u002BQVx1Q=","xKskvcoJU0RVRN1a5dRqKRM7IP5vmmbraUaPFYjhnCc=","p7BjQw7aSZjfOCqmKm7/kPO9qegEQZBfirMjlOx/I1I=","MI0hVVLYavEhzHq/Z1UbajfrxanA1aET19aOH8G2ImI=","2dY8CqW9fAY8yN0foa\u002BZp2gc0RfPoPmB/tKSj1QoTw0=","79rfGLH4UjfTPvc//\u002BZjnBqdz585pUtYZ0/hwE2iEic=","PUqgvMdfTQkF5lpBVtHv2teQLV5WaEH0xMKTmINe2YQ=","\u002BFI0b4ppdxel/pby/y/xKImHrtdxo2g83OhskdREyIg=","jEESu6\u002BhbDvNMjLt/6OufuK\u002B9cHmzx\u002BTCIn4fWa9nSc=","UaCPJEvR4nVxxGCB5CUnRlJiw4drDW3Q3Nss\u002Bya2cv4=","ZqF13CT3rok/Gzl\u002BMsw3q9X1nf65bwEVD670efE3k\u002Bk=","gH3W7phPzBCY1DAVn4YnP4SA8Uaq73TpctS0yFSvzNM=","u5F4J4\u002BLHUIOCz5ze5NSF42mDeAaAfi\u002BKN3Ay3rKLY8=","GeUUID0ymF5rrBWdX7YHzWA5GiGkNWCNUog4sp4xL3c=","3BxX4I0JXoDqmE8m0BrRZhixBRlHEueS3jAlmUXE/I8=","IlET7uqumshgFxIEvfKRskON\u002BeAKZ7OfD/kCeAwn0PM=","NN2rS\u002B89ZAITWlNODPcF/lHIh3ZNmAHvUX4EjqSkX4s=","OE89N/FsYhRU1Dy5Ne83ehzSwlNc/RcxHrJpHxPHfqY=","QI7IL4TkYEqfUiIEXQiVCaZx4vrM9/wZlvOrhnUd4jQ=","UIntj4QoiyGr7bnJN8KK5PGrhQd89m\u002BLfh4T8VKPxAk=","J\u002Bfv/j3QyIW9bxolc46wDka8641F622/QgIllt0Re80=","Y/o0rakw9VYzEfz9M659qW77P9kvz\u002B2gTe1Lv3zgUDE=","8QWUReqP8upfOnmA5lMNgBxAfYJ1z3zv/WYBUXBEiog=","1L7p1HQI/Uoosqm7RyBuYjKbRFTycFgJEtHPSdlXWhU=","QcSegZUKmWiZEM0Lb/6DeWnkj3Sf005BA6CwcKCfcn8=","BY4GeeFiQbYpWuSzb2XIY4JatmLNOZ6dhKs4ZT92nsM=","P8JRhYPpULTLMAydvl3Ky\u002B92/tYDIjui0l66En4aXuQ=","fuuUBrp2adKb2JTGKx6DlNAi3cvFULSlaTZ159rWB7w="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"b5T/+ta4fUd8qpIzUTm3KyEwAYYUsU5ASo+CSFM3ByE=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["YB39loxHH43S4MF8aTOiogcIbBAIq5Qj3dlJkIfYVxI=","t631p0kaOa0gMRIcaPzz1ZVPZ1kuq4pq4kYPWQgoPcM=","PA/Beu9jJpOBY5r5Y1CiSyqrARA2j7LHeWYUnEZpQO8=","E2ODTAlJxzsXY1iP1eB/02NIUK\u002BnQveGlWAOHY1cpgA=","PDy\u002BTiayvNAoXXBEgwC/kCojpgOOMI6RQOIoSXs3LJc=","ePXrkee3hv3wHUr8S7aYmRVvXUTxQf76zApKGv3/l3o=","DXx5dQywLo3UsY2zQaUG\u002BbW4ObiYbybxPBWxeJD2bhk=","muVh5sjH3sgdvuz4TbuTwTggX1uDnsWXgoosMKST/r4=","nrP5gSIA5vzgp8v12CAOr943QYLxU4Til6oiCcWSNI8=","yMd45U9BK07I3b3fBQ627PWTYyZ2ZjrmFc5VD\u002BQVx1Q=","xKskvcoJU0RVRN1a5dRqKRM7IP5vmmbraUaPFYjhnCc=","p7BjQw7aSZjfOCqmKm7/kPO9qegEQZBfirMjlOx/I1I=","MI0hVVLYavEhzHq/Z1UbajfrxanA1aET19aOH8G2ImI=","2dY8CqW9fAY8yN0foa\u002BZp2gc0RfPoPmB/tKSj1QoTw0=","79rfGLH4UjfTPvc//\u002BZjnBqdz585pUtYZ0/hwE2iEic=","PUqgvMdfTQkF5lpBVtHv2teQLV5WaEH0xMKTmINe2YQ=","\u002BFI0b4ppdxel/pby/y/xKImHrtdxo2g83OhskdREyIg=","jEESu6\u002BhbDvNMjLt/6OufuK\u002B9cHmzx\u002BTCIn4fWa9nSc=","UaCPJEvR4nVxxGCB5CUnRlJiw4drDW3Q3Nss\u002Bya2cv4=","ZqF13CT3rok/Gzl\u002BMsw3q9X1nf65bwEVD670efE3k\u002Bk=","gH3W7phPzBCY1DAVn4YnP4SA8Uaq73TpctS0yFSvzNM=","u5F4J4\u002BLHUIOCz5ze5NSF42mDeAaAfi\u002BKN3Ay3rKLY8=","GeUUID0ymF5rrBWdX7YHzWA5GiGkNWCNUog4sp4xL3c=","3BxX4I0JXoDqmE8m0BrRZhixBRlHEueS3jAlmUXE/I8=","IlET7uqumshgFxIEvfKRskON\u002BeAKZ7OfD/kCeAwn0PM=","NN2rS\u002B89ZAITWlNODPcF/lHIh3ZNmAHvUX4EjqSkX4s=","OE89N/FsYhRU1Dy5Ne83ehzSwlNc/RcxHrJpHxPHfqY=","QI7IL4TkYEqfUiIEXQiVCaZx4vrM9/wZlvOrhnUd4jQ=","UIntj4QoiyGr7bnJN8KK5PGrhQd89m\u002BLfh4T8VKPxAk=","J\u002Bfv/j3QyIW9bxolc46wDka8641F622/QgIllt0Re80=","Y/o0rakw9VYzEfz9M659qW77P9kvz\u002B2gTe1Lv3zgUDE=","8QWUReqP8upfOnmA5lMNgBxAfYJ1z3zv/WYBUXBEiog=","1L7p1HQI/Uoosqm7RyBuYjKbRFTycFgJEtHPSdlXWhU=","ZxPpBx5gkHuilHLcg/vcjvaXswvTqiUM0YaAEwbNSLI=","g/ml0bg3ScnSqw84EVi2DZNU8NSjt4OY/A5cmmU2l3E=","BY4GeeFiQbYpWuSzb2XIY4JatmLNOZ6dhKs4ZT92nsM=","P8JRhYPpULTLMAydvl3Ky\u002B92/tYDIjui0l66En4aXuQ=","HXLaMFGPnNaMINcNCkJL5ARtLenvbHnfhtgZAZYkfU4="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"tJTBjV/i0Ihkc6XuOu69wxL8PBac9c9Kak6srMso4pU=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["YB39loxHH43S4MF8aTOiogcIbBAIq5Qj3dlJkIfYVxI=","t631p0kaOa0gMRIcaPzz1ZVPZ1kuq4pq4kYPWQgoPcM=","PA/Beu9jJpOBY5r5Y1CiSyqrARA2j7LHeWYUnEZpQO8=","E2ODTAlJxzsXY1iP1eB/02NIUK\u002BnQveGlWAOHY1cpgA=","Of8nTYw5l\u002BgiAJo7z6XYIntG2tUtCFcILzHbTiiXn\u002Bw=","PDy\u002BTiayvNAoXXBEgwC/kCojpgOOMI6RQOIoSXs3LJc=","ePXrkee3hv3wHUr8S7aYmRVvXUTxQf76zApKGv3/l3o=","DXx5dQywLo3UsY2zQaUG\u002BbW4ObiYbybxPBWxeJD2bhk=","muVh5sjH3sgdvuz4TbuTwTggX1uDnsWXgoosMKST/r4=","nrP5gSIA5vzgp8v12CAOr943QYLxU4Til6oiCcWSNI8=","yMd45U9BK07I3b3fBQ627PWTYyZ2ZjrmFc5VD\u002BQVx1Q=","xKskvcoJU0RVRN1a5dRqKRM7IP5vmmbraUaPFYjhnCc=","p7BjQw7aSZjfOCqmKm7/kPO9qegEQZBfirMjlOx/I1I=","MI0hVVLYavEhzHq/Z1UbajfrxanA1aET19aOH8G2ImI=","2dY8CqW9fAY8yN0foa\u002BZp2gc0RfPoPmB/tKSj1QoTw0=","79rfGLH4UjfTPvc//\u002BZjnBqdz585pUtYZ0/hwE2iEic=","PUqgvMdfTQkF5lpBVtHv2teQLV5WaEH0xMKTmINe2YQ=","\u002BFI0b4ppdxel/pby/y/xKImHrtdxo2g83OhskdREyIg=","jEESu6\u002BhbDvNMjLt/6OufuK\u002B9cHmzx\u002BTCIn4fWa9nSc=","UaCPJEvR4nVxxGCB5CUnRlJiw4drDW3Q3Nss\u002Bya2cv4=","ZqF13CT3rok/Gzl\u002BMsw3q9X1nf65bwEVD670efE3k\u002Bk=","gH3W7phPzBCY1DAVn4YnP4SA8Uaq73TpctS0yFSvzNM=","u5F4J4\u002BLHUIOCz5ze5NSF42mDeAaAfi\u002BKN3Ay3rKLY8=","GeUUID0ymF5rrBWdX7YHzWA5GiGkNWCNUog4sp4xL3c=","3BxX4I0JXoDqmE8m0BrRZhixBRlHEueS3jAlmUXE/I8=","IlET7uqumshgFxIEvfKRskON\u002BeAKZ7OfD/kCeAwn0PM=","NN2rS\u002B89ZAITWlNODPcF/lHIh3ZNmAHvUX4EjqSkX4s=","OE89N/FsYhRU1Dy5Ne83ehzSwlNc/RcxHrJpHxPHfqY=","QI7IL4TkYEqfUiIEXQiVCaZx4vrM9/wZlvOrhnUd4jQ=","UIntj4QoiyGr7bnJN8KK5PGrhQd89m\u002BLfh4T8VKPxAk=","J\u002Bfv/j3QyIW9bxolc46wDka8641F622/QgIllt0Re80=","Y/o0rakw9VYzEfz9M659qW77P9kvz\u002B2gTe1Lv3zgUDE=","8QWUReqP8upfOnmA5lMNgBxAfYJ1z3zv/WYBUXBEiog=","1L7p1HQI/Uoosqm7RyBuYjKbRFTycFgJEtHPSdlXWhU=","QcSegZUKmWiZEM0Lb/6DeWnkj3Sf005BA6CwcKCfcn8=","BY4GeeFiQbYpWuSzb2XIY4JatmLNOZ6dhKs4ZT92nsM=","P8JRhYPpULTLMAydvl3Ky\u002B92/tYDIjui0l66En4aXuQ=","fuuUBrp2adKb2JTGKx6DlNAi3cvFULSlaTZ159rWB7w="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"tJTBjV/i0Ihkc6XuOu69wxL8PBac9c9Kak6srMso4pU=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["YB39loxHH43S4MF8aTOiogcIbBAIq5Qj3dlJkIfYVxI=","t631p0kaOa0gMRIcaPzz1ZVPZ1kuq4pq4kYPWQgoPcM=","PA/Beu9jJpOBY5r5Y1CiSyqrARA2j7LHeWYUnEZpQO8=","E2ODTAlJxzsXY1iP1eB/02NIUK\u002BnQveGlWAOHY1cpgA=","PDy\u002BTiayvNAoXXBEgwC/kCojpgOOMI6RQOIoSXs3LJc=","ePXrkee3hv3wHUr8S7aYmRVvXUTxQf76zApKGv3/l3o=","DXx5dQywLo3UsY2zQaUG\u002BbW4ObiYbybxPBWxeJD2bhk=","muVh5sjH3sgdvuz4TbuTwTggX1uDnsWXgoosMKST/r4=","nrP5gSIA5vzgp8v12CAOr943QYLxU4Til6oiCcWSNI8=","yMd45U9BK07I3b3fBQ627PWTYyZ2ZjrmFc5VD\u002BQVx1Q=","xKskvcoJU0RVRN1a5dRqKRM7IP5vmmbraUaPFYjhnCc=","p7BjQw7aSZjfOCqmKm7/kPO9qegEQZBfirMjlOx/I1I=","MI0hVVLYavEhzHq/Z1UbajfrxanA1aET19aOH8G2ImI=","2dY8CqW9fAY8yN0foa\u002BZp2gc0RfPoPmB/tKSj1QoTw0=","79rfGLH4UjfTPvc//\u002BZjnBqdz585pUtYZ0/hwE2iEic=","PUqgvMdfTQkF5lpBVtHv2teQLV5WaEH0xMKTmINe2YQ=","\u002BFI0b4ppdxel/pby/y/xKImHrtdxo2g83OhskdREyIg=","jEESu6\u002BhbDvNMjLt/6OufuK\u002B9cHmzx\u002BTCIn4fWa9nSc=","UaCPJEvR4nVxxGCB5CUnRlJiw4drDW3Q3Nss\u002Bya2cv4=","ZqF13CT3rok/Gzl\u002BMsw3q9X1nf65bwEVD670efE3k\u002Bk=","gH3W7phPzBCY1DAVn4YnP4SA8Uaq73TpctS0yFSvzNM=","u5F4J4\u002BLHUIOCz5ze5NSF42mDeAaAfi\u002BKN3Ay3rKLY8=","GeUUID0ymF5rrBWdX7YHzWA5GiGkNWCNUog4sp4xL3c=","3BxX4I0JXoDqmE8m0BrRZhixBRlHEueS3jAlmUXE/I8=","IlET7uqumshgFxIEvfKRskON\u002BeAKZ7OfD/kCeAwn0PM=","NN2rS\u002B89ZAITWlNODPcF/lHIh3ZNmAHvUX4EjqSkX4s=","OE89N/FsYhRU1Dy5Ne83ehzSwlNc/RcxHrJpHxPHfqY=","QI7IL4TkYEqfUiIEXQiVCaZx4vrM9/wZlvOrhnUd4jQ=","UIntj4QoiyGr7bnJN8KK5PGrhQd89m\u002BLfh4T8VKPxAk=","J\u002Bfv/j3QyIW9bxolc46wDka8641F622/QgIllt0Re80=","Y/o0rakw9VYzEfz9M659qW77P9kvz\u002B2gTe1Lv3zgUDE=","8QWUReqP8upfOnmA5lMNgBxAfYJ1z3zv/WYBUXBEiog=","1L7p1HQI/Uoosqm7RyBuYjKbRFTycFgJEtHPSdlXWhU=","ZxPpBx5gkHuilHLcg/vcjvaXswvTqiUM0YaAEwbNSLI=","g/ml0bg3ScnSqw84EVi2DZNU8NSjt4OY/A5cmmU2l3E=","BY4GeeFiQbYpWuSzb2XIY4JatmLNOZ6dhKs4ZT92nsM=","P8JRhYPpULTLMAydvl3Ky\u002B92/tYDIjui0l66En4aXuQ=","HXLaMFGPnNaMINcNCkJL5ARtLenvbHnfhtgZAZYkfU4="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Core")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Core")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+99d56033b1a6c61db0f436c43e0d58d9a544cf53")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+4cefb833d9fbf4d6fb71559bef4eefcea7222e86")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Core")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Core")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Core")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Core")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Database")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Database")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+99d56033b1a6c61db0f436c43e0d58d9a544cf53")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+4cefb833d9fbf4d6fb71559bef4eefcea7222e86")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Database")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Database")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Database")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Database")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Infrastructure")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Elecciones.Infrastructure")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+99d56033b1a6c61db0f436c43e0d58d9a544cf53")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+4cefb833d9fbf4d6fb71559bef4eefcea7222e86")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Infrastructure")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Elecciones.Infrastructure")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Infrastructure")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Elecciones.Infrastructure")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
Reference in New Issue
Block a user