/// <summary>
 /// Método para
 /// </summary>
 /// <param name="infoReportes"></param>
 public bool ModificarParametrosReporte(Models.Reportes infoReportes)
 {
     try
     {
         string dataJson = JsonConvert.SerializeObject(infoReportes);
         System.IO.File.WriteAllText(path_JsonParametros, dataJson, Encoding.Default);
     }catch (Exception e)
     {
         Logs.Error(string.Format("{0}: {1}", "No se han podido registrar los parámetros", e.Message));
         return(false);
     }
     return(true);
 }
        public ActionResult ModificarReporte(Models.Reportes infoReportes)
        {
            string mensajesReportes = string.Empty;

            try
            {
                if (infoReportes.Imagen != null)
                {
                    string pathAux = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo.jpg");
                    if (System.IO.File.Exists(pathAux))
                    {
                        System.IO.File.Delete(pathAux);
                    }
                    string pathAux2 = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo.png");
                    if (System.IO.File.Exists(pathAux2))
                    {
                        System.IO.File.Delete(pathAux2);
                    }
                    string   pic  = Path.GetFileName(infoReportes.Imagen.FileName);
                    string[] aux  = pic.Split('.');
                    string   ext  = aux[1];
                    string   path = Path.Combine(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte"), pic);
                    infoReportes.Imagen.SaveAs(path);
                    infoReportes.Imagen.InputStream.Flush();
                    infoReportes.Imagen.InputStream.Dispose();
                    string pathNuevoNombre = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo." + ext);
                    System.IO.File.Move(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/" + infoReportes.Imagen.FileName), pathNuevoNombre);
                }
                infoReportes.Imagen = null;
                if (ModificarParametrosReporte(infoReportes))
                {
                    mensajesReportes    = string.Format("Los parámetros del Reporte han sido modificados exitosamente.");
                    TempData["Mensaje"] = mensajesReportes;
                    Logs.Info(mensajesReportes);
                }
                else
                {
                    mensajesReportes         = string.Format("No se ha podido modificar los parámetros del Reporte.");
                    TempData["MensajeError"] = mensajesReportes;
                    Logs.Error(mensajesReportes);
                }
            }
            catch (Exception e)
            {
                Logs.Error(string.Format("{0}: {1}", mensajesReportes, e.Message));
            }
            return(RedirectToAction("ParametrosReportes", "Reportes"));
        }
        /// <summary>
        /// Método para insertar el encabezado en la primera página del Reporte.
        /// </summary>
        /// <param name="documentoReporte">Documento actual en el cual se está generando el PDF.</param>
        /// <param name="writerReporte">Writer actual con el cual se está generando el PDF.</param>
        public void GenerarEncabezadoReporte(Document documentoReporte, PdfWriter writerReporte)
        {
            string nombreImage = string.Empty;
            string imagenHTML  = string.Empty;
            string pathAux     = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo.jpg");
            string pathAux2    = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo.png");

            if (File.Exists(pathAux))
            {
                nombreImage = "LogoNuevo.jpg";
                imagenHTML  = "<img src='{0}' style='text-align:center;width:90%;'></img>";
            }
            else if (File.Exists(pathAux2))
            {
                nombreImage = "LogoNuevo.png";
                imagenHTML  = "<img src='{0}' style='text-align:center;width:100%;'></img>";
            }
            else
            {
                nombreImage = "LogoUPS.png";
                imagenHTML  = "<img src='{0}' height=65 width=225 style='text-align:center;'></img>";
            }
            ReportesController objReportesCont = new ReportesController();

            Models.Reportes infoParametros = objReportesCont.ObtenerParametrosReporteJSON();
            if (infoParametros.TituloReporte == "Reporte de Activos de TI del Data Center y Laboratorios del ICC")
            {
                infoParametros.TituloReporte = "Reporte de Activos de TI <br/> del Data Center y Laboratorios del ICC";
            }
            var encabezadoHtml = string.Format(@"<!DOCTYPE html><html><head></head><body><table align='center' style='width:80%;'><tr><th rowspan='2'><p style='text-align:center'>" + imagenHTML + "</p></th><td rowspan='1'><p style='text-align:center'><b>{1} <br/>{2}</b></p></td></tr><tr><td><p style='text-align:center'><b>{3}</b></p></td></tr></table></body></html>", System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/" + nombreImage), infoParametros.TituloCarrera, infoParametros.TituloSedeCampus, infoParametros.TituloReporte);
            var encabezadoCss  = @"body{font-family:Calibri,Candara,Segoe,Segoe UI,Optima,Arial,sans-serif}table,th,td{border:1px solid black;border-collapse:collapse}";

            using (var msCss = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(encabezadoCss)))
            {
                using (MemoryStream msHtml = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(encabezadoHtml)))
                {
                    XMLWorkerHelper.GetInstance().ParseXHtml(writerReporte, documentoReporte, msHtml, msCss);
                }
                msCss.Close();
            }
        }
        /// <summary>
        /// Obtener obtener los parámetros del reporte del JSON
        /// </summary>
        /// <returns></returns>
        public Models.Reportes ObtenerParametrosReporteJSON()
        {
            Models.Reportes items = new Models.Reportes();
            using (StreamReader r = new StreamReader(path_JsonParametros, Encoding.Default, true))
            {
                string json = r.ReadToEnd();
                items = JsonConvert.DeserializeObject <Models.Reportes>(json);
                r.Dispose();
            }
            string pathAux  = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo.jpg");
            string pathAux2 = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo.png");

            if (System.IO.File.Exists(pathAux))
            {
                items.ImagenJPG = true;
            }
            else if (System.IO.File.Exists(pathAux2))
            {
                items.ImagenPNG = true;
            }
            return(items);
        }
Beispiel #5
0
        /// <summary>
        /// Método para generar el reporte en excel.
        /// </summary>
        /// <param name="infoTable">Datatable con la información que se desplegará en el Excel</param>
        /// <param name="tituloReporte">Título que se mostrará en el Excel</param>
        /// <returns></returns>
        public MemoryStream GenerarReporteExcel(DataTable infoTable, string tituloReporte, string labFiltro, string firmaUsuario)
        {
            ReportesController objReportesCont = new ReportesController();

            Models.Reportes infoParametros = objReportesCont.ObtenerParametrosReporteJSON();
            MemoryStream    memStream      = new MemoryStream();
            //Cargar la plantilla para reportes en Excel
            var fileinfo = new FileInfo(path_Plantilla);

            using (ExcelPackage pck = new ExcelPackage(fileinfo))
            {
                if (labFiltro == "Mostrar Todos")
                {
                    labFiltro = "Todos";
                }
                else if (labFiltro == "")
                {
                    labFiltro = "-";
                }
                string nombreImage = string.Empty;
                string pathAux     = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo.jpg");
                string pathAux2    = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/Images/LogoReporte/LogoNuevo.png");
                if (File.Exists(pathAux))
                {
                    nombreImage = "LogoNuevo.jpg";
                }
                else if (File.Exists(pathAux2))
                {
                    nombreImage = "LogoNuevo.png";
                }
                else
                {
                    nombreImage = "LogoUPS.png";
                }
                //Carga de la primera hoja de trabajo del Excel
                ExcelWorksheet ws = pck.Workbook.Worksheets[1];
                ws.Column(1).Width = 25;
                Image        img = Image.FromFile(System.Web.Hosting.HostingEnvironment.MapPath(string.Format("~/Content/Images/LogoReporte/{0}", nombreImage)));
                ExcelPicture pic = ws.Drawings.AddPicture("Logo", img);
                pic.From.Column = 0;
                pic.From.Row    = 0;
                pic.SetSize(170, 60);
                pic.From.ColumnOff = 2 * 9525;
                pic.From.RowOff    = 2 * 9525;

                ws.Cells["A8"].LoadFromDataTable(infoTable, true);
                //Titulos Organización
                ConfigCell(1, 2, 1, infoTable.Columns.Count, ws, infoTable.Columns.Count, string.Format("{0} {1}", infoParametros.TituloCarrera, infoParametros.TituloSedeCampus), true, true, Color.White, Color.Black, ExcelHorizontalAlignment.Center);
                ConfigCell(2, 2, 2, infoTable.Columns.Count, ws, infoTable.Columns.Count, infoParametros.TituloSistema, true, true, Color.White, Color.Black, ExcelHorizontalAlignment.Center);
                ConfigCell(3, 2, 3, infoTable.Columns.Count, ws, infoTable.Columns.Count, infoParametros.TituloReporte, true, true, Color.White, Color.Black, ExcelHorizontalAlignment.Center);
                //ws.Cells[1, 1, 7, infoTable.Columns.Count].AutoFitColumns();

                //Carga de Parámetros
                //Campus
                //ConfigCell(4,2,4, infoTable.Columns.Count,ws, infoTable.Columns.Count, "Quito, campus sur.",true,false,Color.White, Color.Black, ExcelHorizontalAlignment.Left);
                //Fecha
                ConfigCell(4, 2, 4, infoTable.Columns.Count, ws, infoTable.Columns.Count, DateTime.Now.ToLongDateString(), true, false, Color.White, Color.Black, ExcelHorizontalAlignment.Left);
                //ws.Cells[4, 2, 4, infoTable.Columns.Count].AutoFitColumns();
                //Laboratorio
                ConfigCell(5, 2, 5, infoTable.Columns.Count, ws, infoTable.Columns.Count, labFiltro, true, false, Color.White, Color.Black, ExcelHorizontalAlignment.Left);
                //N° Equipos
                ConfigCell(6, 2, 6, infoTable.Columns.Count, ws, infoTable.Columns.Count, infoTable.Rows.Count + "", true, false, Color.White, Color.Black, ExcelHorizontalAlignment.Left);
                //Título del la lista del reporte
                ConfigCell(7, 1, 7, infoTable.Columns.Count, ws, infoTable.Columns.Count, "LISTADO DE " + tituloReporte.ToUpper(), true, true, ColorTranslator.FromHtml("#3c5a77"), ColorTranslator.FromHtml("#E7E7E7"), ExcelHorizontalAlignment.Center);
                //Encabezado de la tabla
                ConfigCell(8, 1, 8, infoTable.Columns.Count, ws, infoTable.Columns.Count, null, false, true, ColorTranslator.FromHtml("#3c5a77"), ColorTranslator.FromHtml("#E7E7E7"), ExcelHorizontalAlignment.Center);
                //Datos
                ConfigCell(9, 1, 8 + infoTable.Rows.Count, infoTable.Columns.Count, ws, infoTable.Columns.Count, null, false, false, Color.White, Color.Black, ExcelHorizontalAlignment.Left);
                //Elaborado por
                ConfigCell(9 + infoTable.Rows.Count, 1, 9 + infoTable.Rows.Count, 1, ws, 1, "ELABORADO POR: ", false, true, ColorTranslator.FromHtml("#ededed"), ColorTranslator.FromHtml("#23527c"), ExcelHorizontalAlignment.Left);
                ConfigCell(9 + infoTable.Rows.Count, 2, 9 + infoTable.Rows.Count, infoTable.Columns.Count, ws, infoTable.Columns.Count, Regex.Replace(firmaUsuario, @"(^\w)|(\s\w)", m => m.Value.ToUpper()), true, false, ColorTranslator.FromHtml("#ededed"), ColorTranslator.FromHtml("#23527c"), ExcelHorizontalAlignment.Left);
                //Autoajustar las celdas para los datos
                ws.Cells[7, 2, 7 + infoTable.Rows.Count, infoTable.Columns.Count].AutoFitColumns();
                ws.Cells["A8"].Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                //Transformar el archivo a Bytes
                memStream = new MemoryStream(pck.GetAsByteArray());
                pck.Dispose();
                ws.Dispose();
                img.Dispose();
                pic.Dispose();
            }
            return(memStream);
        }