namespace Consulenza.ReportWriter.Business.OBJ_PDF
{
    /// <summary>
    /// Classe che gestisce i colori
    /// </summary>
    public class ColorPDF
    {
        public int Red { get; set; }
        public int Green { get; set; }
        public int Blue { get; set; }

        /// <summary>
        /// Costruttore.
        /// </summary>
        /// <param name="red">red</param>
        /// <param name="green">green</param>
        /// <param name="blue">blue</param>
        public ColorPDF(int red, int green, int blue)
        {
            Red = red;
            Green = green;
            Blue = blue;
        }
        public ColorPDF(System.Drawing.Color color)
        {
            Red = color.R;
            Blue = color.B;
            Green = color.G;
        }

        /// <summary>
        /// Costruttore
        /// </summary>
        /// <param name="hex">codice hex</param>
        public ColorPDF(string hex)
        {
            try
            {
                var color = System.Drawing.ColorTranslator.FromHtml(hex);
                Red = color.R;
                Green = color.G;
                Blue = color.B;
            }
            catch
            {
                Red = 0;
                Green = 0;
                Blue = 0;
            }
        }

        #region ConsulenzaBase

        /// <summary>
        /// Ritorna il colore usato per l'header e il footer delle tabella di ConsulenzaBase.
        /// </summary>
        public static ColorPDF ConsulenzaBase_Grigio_SfondoColonnaHeaderFooterTabella
        {
            get { return new ColorPDF(204, 204, 204); }
        }

        /// <summary>
        /// Ritorna il colore del bordo usato per l'header e il footer delle tabella di ConsulenzaBase.
        /// </summary>
        public static ColorPDF ConsulenzaBase_Grigio_BordoColonnaHeaderFooterTabella
        {
            get { return new ColorPDF(118, 136, 155); }
        }

        #endregion

        #region Immobiliare

        /// <summary>
        /// Ritorna il colore Grigio usato nei titoli grandi dei capitoli del report di Immobiliare e NucleoImmobiliare.
        /// </summary>
        public static ColorPDF Immobiliare_Grigio_TitoloGrande
        {
            get { return new ColorPDF(174, 150, 133); }
        }

        /// <summary>
        /// Ritorna il colore Grigio usato nei titoli piccoli dei capitoli del report di Immobiliare e NucleoImmobiliare.
        /// </summary>
        public static ColorPDF Immobiliare_Grigio_TitoloPiccolo
        {
            get { return new ColorPDF(153, 149, 133); }
        }

        /// <summary>
        /// Ritorna il colore Grigio usato nel testo del report di Immobiliare e NucleoImmobiliare.
        /// </summary>
        public static ColorPDF Immobiliare_Grigio_TestoStandard
        {
            get { return new ColorPDF(92, 89, 81); }
        }

        /// <summary>
        /// Ritorna il colore Marrone usato nel report di Immobiliare e NucleoImmobiliare.
        /// </summary>
        public static ColorPDF Immobiliare_Marrone
        {
            get { return new ColorPDF(174, 150, 81); }
        }

        #endregion

        #region ConsulenzaUnica

        /// <summary>
        /// Ritorna il colore Rosso usato in ConsulenzaUnica
        /// </summary>
        public static ColorPDF ConsulenzaUnica_Rosso
        {
            get { return new ColorPDF(237, 28, 36); }
        }

        /// <summary>
        /// Ritorna il colore usato per l'header e il footer delle tabella di ConsulenzaUnica.
        /// </summary>
        public static ColorPDF ConsulenzaUnica_Grigio_SfondoColonnaHeaderFooterTabella
        {
            get { return new ColorPDF(232, 236, 237); }
        }

        /// <summary>
        /// Ritorna il colore usato per la Valuta EURO
        /// </summary>
        public static ColorPDF ConsulenzaUnica_ValutaEuro
        {
            get { return new ColorPDF(217, 81, 33); }
        }

        /// <summary>
        /// Ritorna il colore usato per tutte le valute diverse da EURO
        /// </summary>
        public static ColorPDF ConsulenzaUnica_ValutaAltre
        {
            get { return new ColorPDF(131, 188, 180); }
        }

        #endregion

        #region Comuni a tutti i report

        /// <summary>
        /// Ritorna il colore Grigio usato per sfondo quando impostato BackgroundGray della colonna di una tabella.
        /// Unico per tutti i tipi di report.
        /// </summary>
        public static ColorPDF Standard_Grigio_SfondoColonnaTabella
        {
            get { return new ColorPDF(232, 236, 237); }
        }

        #endregion

        #region Colori base

        /// <summary>
        /// Ritorna il colore Nero
        /// </summary>
        public static ColorPDF Nero
        {
            get { return new ColorPDF(0, 0, 0); }
        }

        /// <summary>
        /// Ritorna il colore Bianco
        /// </summary>
        public static ColorPDF Bianco
        {
            get { return new ColorPDF(255, 255, 255); }
        }

        /// <summary>
        /// Ritorna il colore Giallo
        /// </summary>
        public static ColorPDF Giallo
        {
            get { return new ColorPDF(255, 255, 0); }
        }

        /// <summary>
        /// Ritorna il colore Rosso
        /// </summary>
        public static ColorPDF Rosso
        {
            get { return new ColorPDF(255, 0, 0); }
        }
        public static ColorPDF Verde
        {
            get { return new ColorPDF(0, 176, 70);}
        }
        /// <summary>
        /// Ritorna il colore Blue
        /// </summary>
        public static ColorPDF Blu
        {
            get { return new ColorPDF(0, 0, 255); }
        }

        #endregion

        /// <summary>
        /// Recupera il colore associato al codiceAreaBisogno passato in input.
        /// </summary>
        /// <param name="codiceArea"></param>
        /// <returns></returns>
        public static ColorPDF GetBy_AreaBisogno(string codiceArea)
        {
            switch (codiceArea.ToString())
            {
                case "Ext":
                    return new ColorPDF(255, 0, 0);
                case "Inv":
                    return new ColorPDF(255, 151, 0);
                case "Liq":
                    return new ColorPDF(118, 122, 173);
                case "Pre":
                    return new ColorPDF(255, 218, 0);
                case "Ris":
                    return new ColorPDF(12, 37, 119);
                case "Tut":
                    return new ColorPDF(0, 100, 45);
                default:
                    return new ColorPDF(0, 0, 0);
            }
        }
    }
}
