public static FileContentResult GenerarArchivos(Reunion reunion, string itemsToExport) { string fileName = string.Format("DatosIBVD_{0}.zip", DateTime.Now.ToString("dd-MM-yyyy")); string fileContentType = "application/octet-stream"; var listaCanciones = reunion.ItemsReunion.Where(m => m.GetTipo() == TipoItemReunion.CANCION).Select(m => (Cancion)m).ToList(); MemoryStream output = new MemoryStream(); Ionic.Zip.ZipFile fileZip = new ZipFile(); Dictionary <string, MemoryStream> files = new Dictionary <string, MemoryStream>(); if (itemsToExport.Contains("ExportarCancionesXML")) { MemoryStream fileXmlCanciones = new MemoryStream(); var xmlDocument = XMLGenerator.GenerarXmlCancionesExport(listaCanciones); xmlDocument.Save(fileXmlCanciones); files.Add(string.Format("ExportCanciones_{0}.xml", DateTime.Now.ToString("dd-MM-yyyy")), fileXmlCanciones); fileContentType = "application/xml"; } if (itemsToExport.Contains("ExportarReunionPDF")) { MemoryStream filePdfReunion = new MemoryStream(); var pdfDocument = PDFGenerator.GenerarReunion(reunion); pdfDocument.Save(filePdfReunion, false); files.Add(string.Format("Planilla_Reunion_{0}.pdf", reunion.Id), filePdfReunion); fileContentType = "application/pdf"; } if (itemsToExport.Contains("ExportarItemsPDF")) { MemoryStream filePdfCanciones = new MemoryStream(); var pdfCanciones = PDFGenerator.GenerarItems(reunion.ItemsReunion, true); pdfCanciones.Save(filePdfCanciones, false); files.Add(string.Format("Reunion_{0}_Items.pdf", reunion.Id), filePdfCanciones); fileContentType = "application/pdf"; } if (itemsToExport.Contains("ExportarCancionesPDF")) { MemoryStream filePdfCanciones = new MemoryStream(); var pdfCanciones = PDFGenerator.GenerarCanciones(listaCanciones, true); pdfCanciones.Save(filePdfCanciones, false); files.Add(string.Format("Reunion_{0}_Canciones.pdf", reunion.Id), filePdfCanciones); fileContentType = "application/pdf"; } foreach (var item in files) { fileZip.AddFileStream(item.Key, string.Empty, item.Value); fileContentType = "application/octet-stream"; } if (files.Count > 1) { fileZip.Save(output); } else { var archivo = files.First(); output = archivo.Value; fileName = archivo.Key; } FileContentResult file = new FileContentResult(output.ToArray(), fileContentType); file.FileDownloadName = fileName; return(file); }