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"); }