public IActionResult Exportar(ExportarViewModel exportarViewModel) { if (exportarViewModel.Registro == 0) { ModelState.AddModelError("", "Seleccione el tipo de registro que desea exportar"); return(View(exportarViewModel)); } if (exportarViewModel.Tipo == 0) { ModelState.AddModelError("", "Seleccione el tipo de exportacion"); return(View(exportarViewModel)); } System.Text.UTF8Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); ExportarRepository exportarRepository = new ExportarRepository(); LocalReport localReport; ReportResult reportResult; /* * Tipos * 1 - Ciudades * 2 - Comidas * 3 - Tipo de Atracciones * 4 - Atracciones * */ try { switch (exportarViewModel.Registro) { case 1: localReport = new LocalReport($"{Environment.WebRootPath}/reportes/reportCiudades.rdlc"); var datosCiudades = exportarRepository.GetReporteDatos_Ciudades(); localReport.AddDataSource("dsCiudades", datosCiudades); if (exportarViewModel.Tipo == 1) { reportResult = localReport.Execute(RenderType.Pdf); ModelState.AddModelError("", "Exportacion de [ Ciudades ] realizada con exito"); //return File(reportResult.MainStream, "application/pdf", "ciudades.pdf"); return(File(reportResult.MainStream, "application/pdf")); } else { //reportResult = localReport.Execute(RenderType.Excel); reportResult = localReport.Execute(RenderType.ExcelOpenXml); ModelState.AddModelError("", "Exportacion de [ Ciudades ] realizada con exito"); return(File(reportResult.MainStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "ciudades.xlsx")); } case 2: localReport = new LocalReport($"{Environment.WebRootPath}/reportes/reportComidas.rdlc"); var datosComidas = exportarRepository.GetReporteDatos_Comidas(); localReport.AddDataSource("dsComidas", datosComidas); if (exportarViewModel.Tipo == 1) { reportResult = localReport.Execute(RenderType.Pdf); ModelState.AddModelError("", "Exportacion de [ Comidas ] realizada con exito"); //return File(reportResult.MainStream, "application/pdf", "comidas.pdf"); return(File(reportResult.MainStream, "application/pdf")); } else { //reportResult = localReport.Execute(RenderType.Excel); reportResult = localReport.Execute(RenderType.ExcelOpenXml); ModelState.AddModelError("", "Exportacion de [ Comidas ] realizada con exito"); return(File(reportResult.MainStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "comidas.xlsx")); } case 3: localReport = new LocalReport($"{Environment.WebRootPath}/reportes/reportTipoAtracciones.rdlc"); var datosTipoAtracciones = exportarRepository.GetReporteDatos_TipoAtracciones(); localReport.AddDataSource("dsTipoAtracciones", datosTipoAtracciones); if (exportarViewModel.Tipo == 1) { reportResult = localReport.Execute(RenderType.Pdf); ModelState.AddModelError("", "Exportacion de [ Tipos de Atracciones ] realizada con exito"); //return File(reportResult.MainStream, "application/pdf", "tipoatracciones.pdf"); return(File(reportResult.MainStream, "application/pdf")); } else { //reportResult = localReport.Execute(RenderType.Excel); reportResult = localReport.Execute(RenderType.ExcelOpenXml); ModelState.AddModelError("", "Exportacion de [ Tipos de Atracciones ] realizada con exito"); return(File(reportResult.MainStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "tipoatracciones.xlsx")); } case 4: localReport = new LocalReport($"{Environment.WebRootPath}/reportes/reportAtracciones.rdlc"); var datosAtracciones = exportarRepository.GetReporteDatos_Atracciones(); localReport.AddDataSource("dsAtracciones", datosAtracciones); if (exportarViewModel.Tipo == 1) { reportResult = localReport.Execute(RenderType.Pdf); ModelState.AddModelError("", "Exportacion de [ Atracciones ] realizada con exito"); //return File(reportResult.MainStream, "application/pdf", "atracciones.pdf"); return(File(reportResult.MainStream, "application/pdf")); } else { //reportResult = localReport.Execute(RenderType.Excel); reportResult = localReport.Execute(RenderType.ExcelOpenXml); ModelState.AddModelError("", "Exportacion de [ Atracciones ] realizada con exito"); return(File(reportResult.MainStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "atracciones.xlsx")); } default: ModelState.AddModelError("", "Seleccione tipos validos"); return(View(exportarViewModel)); } } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return(View(exportarViewModel)); } }
// GET:Exportar public ActionResult Index() { var ExportarViewModel = new ExportarViewModel(); IQueryable<Institution> institutions = null; var user = UserManager.FindById(User.Identity.GetUserId()); ExportarViewModel.CountryID = user.Institution.CountryID ?? 0; if (user.Institution.AccessLevel == AccessLevel.All) { ExportarViewModel.DisplayCountries = true; ExportarViewModel.DisplayHospitals = true; } else if (user.Institution is Hospital || user.Institution is AdminInstitution) { ExportarViewModel.DisplayHospitals = true; if (user.Institution.AccessLevel == AccessLevel.Country) { institutions = db.Institutions.OfType<Hospital>() .Where(i => i.CountryID == user.Institution.CountryID); } else if (user.Institution.AccessLevel == AccessLevel.Area) { institutions = db.Institutions.OfType<Hospital>() .Where(i => i.AreaID == user.Institution.AreaID); } else { institutions = db.Institutions.OfType<Hospital>() .Where(i => i.ID == user.Institution.ID); } } else { if (user.Institution.AccessLevel == AccessLevel.Country) { institutions = db.Institutions.OfType<Lab>() .Where(i => i.CountryID == user.Institution.CountryID); } else if (user.Institution.AccessLevel == AccessLevel.Area) { institutions = db.Institutions.OfType<Lab>() .Where(i => i.AreaID == user.Institution.AreaID); } else { institutions = db.Institutions.OfType<Lab>() .Where(i => i.ID == user.Institution.ID); } } ExportarViewModel.Countries = db.Countries .Select(c => new CountryView() { Id = c.ID.ToString(), Name = c.Name, Active = c.Active }).ToArray(); if (institutions != null) { ExportarViewModel.Institutions = institutions.Select(i => new LookupView<Institution>() { Id = i.ID.ToString(), Name = i.Name }).ToArray(); }; return View(ExportarViewModel); }