コード例 #1
0
        DtoResultadosProcesoElectoral ContarVotosProcesoElectoralPluripersonal(Pe01_ProcesoElectoral procesoElectoral)
        {
            if (procesoElectoral != null)
            {
                var listasProceso = procesoElectoral.Listas;
                if (listasProceso?.Count() > 0)
                {
                    var numeroEscaniosProceso = procesoElectoral.Eleccion?.Escanios?.Count() ?? 0;
                    if (numeroEscaniosProceso == 0)
                    {
                        throw new Exception("El número de escaños de un proceso electorál no puede ser cero");
                    }
                    var votosProceso    = _votoRepository.Get <Mv01_Voto>(x => x.Estado.Equals(Auditoria.EstadoActivo) && x.ProcesoElectoralId == procesoElectoral.Id);
                    var resultadoListas = new List <DtoVotoDetalleLista>();
                    listasProceso.ToList()?.ForEach(x =>
                    {
                        resultadoListas.Add(ObtenerInformacionLista(x, votosProceso, numeroEscaniosProceso));
                    });
                    AsignarVotosListas(resultadoListas, numeroEscaniosProceso);

                    return(new DtoResultadosProcesoElectoral()
                    {
                        NumeroEmpadronados = procesoElectoral?.PadronesVotacion?.Count() ?? 0,
                        NumeroVotosValidos = resultadoListas?.Sum(x => x.CantidadVotos) ?? 0,
                        NumeroVotosBlancos = resultadoListas?.Sum(x => x.CantidadBlancos) ?? 0,
                        NumeroVotosNulos = resultadoListas?.Sum(x => x.CantidadNulos) ?? 0,
                        PorcentajeVotantes = (procesoElectoral?.PadronesVotacion?.Count() ?? 0) == 0 ? 0:  ((votosProceso?.Count() ?? 0) / (procesoElectoral.PadronesVotacion.Count()) * 100),
                        DetallesListas = resultadoListas
                    });
                }
                throw new Exception("Proceso sin candidatos ");
            }
            throw new Exception("Proceso electoral votación no existe");
        }