using Exferia_Aplicacion.General;
using Microsoft.Reporting.WinForms;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Exferia_KairosPro_Informes.General
{
    public class Funciones_KairosPro_Informes
    {
        public static string Convertir_HTML(string _str_HTML)
        {
            string str_HTML_Devuelto = _str_HTML;

            if (str_HTML_Devuelto != null)
            {
                //Quitar parrafos
                str_HTML_Devuelto = str_HTML_Devuelto.Replace("<P", "<div");
                str_HTML_Devuelto = str_HTML_Devuelto.Replace("</P>", "</div>");

                str_HTML_Devuelto = str_HTML_Devuelto.Replace("<p", "<div");
                str_HTML_Devuelto = str_HTML_Devuelto.Replace("</p>", "</div>");

                //JUstificar
                str_HTML_Devuelto = str_HTML_Devuelto.Replace("align=center", " align: center;\"");
                str_HTML_Devuelto = str_HTML_Devuelto.Replace("align=left", " align: left;\"");
                str_HTML_Devuelto = str_HTML_Devuelto.Replace("align=right", " align: right;\"");
                str_HTML_Devuelto = str_HTML_Devuelto.Replace("align=justify", " align: justify;\"");
                str_HTML_Devuelto = str_HTML_Devuelto.Replace("align:", " style = \"text-align:");

                if (str_HTML_Devuelto != null && str_HTML_Devuelto.Trim().Length > 0)
                {
                    str_HTML_Devuelto = str_HTML_Devuelto.Replace("<FONT size=1", "<FONT style = \"font-size:6px\"");
                    str_HTML_Devuelto = str_HTML_Devuelto.Replace("<FONT size=2", "<FONT style = \"font-size:8px\"");
                    str_HTML_Devuelto = str_HTML_Devuelto.Replace("<FONT size=3", "<FONT style = \"font-size:10px\"");
                    str_HTML_Devuelto = str_HTML_Devuelto.Replace("<FONT size=4", "<FONT style = \"font-size:12px\"");
                    str_HTML_Devuelto = str_HTML_Devuelto.Replace("<FONT size=5", "<FONT style = \"font-size:14px\"");
                    str_HTML_Devuelto = str_HTML_Devuelto.Replace("<FONT size=6", "<FONT style = \"font-size:18px\"");
                    str_HTML_Devuelto = str_HTML_Devuelto.Replace("<FONT size=7", "<FONT style = \"font-size:24px\"");
                }
            }
            else
            {
                str_HTML_Devuelto = "";
            }

            return str_HTML_Devuelto;
        }
        public static void Imprimir_ReportAutomatico(ReportViewer _rpv_Informe, string _str_Fichero_Ruta, string _str_Extension)
        {
            try
            {
                Warning[] wrn_Errores;
                string[] str_flujos;
                string str_Tipo;
                string str_Codificacion;
                string str_extension;

                byte[] bytes = _rpv_Informe.LocalReport.Render(_str_Extension.Replace(".", ""),
                                                                null,
                                                                out str_Tipo,
                                                                out str_Codificacion,
                                                                out str_extension,
                                                                out str_flujos,
                                                                out wrn_Errores);

                FileStream obj_FileStream = new FileStream(_str_Fichero_Ruta, FileMode.Create);
                obj_FileStream.Write(bytes, 0, bytes.Length);
                obj_FileStream.Close();
                obj_FileStream.Dispose();
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Funciones_KairosPro_Informes) + "/" + nameof(Imprimir_ReportAutomatico));
            }
        }
        public static byte[] Crear_Imagen_Fondo(byte[] _arr_imagen_InferiorDerecha)
        {
            byte[] arr_ImagenFondo = null;
            try
            {
                if (_arr_imagen_InferiorDerecha != null)
                {
                    Assembly obj_assembly = Assembly.GetExecutingAssembly();

                    Bitmap bmp_Original = new Bitmap(785, 1110);
                    Graphics obj_Graphics = Graphics.FromImage(bmp_Original);

                    Image img_EsquinaInferior = Funciones.Convertir_Arraybytes_Image(_arr_imagen_InferiorDerecha);


                    //Redimensiamos la imagen para que quepan todas
                    Image img_nueva = Funciones.RedimencionarImagen(img_EsquinaInferior, 450, 450);
                    Rectangle rct_Imagen = new Rectangle((bmp_Original.Width - img_nueva.Size.Width) - 10, (bmp_Original.Height - img_nueva.Size.Height) - 10, img_nueva.Size.Width, img_nueva.Height);
                    obj_Graphics.DrawImage(img_nueva, rct_Imagen);

                    arr_ImagenFondo = Funciones.Convertir_Image_Arraybytes(bmp_Original);
                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(Funciones_KairosPro_Informes) + "/" + nameof(Crear_Imagen_Fondo));
            }

            return arr_ImagenFondo;
        }
    }
}
