public ActionResult ExportarResumen(int?ciudadId, int?facilityId, int?nivelId) { var presupuestoActual = presupuestosManager.GetPresupuestoActual(); 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; // Exportar Excel string templateDocument = System.Web.HttpContext.Current.Server.MapPath("~/Templates/I03-ReporteResumen.xlsx"); var report = reportesManager.ExportReportePresupuestoResumen(templateDocument, resumen, totalGastos, totalIngresos, totalSubsidio); return(File(report.ToArray(), "application/octet-stream", string.Format("SOS-ReporteResumen-{0}{1}{2}.xlsx", DateTime.Now.Year, DateTime.Now.Month.ToString().PadLeft(2, '0'), DateTime.Now.Day.ToString().PadLeft(2, '0')))); }