public ActionResult Resumen(int?ciudadId, int?facilityId, int?nivelId) { ViewBag.CiudadId = new SelectList(ciudadesManager.GetAllCiudades(), "Id", "Nombre"); ViewBag.FacilityId = ciudadId != null ? new SelectList(facilitiesManager.GetFacilitiesPorCiudad(ciudadId.Value), "Id", "NombreDespliegue") : new SelectList(facilitiesManager.GetAllFacilities(), "Id", "NombreDespliegue"); var presupuestoActual = presupuestosManager.GetPresupuestoActual(); ViewBag.CiudadOrigenId = ciudadId; var resumen = reportesManager.GetReportePresupuestoResumen(presupuestoActual.Id, ciudadId, facilityId); var nivelesIds = new List <int>(); if (resumen.Count > 0 && nivelId != null && nivelId.Value > 0) { switch (nivelId.Value) { case 1: nivelesIds = new List <int> { 1 }; break; case 2: nivelesIds = new List <int> { 1, 2 }; break; case 3: nivelesIds = new List <int> { 1, 2, 3 }; break; } resumen = resumen.Where(r => nivelesIds.Contains(r.NivelProgramaticoId.Value)).ToList(); } var codigosGastos = new List <string> { "10000", "20000", "30000", "40000" }; var resumenGastos = resumen.Where(r => r.NivelProgramaticoId == 1 && codigosGastos.Contains(r.Codigo)).ToList(); var resumenIngresos = resumen.Where(r => r.NivelProgramaticoId == 1 && r.Codigo.StartsWith("5")).ToList(); var totalGastos = resumenGastos.Sum(r => r.Total); var totalIngresos = resumenIngresos.Sum(r => r.Total); var totalSubsidio = totalGastos + totalIngresos; ViewBag.TotalGasto = totalGastos; ViewBag.TotalIngreso = totalIngresos; ViewBag.TotalSubsidio = totalSubsidio; return(View(resumen)); }