using System;
using System.Collections.Generic;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using ceTe.DynamicPDF;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business;
using System.Data;

namespace Consulenza.ReportWriter.Manager.Section.Base.Proposta
{
    public class Avvertenze : Entity.Section
    {
        public Avvertenze(EnvironmentFacade environmentFacade, int idSection)
            : base(environmentFacade, idSection)
        {
            try
            {
                Draw();
            }
            catch (Exception ex)
            {
                SectionLogger.Write("Avvertenze", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
            }
        }

        /// <summary>
        /// Disegna l'oggetto Avvertenze
        /// </summary>
        protected override sealed void Draw()
        {
            var dtAvvertenze = GetText();

            if (dtAvvertenze.Rows.Count <= 0) return;

            if (EnvironmentFacade.ReportEnvironment.Proposta.EsitoAdeguatezza == TipologiaEsitoAdeguatezza.Adeguata)
            {
                #region Avvertenze per proposta Adeguata

                var testo1 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo1"].ToString(), EnvironmentFacade.ReportEnvironment);
                var testo2 = dtAvvertenze.Rows[0]["Testo2"].ToString();
                var testo3 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo3"].ToString(), EnvironmentFacade.ReportEnvironment);
                var testo4 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo4"].ToString(), EnvironmentFacade.ReportEnvironment);
                var testo5 = dtAvvertenze.Rows[0]["Testo5"].ToString();
                var testo6 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo6"].ToString(), EnvironmentFacade.ReportEnvironment);

                var labelTesto1 = new FormattedTextAreaPDF(testo1, EnvironmentFacade.RendererFacade.XLeftLimit)
                {
                    TextHorizontalAlign = TextAlign.Justify
                };

                var stringheElencoPuntato = new List<string> { testo2, testo3, testo4, testo5 };

                var elencoPuntato = new UnorderedListPDF(EnvironmentFacade.RendererFacade.XLeftLimit, stringheElencoPuntato);
                var labelTesto6 = new FormattedTextAreaPDF(testo6, EnvironmentFacade.RendererFacade.XLeftLimit);

                AddElement(labelTesto1);
                AddElement(new SpacePDF(10));
                AddElement(elencoPuntato);
                AddElement(labelTesto6);

                #endregion
            }
            if (EnvironmentFacade.ReportEnvironment.Proposta.EsitoAdeguatezza !=
                TipologiaEsitoAdeguatezza.NonAdeguata) return;

            #region Avvertenze per proposta Non Adeguata

            var testo7 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo7"].ToString(), EnvironmentFacade.ReportEnvironment);

            var testo8 = dtAvvertenze.Rows[0]["Testo8"].ToString(); // elenco puntato trattino
            var testo9 = dtAvvertenze.Rows[0]["Testo9"].ToString(); // elenco puntato trattino
            var testo10 = dtAvvertenze.Rows[0]["Testo10"].ToString(); // elenco puntato trattino
            var testo11 = dtAvvertenze.Rows[0]["Testo11"].ToString(); // elenco puntato trattino
            var testo12 = dtAvvertenze.Rows[0]["Testo12"].ToString(); // elenco puntato trattino
            var testo13 = dtAvvertenze.Rows[0]["Testo13"].ToString(); // elenco puntato trattino

            var testo14 = dtAvvertenze.Rows[0]["Testo14"].ToString();
            var testo15 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo15"].ToString(), EnvironmentFacade.ReportEnvironment);

            var testo16 = dtAvvertenze.Rows[0]["Testo16"].ToString(); // elenco puntato pallino
            var testo17 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo17"].ToString(), EnvironmentFacade.ReportEnvironment); // elenco puntato pallino
            var testo18 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo18"].ToString(), EnvironmentFacade.ReportEnvironment); // elenco puntato pallino
            var testo19 = dtAvvertenze.Rows[0]["Testo19"].ToString(); // elenco puntato pallino

            var testo20 = Helper.ReplaceVariables(dtAvvertenze.Rows[0]["Testo20"].ToString(), EnvironmentFacade.ReportEnvironment);

            var labelTesto7 = new FormattedTextAreaPDF(testo7, EnvironmentFacade.RendererFacade.XLeftLimit);

            #region elenco Trattino

            var stringheElencoPuntatoTrattino = new List<string> { testo8, testo9, testo10, testo11, testo12, testo13 };

            var elencoTrattino = new UnorderedListPDF(EnvironmentFacade.RendererFacade.XLeftLimit, stringheElencoPuntatoTrattino, BulletType.Trattino);

            #endregion

            #region elenco Pallino

            var stringheElencoPuntatoPallino = new List<string> { testo16, testo17, testo18, testo19 };

            var elencoPallino = new UnorderedListPDF(EnvironmentFacade.RendererFacade.XLeftLimit, stringheElencoPuntatoPallino, BulletType.Pallino);


            #endregion

            var labelTesto14 = new FormattedTextAreaPDF(testo14, EnvironmentFacade.RendererFacade.XLeftLimit);
            var labelTesto15 = new FormattedTextAreaPDF(testo15, EnvironmentFacade.RendererFacade.XLeftLimit);

            var labelTesto20 = new FormattedTextAreaPDF(testo20, EnvironmentFacade.RendererFacade.XLeftLimit);

            AddElement(labelTesto7);
            AddElement(new SpacePDF(10));
            AddElement(elencoTrattino);

            AddElement(labelTesto14);
            AddElement(labelTesto15);
            AddElement(new SpacePDF(10));
            AddElement(elencoPallino);

            AddElement(labelTesto20);

            #endregion
        }

        /// <summary>
        /// Recupera i dati necessari alla Section restituendo un DataTable.
        /// </summary>
        /// <returns></returns>
        protected sealed override DataTable GetDataTable()
        {
            return null;
        }

        /// <summary>
        /// Recupera i dati necessari alla Section restituendo un DataSet.
        /// </summary>
        /// <returns></returns>
        protected sealed override DataSet GetDataSet()
        {
            return null;
        }
    }
}
