Ejemplo n.º 1
0
        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);
        }