using System;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;

namespace Consulenza.ReportWriter.Manager.Section.Unica.Nucleo
{
    /// <summary>
    /// Scheda 12. Patrimonio Fideuram: dettaglio prodotti. IdSezione 55
    /// </summary>
    public class S12 : Unica.S12
    {
        public S12(EnvironmentFacade environmentFacade, int idSection)
            : base(environmentFacade, idSection)
        {
            
        }

        public override string getTesto1()
        {
            string testo = "In questa scheda sono riportati i prodotti, associati al nucleo, che i componenti detengono presso $/Banca/$, ";
            if (raggruppaProdotti() == ReportCommon.RaggruppaProdotti.Categoria)
                testo += "raggruppati secondo la categoria di appartenenza.";
            if (raggruppaProdotti() == ReportCommon.RaggruppaProdotti.AreaBisogno)
                testo += "raggruppati per area di bisogno.";
            if (raggruppaProdotti() == ReportCommon.RaggruppaProdotti.Contratto)
                testo += "raggruppati secondo il contratto di appartenenza.";
            return datiSeiUnico.FormatBanca(testo);
        }

        public override string getNote3()
        {
            string nota = "";
            string token = "";

            if (getColonne().RendAnnualSott || getColonne().RendInizioTrimestre || getColonne().RendInizioAnno)
            {
                nota += token + "I rendimenti";
                token = " ";
                if (getColonne().RendAnnualSott)
                {
                    nota += token + "da sottoscrizione";
                    token = " e ";
                    if (getColonne().RendInizioTrimestre && getColonne().RendInizioAnno)
                        token = ", ";
                }
                if (getColonne().RendInizioTrimestre)
                {
                    nota += token + "da inizio trimestre";
                    token = " e ";
                }
                if (getColonne().RendInizioAnno)
                {
                    nota += token + "da inizio anno";
                }
                token = " ";
                nota += token + "sono calcolati utilizzando la metodologia del \"Tasso Interno di Rendimento (T.I.R.)\".";

                if (getColonne().RendAnnualSott)
                {
                    nota += token + "Per gli investimenti di durata superiore all'anno, i rendimenti da sottoscrizione sono espressi su base annua.";
                }
                nota += token + "I rendimenti";
                if (getColonne().RendAnnualSott)
                {
                    nota += token + "da sottoscrizione";
                    token = " e ";
                    if (getColonne().RendInizioTrimestre && getColonne().RendInizioAnno)
                        token = ", ";
                }
                if (getColonne().RendInizioTrimestre)
                {
                    nota += token + "da inizio trimestre";
                    token = " e ";
                }
                if (getColonne().RendInizioAnno)
                {
                    nota += token + "da inizio anno";
                }
                token = " ";
                nota += token + "dei singoli prodotti sono calcolati ogni giorno";

                if (!(isCategorieProdotto || isAreeDiBisogno))
                {
                    nota += ", mentre quelli a livello di contratto";
                    nota += token + "sono calcolati ogni fine settimana";
                }
                nota += ".";

                # region Omnia No Foglio
                if (gpOmniaPresent && !gpFoglioPresent)
                {
                    token = " ";
                    nota += token + "Fanno eccezione a queste regole i rendimenti";
                    if (getColonne().RendAnnualSott)
                    {
                        nota += token + "da sottoscrizione";
                        token = " e ";
                        if (getColonne().RendInizioTrimestre && getColonne().RendInizioAnno)
                            token = ", ";
                    }
                    if (getColonne().RendInizioTrimestre)
                    {
                        nota += token + "da inizio trimestre";
                        token = " e ";
                    }
                    if (getColonne().RendInizioAnno)
                    {
                        nota += token + "da inizio anno";
                    }
                    token = " ";
                    nota += token + "delle gestioni patrimoniali \"Omnia\"";
                    if (getColonne().RaggruppaProdotti == ReportCommon.RaggruppaProdotti.Contratto)
                    {
                        nota += " e del relativo contratto";
                    }
                    nota += token + ", che sono calcolati utilizzando la metodologia del \"Money Weighted Rate Of Return (M.W.R.R.)\"";
                    if (getColonne().RendAnnualSott)
                    {
                        nota += token + "e, a prescindere dalla durata dell'investimento, sono espressi su base cumulata";
                    }
                    nota += ".";
                    if (gpEligoFondPresent || gpEligoTitPresent)
                    {
                        token = " ";
                        nota += token + "I rendimenti";
                        if (getColonne().RendAnnualSott)
                        {
                            nota += token + "da sottoscrizione";
                            token = " e ";
                            if (getColonne().RendInizioTrimestre && getColonne().RendInizioAnno)
                                token = ", ";
                        }
                        if (getColonne().RendInizioTrimestre)
                        {
                            nota += token + "da inizio trimestre";
                            token = " e ";
                        }
                        if (getColonne().RendInizioAnno)
                            nota += token + "da inizio anno";
                        token = " ";
                        nota += token + " dei";
                        if (gpEligoFondPresent)
                            nota += token + "fondi sottostanti la \"GP Eligo Fondi\"";
                        if (gpEligoFondPresent && gpEligoTitPresent)
                            nota += token + "e";
                        if (gpEligoTitPresent)
                            nota += token + "dei basket sottostanti la \"GP Eligo Titoli\"";
                        nota += token + "sono invece calcolati utilizzando la metodologia del \"Tasso Interno di Rendimento (T.I.R.)\"";
                        if (getColonne().RendAnnualSott)
                            nota += token + "e, per gli investimenti di durata superiore all'anno, sono espressi su base annua";
                        nota += ".";
                    }
                }
                # endregion

                # region Omnia + Foglio
                if (gpOmniaPresent && gpFoglioPresent)
                {
                    token = " ";
                    nota += token + "Fanno eccezione a queste regole i rendimenti";
                    if (getColonne().RendAnnualSott)
                    {
                        nota += token + "da sottoscrizione";
                        token = " e ";
                        if (getColonne().RendInizioTrimestre && getColonne().RendInizioAnno)
                            token = ", ";
                    }
                    if (getColonne().RendInizioTrimestre)
                    {
                        nota += token + "da inizio trimestre";
                        token = " e ";
                    }
                    if (getColonne().RendInizioAnno)
                    {
                        nota += token + "da inizio anno";
                    }
                    token = " ";
                    nota += token + "delle gestioni patrimoniali \"Omnia\", dei \"Fogli\"";
                    if (getColonne().RaggruppaProdotti == ReportCommon.RaggruppaProdotti.Contratto)
                    {
                        nota += " e del relativo contratto";
                    }
                    nota += token + ", che sono calcolati utilizzando la metodologia del \"Money Weighted Rate Of Return (M.W.R.R.)\"";
                    if (getColonne().RendAnnualSott)
                    {
                        nota += token + "e, a prescindere dalla durata dell'investimento, sono espressi su base cumulata";
                    }
                    nota += ".";
                    if (gpEligoFondPresent || gpEligoTitPresent)
                    {
                        token = " ";
                        nota += token + "I rendimenti";
                        if (getColonne().RendAnnualSott)
                        {
                            nota += token + "da sottoscrizione";
                            token = " e ";
                            if (getColonne().RendInizioTrimestre && getColonne().RendInizioAnno)
                                token = ", ";
                        }
                        if (getColonne().RendInizioTrimestre)
                        {
                            nota += token + "da inizio trimestre";
                            token = " e ";
                        }
                        if (getColonne().RendInizioAnno)
                            nota += token + "da inizio anno";
                        token = " ";
                        nota += token + " dei";
                        if (gpEligoFondPresent)
                            nota += token + "fondi sottostanti la \"GP Eligo Fondi\"";
                        if (gpEligoFondPresent && gpEligoTitPresent)
                            nota += token + "e";
                        if (gpEligoTitPresent)
                            nota += token + "dei basket sottostanti la \"GP Eligo Titoli\"";
                        nota += token + "sono invece calcolati utilizzando la metodologia del \"Tasso Interno di Rendimento (T.I.R.)\"";
                        if (getColonne().RendAnnualSott)
                            nota += token + "e, per gli investimenti di durata superiore all'anno, sono espressi su base annua";
                        nota += ".";
                    }
                }
                # endregion

                # region No Omnia Si Foglio
                if (!gpOmniaPresent && gpFoglioPresent)
                {
                    token = " ";
                    nota += token + "Fanno eccezione a queste regole i rendimenti";
                    if (getColonne().RendAnnualSott)
                    {
                        nota += token + "da sottoscrizione";
                        token = " e ";
                        if (getColonne().RendInizioTrimestre && getColonne().RendInizioAnno)
                            token = ", ";
                    }
                    if (getColonne().RendInizioTrimestre)
                    {
                        nota += token + "da inizio trimestre";
                        token = " e ";
                    }
                    if (getColonne().RendInizioAnno)
                    {
                        nota += token + "da inizio anno";
                    }
                    token = " ";
                    nota += token + "dei \"Fogli\"";
                    if (getColonne().RaggruppaProdotti == ReportCommon.RaggruppaProdotti.Contratto)
                    {
                        nota += " e del relativo contratto";
                    }
                    nota += token + ", che sono calcolati utilizzando la metodologia del \"Money Weighted Rate Of Return (M.W.R.R.)\"";
                    if (getColonne().RendAnnualSott)
                    {
                        nota += token + "e, a prescindere dalla durata dell'investimento, sono espressi su base cumulata";
                    }
                    nota += ".";
                    if (gpEligoFondPresent || gpEligoTitPresent)
                    {
                        token = " ";
                        nota += token + "I rendimenti";
                        if (getColonne().RendAnnualSott)
                        {
                            nota += token + "da sottoscrizione";
                            token = " e ";
                            if (getColonne().RendInizioTrimestre && getColonne().RendInizioAnno)
                                token = ", ";
                        }
                        if (getColonne().RendInizioTrimestre)
                        {
                            nota += token + "da inizio trimestre";
                            token = " e ";
                        }
                        if (getColonne().RendInizioAnno)
                            nota += token + "da inizio anno";
                        token = " ";
                        nota += token + " dei";
                        if (gpEligoFondPresent)
                            nota += token + "fondi sottostanti la \"GP Eligo Fondi\"";
                        if (gpEligoFondPresent && gpEligoTitPresent)
                            nota += token + "e";
                        if (gpEligoTitPresent)
                            nota += token + "dei basket sottostanti la \"GP Eligo Titoli\"";
                        nota += token + "sono invece calcolati utilizzando la metodologia del \"Tasso Interno di Rendimento (T.I.R.)\"";
                        if (getColonne().RendAnnualSott)
                            nota += token + "e, per gli investimenti di durata superiore all'anno, sono espressi su base annua";
                        nota += ".";
                    }
                }
                # endregion

                token = " ";
                if (getColonne().RendAnnualSott && (gpPresent || fondiPresent || ulPresent || apPresent || titPresent))
                {
                    nota += token + "I rendimenti da sottoscrizione sono calcolati a partire dall'effettiva data di sottoscrizione dei prodotti";
                    if (fondiEurizonPresent || gpPresent || titPresent)
                    {
                        nota += ", con le seguenti eccezioni:";
                        if (fondiEurizonPresent)
                            nota += token + "per i fondi di \"Eurizon\"";
                        if (fondiEurizonPresent && gpPresent)
                            nota += token + "e";
                        if (gpPresent)
                            nota += token + "per le gestioni patrimoniali";
                        if (fondiEurizonPresent || gpPresent)
                        {
                            nota += token + "se la data di sottoscrizione è precedente al 01/01/2007, i rendimenti da sottoscrizione sono calcolati a partire dal 01/01/2007";
                            token = ", ";
                        }
                        if (titPresent)
                            nota += token + "per i titoli, se la data di sottoscrizione è precedente al 01/01/1999, i rendimenti da sottoscrizione sono calcolati a partire dal 01/01/1999";
                    }
                    nota += ".";
                }
                token = " ";
                if (getColonne().RendAnnualSott && fidProgettoPensionePresent)
                {
                    nota += token + "Il rendimento da sottoscrizione del prodotto previdenziale \"FID Progetto Pensione\" è calcolato considerando esclusivamente la componente di tipo unit linked.";
                }
                if (getColonne().RendAnnualSott && evProgettoPensionePresent)
                {
                    nota += token + "I rendimenti da sottoscrizione del prodotto previdenziale \"EV Progetto Pensione\" sono calcolati considerando esclusivamente la componente di tipo unit linked.";
                }
            }
            if (getColonne().RendCumAssoc)
            {
                nota += token + "I rendimenti da associazione sono calcolati ogni fine settimana utilizzando la metodologia del \"Tasso Interno di Rendimento (T.I.R.)\". I rendimenti da associazione dei singoli prodotti sono calcolati a partire dalla data in cui un prodotto viene associato ad un'area o ad un progetto di Investimento con Monitoraggio avviato.";
                nota += token + "A prescindere dalla durata del Monitoraggio, i rendimenti da associazione sono espressi su base cumulata.";
            }
            return datiSeiUnico.FormatBanca(nota);
        }
    
    }
}
