using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Consulenza.DataServices.fideuram.data.service;
using System.Configuration;
using System.Data;
using Consulenza.ReportCommon;

namespace Consulenza.DataServices
{
    public class DatiSeiUnico
    {
        public string UrlFideuramDati { get { return ConfigurationManager.AppSettings["UrlFideuramDati"]; } }
        private uidConsulenza _uidConsulenza = null;
        private chiavePropostaBean _chiaveProposta = null;
        private chiaveNucleoBean _chiaveNucleo = null;
        private string _codiceFiscaleDelegato = "";
        private rqInfo _rqInfo = new rqInfo { correlationId = "" };
        private rqData _rqData = new rqData {
            #region _rqData
            clientePB = false,
            clienteUnit = new fideuram.data.service.rqClienteUnit
            {
                anagraficaCliente = false
            },
            displayInfos = false,
            monitoraggioUnit = new fideuram.data.service.rqMonitoraggioUnit
            {
                monitoraggio = false
            },
            patrimonioUnit = new fideuram.data.service.rqPatrimonioUnit
            {
                contrattiCliente = false,
                patrimonioAltro = false,
                patrimonioAziendale = false,
                patrimonioCasa = new fideuram.data.service.rqPatrimonioCasa
                {
                    assetClass = false,
                    categoria = false,
                    dettaglioProdotti = false,
                    distribuzioneEmittente = false,
                    distribuzioneRating = false,
                    distribuzioneScadenze = false,
                    distribuzioneTassoRendimento = false,
                    esposizioneValutaria = false,
                    esposizioneValutariaTutte = false,
                    macroAssetClass = false,
                    macroCategoria = false

                },
                patrimonioComplesivo = false,
                patrimonioFinanziario = new fideuram.data.service.rqPatrimonioFinanziario
                {
                    assetClass = false,
                    categoria = false,
                    intermediario = false,
                    macroAssetClass = false,
                    macroCategoria = false
                },
                patrimonioImmobiliare = false,
                patrimonioTerzi = new fideuram.data.service.rqPatrimonioTerzi
                {
                    assetClass = false,
                    categoria = false,
                    dettaglioProdotti = false,
                    intermediario = false,
                    macroAssetClass = false,
                    macroCategoria = false,
                    patrimonioTerziBean = false
                }
            },
            pianificazioneUnit = new fideuram.data.service.rqPianificazioneUnit
            {
                pianificazioneOrizzontale = false,
                pianificazioneVerticale = false
            },
            piramideModelloUnit = new fideuram.data.service.rqPiramideModelloUnit
            {
                piramideModello = false,
                questionarioMifid = false
            },
            rischioUnit = new fideuram.data.service.rqRischioUnit
            {
                adeguatezza = false,
                rischio = false
            },
            propostaUnit = new rqPropostaUnit
            {                
                assetClass = false,
                dettaglioOperazioni = false,
                dettaglioProdotti= false,
                esposizioneValutaria= false,
                esposizioneValutariaTutte= false,
                macroAssetClass = false,
                stDettaglioProposta = false,
                stPianificazioneVerticale = false                
            },
            nucleiUnit = new rqNucleiUnit
            {
                anagrafica=false,
                 
            }
            #endregion
        };
        private List<int> _listaSchede = new List<int>();
        private rsReportManager _data = new rsReportManager { };
        private string codiceAgente;
        private string codiceFiscale;
        private string codiceMandato;
        private string codiceRete;
        private long v1;
        private long v2;
        private List<int> list;
        private bool dettaglioProdotti;
        private bool dettaglioProdottiCointestati;
        private VisualizzazioneProdotti visualizzazioneScelta;
        private bool dettaglioProdottiTCM;

        public DatiSeiUnico() {}
        public DatiSeiUnico(string codiceAgente, string codiceFiscale, string codiceMandato, string codiceRete, long chiaveProposta, long chiaveNucleo, List<int> listaSchede)
        {
            if (chiaveNucleo == 0)
            {
                _rqData.clientePB = true;
                _rqData.clienteUnit.anagraficaCliente = true;
                _uidConsulenza = new uidConsulenza
                {
                    codiceAgente = codiceAgente,
                    codiceFiscale = codiceFiscale,
                    codiceMandato = codiceMandato,
                    codiceRete = codiceRete
                };

            }
            if (chiaveNucleo == 0 && chiaveProposta > 0)
            {
                _chiaveProposta = new chiavePropostaBean
                {
                    chiaveProposta = chiaveProposta,
                    chiavePropostaSpecified = true
                };
            }
            if (chiaveNucleo > 0 && chiaveProposta == 0)
            {
                _rqData.nucleiUnit.anagrafica = true;
                _chiaveNucleo = new chiaveNucleoBean
                {
                    chiaveNucleo = chiaveNucleo,
                    chiaveNucleoSpecified = true,
                    codiceAgente = codiceAgente,
                    rete = codiceRete
                };
            }
            _listaSchede = listaSchede;
        }

        public DatiSeiUnico(string codiceAgente, string codiceFiscale, string codiceMandato, string codiceRete, long chiaveProposta, long chiaveNucleo, List<int> listaSchede, string codicefiscaledelegato)
        {
            if (chiaveNucleo == 0)
            {
                _rqData.clientePB = true;
                _rqData.clienteUnit.anagraficaCliente = true;
                _uidConsulenza = new uidConsulenza
                {
                    codiceAgente = codiceAgente,
                    codiceFiscale = codiceFiscale,
                    codiceMandato = codiceMandato,
                    codiceRete = codiceRete
                };

            }
            if (chiaveNucleo == 0 && chiaveProposta > 0)
            {
                _chiaveProposta = new chiavePropostaBean
                {
                    chiaveProposta = chiaveProposta,
                    chiavePropostaSpecified = true
                };
            }
            if (chiaveNucleo > 0 && chiaveProposta == 0)
            {
                _rqData.nucleiUnit.anagrafica = true;
                _chiaveNucleo = new chiaveNucleoBean
                {
                    chiaveNucleo = chiaveNucleo,
                    chiaveNucleoSpecified = true,
                    codiceAgente = codiceAgente,
                    rete = codiceRete
                };
            }
            _listaSchede = listaSchede;
            if (!String.IsNullOrEmpty(codicefiscaledelegato)) {
                _codiceFiscaleDelegato = codicefiscaledelegato;
            }
            
        }



        public DatiSeiUnico(string codiceAgente, string codiceFiscale, string codiceMandato, string codiceRete, long chiaveProposta, long chiaveNucleo, List<int> listaSchede, string codiceFiscaleDelegato, bool dettaglioProdotti, bool dettaglioProdottiCointestati, VisualizzazioneProdotti visualizzazioneScelta, bool dettaglioProdottiTCM)
        {
            if (chiaveNucleo == 0)
            {
                _rqData.clientePB = true;
                _rqData.clienteUnit.anagraficaCliente = true;
                _uidConsulenza = new uidConsulenza
                {
                    codiceAgente = codiceAgente,
                    codiceFiscale = codiceFiscale,
                    codiceMandato = codiceMandato,
                    codiceRete = codiceRete
                };

            }
            if (chiaveNucleo == 0 && chiaveProposta > 0)
            {
                _chiaveProposta = new chiavePropostaBean
                {
                    chiaveProposta = chiaveProposta,
                    chiavePropostaSpecified = true
                };
            }
            if (chiaveNucleo > 0 && chiaveProposta == 0)
            {
                _rqData.nucleiUnit.anagrafica = true;
                _chiaveNucleo = new chiaveNucleoBean
                {
                    chiaveNucleo = chiaveNucleo,
                    chiaveNucleoSpecified = true,
                    codiceAgente = codiceAgente,
                    rete = codiceRete
                };
            }
            _codiceFiscaleDelegato = codiceFiscaleDelegato;
            _listaSchede = listaSchede;
            this.dettaglioProdotti = dettaglioProdotti;
            this.dettaglioProdottiCointestati = dettaglioProdottiCointestati;
            this.visualizzazioneScelta = visualizzazioneScelta;
            this.dettaglioProdottiTCM = dettaglioProdottiTCM;
        }

        private void Execute(List<int> listaSchede)
        {
            _listaSchede = listaSchede;
            Execute();
        }
        public void Execute() {
                setRqData();
                fideuram.data.service.rqReportManager request = new fideuram.data.service.rqReportManager
                {
                    chiaveClientePB = _uidConsulenza,
                    chiaveProposta = _chiaveProposta,
                    chiaveNucleo = _chiaveNucleo,
                    codiceFiscaleDelegato=_codiceFiscaleDelegato,
                    info = _rqInfo,
                    requestData = _rqData
                };

                fideuram.data.service.ReportManagerService s = new fideuram.data.service.ReportManagerService();
                s.Url = UrlFideuramDati;
                s.UseDefaultCredentials = true;
                //s.Timeout = 360000;

                s.Timeout = 360000000;
                _data = s.reportManagerWS(request);
            
                if (_data.info.elencoErrori.Length > 0)      {
                    string err = "reportManagerWS";
                    foreach (var item in _data.info.elencoErrori)
                    {
                        err += " " + item.tipoErrore + " " + item.codiceErrore + " " + item.messaggio;
                    }
                    throw new Exception(err);
                }
             
        }
       
        private void setRqData()
        {

            #region *** switch listaSchede
            foreach (int id in _listaSchede)
             {
                 switch (id)
                 {
                     case 1000:
                     case 1001:
                     case 1002:
                     case 1003:
                         //FARE
                         break;
                     case 2000:
                     case 2001:
                     case 2002:
                         _rqData.displayInfos = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.piramideModelloUnit.questionarioMifid = true;
                         _rqData.patrimonioUnit.patrimonioComplesivo = true;
                         
                         _rqData.patrimonioUnit.patrimonioAltro = true;//PER TEST
                         _rqData.patrimonioUnit.patrimonioAziendale = true;//PER TEST
                         _rqData.patrimonioUnit.patrimonioImmobiliare = true;//PER TEST
                         break;
                     case 3003:   
                         _rqData.patrimonioUnit.patrimonioComplesivo = true;
                         _rqData.nucleiUnit.anagrafica = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.displayInfos = true;
                         break;                    
                     case 4000:
                     case 4002:
                     case 4003:
                         _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;                         
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.displayInfos = true;
                         break;
                     case 5000:
                     case 5002:
                     case 5003:                          
                         _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.macroAssetClass = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.displayInfos = true;
                         break;
                     case 6000:
                     case 6002:
                     case 6003:                        
                         _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.assetClass = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.assetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.assetClass = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.displayInfos = true;
                         break;
                     case 7000:
                     case 7002:
                     case 7003:                         
                         _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.macroCategoria = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.macroCategoria = true;
                         _rqData.patrimonioUnit.patrimonioCasa.macroCategoria = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.displayInfos = true;
                         break;
                     case 8000:
                     case 8002:
                     case 8003:                         
                         _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.categoria = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.categoria = true;
                         _rqData.patrimonioUnit.patrimonioCasa.categoria = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.displayInfos = true;
                         break;
                     case 9000:
                     case 9002:
                         _rqData.pianificazioneUnit.pianificazioneVerticale= true;                       
                         _rqData.piramideModelloUnit.piramideModello = true; 
                         break;
                     case 10003:
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.nucleiUnit.patrimonioCliente = true;
                         _rqData.displayInfos = true;                          
                         break;
                     case 11000:
                     case 11001:
                     case 11002:
                     case 11003:
                         _rqData.patrimonioUnit.contrattiCliente= true;
                        _rqData.nucleiUnit.patrimonioCliente = true;
                        _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         break;                      
                     case 12000:
                     case 12001:
                     case 12002:
                     case 12003:
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                        //_rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti= dettaglioProdotti;
                        _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                        _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdottiCointestati = dettaglioProdottiCointestati;
                        _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdottiTCM = dettaglioProdottiTCM;

                        switch (visualizzazioneScelta)
                        {
                            case VisualizzazioneProdotti.All:
                                _rqData.patrimonioUnit.patrimonioCasa.tipoVisualizzazioneProdotti = "ALL";
                                break;
                            case VisualizzazioneProdotti.ContrattiLiquidati:
                                _rqData.patrimonioUnit.patrimonioCasa.tipoVisualizzazioneProdotti = "CL";
                                break;
                            case VisualizzazioneProdotti.PosizioniAttive:
                                _rqData.patrimonioUnit.patrimonioCasa.tipoVisualizzazioneProdotti = "A";
                                break;
                            default:
                                _rqData.patrimonioUnit.patrimonioCasa.tipoVisualizzazioneProdotti = "SL";
                                break;

                        }

                        _rqData.displayInfos= true;
                         break;
                     case 13000:
                     case 13002:
                     case 13003:
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioContratti = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.piramideModelloUnit.piramideModello = true;
                         _rqData.displayInfos = true;
                         _rqData.patrimonioUnit.patrimonioCasa.protezioneCapitale = true;
                         break;
                     case 14000:
                     case 14002:
                     case 14003:
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioContratti = true;
                         break;
                     case 15000:
                     case 15002:
                     case 15003:
                         _rqData.patrimonioUnit.patrimonioCasa.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.piramideModelloUnit.piramideModello = true;                         
                         _rqData.displayInfos = true;            
                         break;
                     case 16000:
                     case 16002:
                     case 16003:
                         _rqData.displayInfos = true;
                         _rqData.patrimonioUnit.patrimonioCasa.assetClass = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;                       
                         break;
                     case 17000:
                     case 17002:
                     case 17003:
                         _rqData.displayInfos = true;
                         _rqData.patrimonioUnit.patrimonioCasa.assetClass = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioCasa.esposizioneValutaria = true;
                         _rqData.patrimonioUnit.patrimonioCasa.esposizioneValutariaTutte = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         break;
                     case 18000:
                     case 18002:
                     case 18003:
                          _rqData.displayInfos = true;
                         _rqData.patrimonioUnit.patrimonioCasa.macroCategoria = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         break;
                     case 19000:
                     case 19002:
                     case 19003:
                         _rqData.patrimonioUnit.patrimonioCasa.categoria = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioCasa.categoria = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.displayInfos = true;
                         break;
                     case 20000:
                     case 20002:
                     case 20003:
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.patrimonioUnit.patrimonioCasa.distribuzioneRating = true;
                         _rqData.displayInfos = true;
                         break;
                     case 21000:
                     case 21002:
                     case 21003:
                         _rqData.patrimonioUnit.patrimonioCasa.distribuzioneEmittente = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.patrimonioUnit.patrimonioCasa.distribuzioneEmittente = true;
                         _rqData.displayInfos = true;
                         break;
                     case 22000:
                     case 22002:
                     case 22003:
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.patrimonioUnit.patrimonioCasa.distribuzioneScadenze = true;
                         _rqData.displayInfos = true;			    
                         break;
                     case 23000:
                     case 23002:
                     case 23003:
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.patrimonioUnit.patrimonioCasa.distribuzioneTassoRendimento = true;
                         _rqData.displayInfos = true;
                         break;
                     case 24000:
                     case 24002:
                     case 24003:
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.patrimonioUnit.patrimonioCasa.assetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.esposizioneValutariaTutte = true;
                         _rqData.monitoraggioUnit.monitoraggio= true;
                         _rqData.displayInfos = true;
                        break;
                     case 25000:
                     case 25001:
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.piramideModelloUnit.piramideModello = true;
                         break;
                    case 26000:
                    case 26001:
                         _rqData.pianificazioneUnit.pianificazioneOrizzontale = true;
                         _rqData.displayInfos = true;
                         break;
                    case 27000:
                    case 27001:
                    case 27002:
                         _rqData.displayInfos = true;
                         _rqData.pianificazioneUnit.pianificazioneOrizzontale = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioCasa.assetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.macroAssetClass = true;
                         break;
                    case 28000:
                    case 28001:   
                         _rqData.displayInfos = true;
                         _rqData.pianificazioneUnit.pianificazioneOrizzontale = true;                       
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.piramideModelloUnit.piramideModello = true;
                         break;
                    case 29000:
                    case 29001:
                    case 29002:
                         _rqData.displayInfos = true;
                         _rqData.piramideModelloUnit.piramideModello = true;
                         _rqData.pianificazioneUnit.pianificazioneOrizzontale= true; 
                         _rqData.patrimonioUnit.patrimonioCasa.assetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.macroAssetClass = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.monitoraggioUnit.monitoraggio = true;  
                         break;
                     case 30000:
                     case 30002:
                     case 30003:
                         _rqData.patrimonioUnit.patrimonioTerzi.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.displayInfos = true;
                         break;
                     case 31000:
                     case 31002:
                     case 31003:
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.categoria = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.dettaglioProdotti = true;
                         _rqData.displayInfos = true;
                         break;
                     case 32000:
                     case 32002:
                     case 32003:
                         _rqData.patrimonioUnit.patrimonioTerzi.macroAssetClass= true;
                         _rqData.patrimonioUnit.patrimonioTerzi.dettaglioProdotti= true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.displayInfos = true;
                         break;
                     case 33000:
                     case 33002:
                     case 33003:
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.assetClass = true;
                         _rqData.displayInfos = true;
                         break;
                     case 34000:
                     case 34002:
                     case 34003:
                         _rqData.patrimonioUnit.patrimonioTerzi.macroCategoria = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.dettaglioProdotti = true;
                         _rqData.displayInfos = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.macroCategoria = true;
                         break;
                     case 35000:
                     case 35002:
                     case 35003:
                         _rqData.patrimonioUnit.patrimonioTerzi.categoria = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.dettaglioProdotti = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.displayInfos = true;
                         break;
                     case 36000:
                     case 36002:
                     case 36003:
                         _rqData.patrimonioUnit.patrimonioTerzi.assetClass = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.dettaglioProdotti = true; 
                         break;
                     case 37000:
                     case 37002:
                     case 37003:
                         _rqData.patrimonioUnit.patrimonioImmobiliare = true;
                         break;
                     case 38000:
                     case 38002:
                     case 38003:
                         _rqData.patrimonioUnit.patrimonioAziendale = true;
                         break;
                     case 39000:
                     case 39002:
                     case 39003:
                         _rqData.patrimonioUnit.patrimonioAltro = true;
                         break;
                     case 40000:
                     case 40002:
                     case 40003:
                        _rqData.rischioUnit.adeguatezza = true;
                        _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         break;
                     case 41000:
                     case 41002:
                     case 41003:
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                        _rqData.rischioUnit.rischio = true;                       
                        _rqData.displayInfos = true; 
                         break;
                     case 42000:
                     case 42002:
                         _rqData.rischioUnit.rischio = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         break;
                     case 43000:
                     case 43002:
                     case 43003:
                        _rqData.piramideModelloUnit.questionarioMifid= true;
                        _rqData.rischioUnit.rischio = true;
                        _rqData.pianificazioneUnit.pianificazioneVerticale= true;
                        _rqData.rischioUnit.adeguatezza = true;
                        _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                        _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;
                        break;
                    case 44000:
                    case 44002:
                    case 44003:
                    //Adriano 20180322: Nuova scheda Diversificazione 44a (S76)
                    case 44004:
                    case 44005:
                    //--Adriano 20180322
                        _rqData.piramideModelloUnit.questionarioMifid = true;
                        _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                        _rqData.patrimonioUnit.patrimonioCasa.macroAssetClass = true;
                        _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean= true;
                        _rqData.patrimonioUnit.patrimonioFinanziario.intermediario= true;
                        _rqData.rischioUnit.rischio= true;
                        _rqData.rischioUnit.adeguatezza = true;
                         break;
                     case 45000:
                     case 45002:
                     case 45003:
                           _rqData.rischioUnit.rischio= true;
                           _rqData.displayInfos= true; 
                          _rqData.pianificazioneUnit.pianificazioneVerticale= true;                          
                         break;
                     case 46000:
                     case 46002:
                     case 46003:
                         _rqData.rischioUnit.rischio= true;
                         _rqData.displayInfos= true; 
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean= true;                        
                         break;
                     case 47000:
                     case 47002:
                     case 47003:
                         _rqData.rischioUnit.rischio= true; 
                        _rqData.displayInfos= true;
                        _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;     
                         break;
                     case 48000:
                     case 48002:
                     case 48003:
                         _rqData.rischioUnit.rischio = true;
                         _rqData.displayInfos= true;  
                         break;
                     case 49000:
                     case 49002:
                     case 49003:
                         _rqData.rischioUnit.rischio = true;
                         _rqData.displayInfos = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         break;
                     case 50000:
                     case 50002:
                     case 50003:
                        _rqData.rischioUnit.rischio = true;    
                        _rqData.displayInfos = true;
                        _rqData.pianificazioneUnit.pianificazioneVerticale = true;    
                         break;
                     case 51000:
                     case 51002:
                     case 51003:
                         _rqData.rischioUnit.rischio = true;
                         _rqData.displayInfos = true;
                         break;
                     case 52000:
                     case 52002:
                     case 52003:
                        _rqData.rischioUnit.rischio = true;
                         _rqData.displayInfos = true;
                         _rqData.rischioUnit.rischio = true; 
                         break;
                     case 53000:
                     case 53002:
                     case 53003:
                        _rqData.rischioUnit.rischio = true;
                         _rqData.displayInfos = true;
                         break;
                    case 54001:
                         _rqData.propostaUnit.stPianificazioneVerticale = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.piramideModelloUnit.piramideModello = true;
                         _rqData.propostaUnit.stDettaglioProposta = true;
                         _rqData.displayInfos = true;   
                         break;                     
                    case 55001:
                         _rqData.propostaUnit.stPianificazioneVerticale = true;
                         _rqData.propostaUnit.dettaglioProdotti = true;
                         _rqData.propostaUnit.dettaglioOperazioni = true;
                         _rqData.displayInfos = true;        
                         break;
                    case 56001:
                         _rqData.propostaUnit.dettaglioProdotti = true;
                         _rqData.propostaUnit.dettaglioOperazioni = true;
                         break;
                    case 57001:
                         _rqData.displayInfos = true;
                         _rqData.propostaUnit.dettaglioProdotti = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.propostaUnit.macroAssetClass = true;                         
                         _rqData.propostaUnit.stDettaglioProposta = true;
                         _rqData.patrimonioUnit.patrimonioCasa.macroAssetClass=true;
                         break;
                    case 58001:
                         _rqData.propostaUnit.stPianificazioneVerticale = true;
                         break;
                    case 59001:
                         _rqData.pianificazioneUnit.pianificazioneOrizzontale = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.propostaUnit.assetClass = true;
                         _rqData.propostaUnit.macroAssetClass = true;
                         _rqData.propostaUnit.stDettaglioProposta = true;
                         _rqData.displayInfos = true;
                         break;
                    case 60001:
                         _rqData.pianificazioneUnit.pianificazioneOrizzontale = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.propostaUnit.assetClass = true;
                         _rqData.propostaUnit.macroAssetClass = true;
                         _rqData.propostaUnit.stDettaglioProposta = true;
                         _rqData.displayInfos = true;
                         break;
                    case 61001:
                         _rqData.propostaUnit.stPianificazioneVerticale = true;
                         break;
                    case 62001:
                         _rqData.propostaUnit.stPianificazioneVerticale = true;
                         _rqData.rischioUnit.rischio = true;
                         break;
                    case 63001:
                         _rqData.clienteUnit.anagraficaCliente = true;
                         _rqData.rischioUnit.rischio = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.piramideModelloUnit.questionarioMifid = true;
                         _rqData.propostaUnit.stDettaglioProposta = true;
                         break;
                    case 64001:
                    case 64002:
                    case 64003:
                        _rqData.rischioUnit.rischio = true;
                        _rqData.rischioUnit.adeguatezza = true;
                        _rqData.propostaUnit.stPianificazioneVerticale = true;
                        break;
                    case 65001:
                         _rqData.piramideModelloUnit.piramideModello = true;
                         _rqData.propostaUnit.dettaglioProdotti = true;
                         _rqData.propostaUnit.assetClass = true;
                         _rqData.propostaUnit.esposizioneValutaria = true;
                         break;
                    case 66002:
                         _rqData.piramideModelloUnit.piramideModello = true;
                         _rqData.monitoraggioUnit.monitoraggio = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.displayInfos = true;
                         break;
                    case 67002:
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.monitoraggioUnit.monitoraggio = true;
                         break;
                    case 68002:
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.monitoraggioUnit.monitoraggio = true;
                         _rqData.pianificazioneUnit.pianificazioneOrizzontale = true;
                         break;
                    case 69002:
                         _rqData.monitoraggioUnit.monitoraggio = true;
                         _rqData.pianificazioneUnit.pianificazioneOrizzontale = true;
                         break;
                    case 70002:
                         _rqData.monitoraggioUnit.monitoraggio = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.displayInfos = true;
                         break;
                    case 71002:
                         _rqData.monitoraggioUnit.monitoraggio = true;
                         _rqData.piramideModelloUnit.piramideModello = true;
                         break;
                    case 72002:
                         _rqData.monitoraggioUnit.proventiScadenze = true;
                         break;
                    case 73002:
                         _rqData.piramideModelloUnit.piramideModello = true;                     
                         _rqData.monitoraggioUnit.monitoraggio = true;
                         break;
                    case 74000:
                    case 74001:
                    case 74002:
                    case 74003:
                         //glossario prende da db i testi
                         break;
                    case 75000:
                    case 75001:
                    case 75002:
                    case 75003:
                         //avvertenze prende da db i testi
                         break;
                    case 85000:// sostituire con 85000:
                         _rqData.patrimonioUnit.patrimonioCasa.assetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioImmobiliare = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.macroAssetClass = true;
                         _rqData.displayInfos = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         break;
                     case 223:// inserito per gestire i dati per l'immobiliare da pagina di test sostituisce 85000 da applicativo:
                         _rqData.patrimonioUnit.patrimonioCasa.assetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.dettaglioProdotti = true;
                         _rqData.pianificazioneUnit.pianificazioneVerticale = true;
                         _rqData.patrimonioUnit.patrimonioImmobiliare = true;                         
                         _rqData.displayInfos = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.intermediario = true;
                         _rqData.patrimonioUnit.patrimonioFinanziario.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioCasa.macroAssetClass = true;
                         _rqData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean = true;
                         //_rqData.rischioUnit.rischio = true;
                         break;
                    default:                         
                         break;
                 }
             }
            #endregion 

             
        }
        public static uidConsulenza GetMokCliente(Int64 ChiaveClientePb)
        {

            uidConsulenza uidConsulenza = new uidConsulenza
            {
                codiceAgente = "",
                codiceFiscale ="",
                codiceRete ="",
                codiceMandato = ""
            };  


            DataTable dtCliente;

            try
            {
                dtCliente = DataAccess.ExecuteDataTableStoredProcedure(
                     DBProvider.SqlServerConsulenzaUnica,
                     "REP_INFOCLIENTEPB",
                     new List<Parametro> { new Parametro
                    {
                        Direction = ParameterDirection.Input,
                        DbType = DbType.Int64,
                        ParameterName = "chiaveClientePb",
                        Value = ChiaveClientePb
                    }});

                if (dtCliente.Rows.Count == 1) {
                    uidConsulenza = new uidConsulenza
                    {
                        codiceAgente = dtCliente.Rows[0]["CodAge"].ToString().ToUpper(),
                        codiceFiscale = dtCliente.Rows[0]["CodFis"].ToString().ToUpper(),
                        codiceRete = dtCliente.Rows[0]["Rete"].ToString().ToUpper(),
                        codiceMandato = dtCliente.Rows[0]["CodMan"].ToString().ToUpper()
                    };               
                }
            }
            catch  {
                 
            }

            


            return uidConsulenza;
        }
        
        #region vincoli
        public bool isVincolo(string vincolo) {
            try {
                return _data.vincoli.vincoli1.First(o => o.key == vincolo).value.Equals("0");
            } catch { }
            return false;
        }
        #endregion


        public bool flagNucleoContrattualizzato()
        {
            return _data.responseData.nucleiUnit.anagrafica.flagContratto;            
        }

        public bool flagAdeguatezzaPro(){
            if (_chiaveProposta != null) {
                if (_data.responseData.propostaUnit.stAdequatezza.flagAdeguatezzaProSpecified)
                    return _data.responseData.propostaUnit.stAdequatezza.flagAdeguatezzaPro;
                else
                {
                    try
                    {
                        return _data.responseData.rischioUnit.adeguatezza.adeguatezzaTopBean.isAdeguato;
                    }
                    catch { }
                    return false;
                }
            }
            else
                return false;

        }

      

        public uidConsulenza getClienteReport()
        {
            
            return _uidConsulenza;
        }
        public rsData all() { return _data.responseData; }
        public cuClientePBBean clientePB() { return _data.responseData.clientePB; }
        public rsClienteUnit clienteUnit() { return _data.responseData.clienteUnit; }
        public rsDisplayInfosMap displayInfos() { return _data.responseData.displayInfos; }
        public rsMonioraggioUnit monitoraggioUnit() { return _data.responseData.monitoraggioUnit; }
        public rsPatrimonioUnit patrimonioUnit() { return _data.responseData.patrimonioUnit; }
        public rsPianificazioneUnit pianificazioneUnit() { return _data.responseData.pianificazioneUnit; }
        public rsPiramideModelloUnit piramideModelloUnit() { return _data.responseData.piramideModelloUnit; }
        public rsPropostaUnit propostaUnit() { return _data.responseData.propostaUnit; }
        public rsRischioUnit rischioUnit() { return _data.responseData.rischioUnit; }
        public rsNucleiUnit nucleiUnit() { return _data.responseData.nucleiUnit; }


        private rsCorrelazioni rischioUnit_Correlazioni(int? correlazioneAssetTimeHorizon, int? correlazioneProdottiTimeHorizon, int? correlazioneValuteTimeHorizon)
        { 
            

            fideuram.data.service.ReportManagerService s = new fideuram.data.service.ReportManagerService();
            s.Url = UrlFideuramDati;
            s.UseDefaultCredentials = true;
            s.Timeout = 360000;


            return s.correlazioniReportManagerWS(new rqCorrelazioni
            {
                chiaveClientePB = _uidConsulenza,
                chiaveNucleo = _chiaveNucleo,
                correlazioneAssetTimeHorizon = correlazioneAssetTimeHorizon > 0 ? correlazioneAssetTimeHorizon.ToString() : null,
                correlazioneProdottiTimeHorizon = correlazioneProdottiTimeHorizon > 0 ? correlazioneProdottiTimeHorizon.ToString() : null,
                correlazioneValuteTimeHorizon = correlazioneValuteTimeHorizon>0?correlazioneValuteTimeHorizon.ToString():null
            });
        }
        public void rischioUnit_CorrelazioneAsset(int correlazioneAssetTimeHorizon)
        {
            _data.responseData.rischioUnit.rischio.correlazioneAsset = rischioUnit_Correlazioni(correlazioneAssetTimeHorizon,null,null).correlazioneAsset;             
        }
        public void rischioUnit_CorrelazioneProdotti(int correlazioneProdottiTimeHorizon)
        {
            _data.responseData.rischioUnit.rischio.correlazioneProdotti = rischioUnit_Correlazioni(null, correlazioneProdottiTimeHorizon,null).correlazioneProdotti;
        }
        public void rischioUnit_CorrelazioneEsposizioneValutaria(int correlazioneValuteTimeHorizon)
        {
            _data.responseData.rischioUnit.rischio.correlazioneEsposizioneValutaria = rischioUnit_Correlazioni(null, null, correlazioneValuteTimeHorizon).correlazioneValute;
        }
        
        public string FormatBanca() { return FormatBanca("$/Banca/$"); }
        public string FormatBanca(string testo, string param1) {            
           return FormatBanca(string.Format(testo, param1));
        }        
        public string FormatBanca(string testo) {            
            string banca = all().promotoreBancario.network.Equals("F")?"Fideuram":"Sanpaolo Invest";             
            return testo.Replace("$/Banca/$", banca);
        }
        public string FormatDecimal(string testo, decimal value)
        {
            return string.Format(testo, value.ToString("#,##0.00").ToString());        
        }
         
        public string FormatDelegato(string testo, string nomeDelegato, string cognomeDelegato)
        {
            testo=testo.Replace("$/NomeDelegato/$", nomeDelegato);          
            return testo.Replace("$/CognomeDelegato/$", cognomeDelegato);
        }

        public void testMonitoraggioRischio()
        {
            //DatiMonitoraggioImmobiliare.rqReportManager rq = new DatiMonitoraggioImmobiliare.rqReportManager
            //{
            //    chiaveClientePB=_uidConsulenza,
            //    codiceFiscale="MRMNNN38H23L112B",
            //   codiceAgente="014803",
            //   codiceRete="F",
            // };
            
            //rq.
            
            fideuram.data.service.rqReportManager request = new fideuram.data.service.rqReportManager
            {
                chiaveClientePB = _uidConsulenza,
                chiaveProposta = _chiaveProposta,
                chiaveNucleo = _chiaveNucleo,
                info = _rqInfo,
                requestData = _rqData
            };

          
          

            fideuram.data.service.ReportManagerService s = new fideuram.data.service.ReportManagerService();
            s.Url = UrlFideuramDati;
            s.UseDefaultCredentials = true;
            s.Timeout = 360000;
            _data = s.reportManagerWS(request);
            if (_data.info.elencoErrori.Length > 0)
            {
                string err = "reportManagerWS";
                foreach (var item in _data.info.elencoErrori)
                {
                    err += " " + item.tipoErrore + " " + item.codiceErrore + " " + item.messaggio;
                }
                throw new Exception(err);
            }

        }
       





        public List<rsPosizione> GetListaProdottiPatrimonioAltro(bool raggruppaEligo = false)
        {
            //TODO

            var listReturn = new List<rsPosizione>();

                                    

            //Pianificazione
            var pianificazione =   pianificazioneUnit().pianificazioneVerticale;

            // Operazioni in corso
            listReturn.Add(new rsPosizione { prodotto = new rsProdotto() { nomeProdotto = "Operazioni in corso" }, ctv = pianificazione.partiteViaggianti });

            // CC Negativi
            listReturn.Add(new rsPosizione { prodotto = new rsProdotto() { nomeProdotto = "C/c negativo" }, ctv = pianificazione.contoCorrenteNegativo });

            if (raggruppaEligo)
            {
                listReturn.Add(new rsPosizione { prodotto = new rsProdotto() { nomeProdotto = "Liquidità negativa GP Eligo" }, ctv = pianificazione.liqEligoFondiNeg + pianificazione.liqEligoTitoliNeg });
            }
            else
            {
                // GP Eligo Fondi
                listReturn.Add(new rsPosizione { prodotto = new rsProdotto() { nomeProdotto = "Liquidità negativa GP Eligo Fondi" }, ctv = pianificazione.liqEligoFondiNeg });

                // GP Eligo Titoli
                listReturn.Add(new rsPosizione { prodotto = new rsProdotto() { nomeProdotto = "Liquidità negativa GP Eligo Titoli" }, ctv = pianificazione.liqEligoTitoliNeg });
            }

            return listReturn.FindAll(o => o.ctv != 0);
        }
        
  
        public decimal CASA_TOTALEPOSITIVO { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.risorseFinanziarieBF + CASA_OC; } }
        public decimal CASA_CC { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.contoCorrentePositivo; } }
        public decimal CASA_SUBTOTALE { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.risorseFinanziarieBF; } }        
        public decimal CASA_OC { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.partiteViaggianti; } }
        public decimal CASA_CCN { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.contoCorrenteNegativo; } }
        public List<rsPosizione> CASA_LCCN { get { return (from o in _data.responseData.patrimonioUnit.patrimonioCasa.dettaglioProdotti.dettaglioProdotti where o.area.ToUpper().Equals("CC") && o.ctv < 0 orderby o.ctv select o).ToList(); } }
        public decimal CASA_GPELIGO { get { return CASA_GPELIGOFONDI + CASA_GPELIGTITOLI; } }        
        public decimal CASA_GPELIGOFONDI { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.liqEligoFondiNeg; } }
        public List<rsPosizione> CASA_LGPELIGOFONDI { get { return (from o in _data.responseData.patrimonioUnit.patrimonioCasa.dettaglioProdotti.dettaglioProdotti where o.area.ToUpper().Equals("SELF") && o.prodotto.codSottoprodotto.ToUpper().Equals("L191") orderby o.ctv select o).ToList(); } }
        public decimal CASA_GPELIGTITOLI { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.liqEligoTitoliNeg; } }
        public List<rsPosizione> CASA_LGPELIGOTITOLI { get { return (from o in _data.responseData.patrimonioUnit.patrimonioCasa.dettaglioProdotti.dettaglioProdotti where o.area.ToUpper().Equals("SELF") && o.prodotto.codSottoprodotto.ToUpper().Equals("L192") orderby o.ctv select o).ToList(); } }
        // 20181030 AC
        public decimal CASA_TUOFOGLIO { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.liqFogliNeg; } }
        public List<rsPosizione> CASA_LTUOFOGLIO { get { return (from o in _data.responseData.patrimonioUnit.patrimonioCasa.dettaglioProdotti.dettaglioProdotti where o.area.ToUpper().Equals("SELF") && o.prodotto.codSottoprodotto.ToUpper().Equals("V301") orderby o.ctv select o).ToList(); } }
        //--20181030 AC
        public decimal CASA_TOTALE { get { return _data.responseData.pianificazioneUnit.pianificazioneVerticale.patrimonioTotaleRFA; } }

      

        public decimal TRZ_TOTALEPOSITIVO { get { return _data.responseData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean.risorseFinanziarieTerzi; } }
        public decimal TRZ_CC { get { return _data.responseData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean.contoCorrentiPositivi; } } 
        public decimal TRZ_SUBTOTALE { get { return _data.responseData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean.risorseFinanziarieTerzi; } }
        public decimal TRZ_OC { get { return 0; } }
        public decimal TRZ_CCN { get { return _data.responseData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean.contoCorrentiNegativi; } }
        public decimal TRZ_GPELIGO { get { return 0; } }
        public decimal TRZGPELIGOFONDI { get { return 0; } }
        public decimal TRZ_GPELIGTITOLI { get { return 0; } }
        // 20181030 AC
        public decimal TRZ_TUOFOGLIO { get { return 0; } }
        //--20181030
        public decimal TRZ_TOTALE { get { return _data.responseData.patrimonioUnit.patrimonioTerzi.patrimonioTerziBean.patrimonioTerzi; } } 

        public decimal FNZ_TOTALEPOSITIVO { get { return CASA_TOTALEPOSITIVO + TRZ_TOTALEPOSITIVO; } }
        public decimal FNZ_CC { get { return CASA_CC + TRZ_CC; } }   
        public decimal FNZ_SUBTOTALE { get { return CASA_SUBTOTALE + TRZ_SUBTOTALE; } }
        public decimal FNZ_OC { get { return CASA_OC; } }
        public decimal FNZ_CCN { get { return CASA_CCN + TRZ_CCN; } }
        public decimal FNZ_GPELIGO { get { return CASA_GPELIGO; } }
        public decimal FNZ_GPELIGOFONDI { get { return CASA_GPELIGOFONDI; } }
        public decimal FNZ_GPELIGTITOLI { get { return CASA_GPELIGTITOLI; } }
        // 20181030 AC
        public decimal FNZ_TUOFOGLIO { get { return CASA_TUOFOGLIO; } }
        //--20181030
        public decimal FNZ_TOTALE { get { return CASA_TOTALE + TRZ_TOTALE; } }

        public decimal IMB_TOTALE { get { return _data.responseData.patrimonioUnit.patrimonioImmobiliare.totalePatrimonio; } }
        public decimal AZD_TOTALE { get { return _data.responseData.patrimonioUnit.patrimonioAziendale.totalePatrimonio; } }
        public decimal ALT_TOTALE { get { return _data.responseData.patrimonioUnit.patrimonioAltro.totalePatrimonio; } }      

        public decimal CMP_TOTALEPOSITIVO { get { return _data.responseData.patrimonioUnit.patrimonioComplessivo.totale; } }
        public decimal CMP_CC { get { return FNZ_CC ; } }
        public decimal CMP_SUBTOTALE { get { return FNZ_SUBTOTALE + IMB_TOTALE + AZD_TOTALE + ALT_TOTALE; } }
        public decimal CMP_OC { get { return FNZ_OC; } }
        public decimal CMP_CCN { get { return FNZ_CCN; } }
        public decimal CMP_GPELIGO { get { return FNZ_GPELIGO; } }
        public decimal CMP_GPELIGOFONDI { get { return FNZ_GPELIGOFONDI; } }
        public decimal CMP_GPELIGOTITOLI { get { return FNZ_GPELIGTITOLI; } }
        // 20181030 AC
        public decimal CMP_TUOFOGLIO { get { return FNZ_TUOFOGLIO; } }
        //--20181030

        // 20181030 AC
        //public decimal CMP_TOTALE { get { return CMP_TOTALEPOSITIVO + CASA_CCN + CASA_GPELIGOFONDI + CASA_GPELIGTITOLI + TRZ_CCN; } }
        public decimal CMP_TOTALE { get { return CMP_TOTALEPOSITIVO + CASA_CCN + CASA_GPELIGOFONDI + CASA_GPELIGTITOLI + CASA_TUOFOGLIO + TRZ_CCN; } }
        //--20181030
        
        public decimal ATTUTALE_TOTALEPOSITIVO { get { return CASA_TOTALEPOSITIVO; } }
        public decimal ATTUTALE_CC { get { return CASA_CC; } }
        public decimal ATTUTALE_SUBTOTALE { get { return CASA_SUBTOTALE; } }
        public decimal ATTUTALE_OC { get { return CASA_OC; } }
        public decimal ATTUTALE_CCN { get { return CASA_CCN; } }
        public decimal ATTUTALE_GPELIGO { get { return CASA_GPELIGO; } }
        public decimal ATTUTALE_GPELIGOFONDI { get { return CASA_GPELIGOFONDI; } }
        public decimal ATTUTALE_GPELIGOTITOLI { get { return CASA_GPELIGTITOLI; } }
        // 20181030 AC
        public decimal ATTUTALE_TUOFOGLIO { get { return CASA_TUOFOGLIO; } }
        //--20181030 AC  
        public decimal ATTUTALE_TOTALE { get { return CASA_TOTALE; } }

        public decimal PROPOSTO_TOTALEPOSITIVO { get { return _data.responseData.propostaUnit.stDettaglioProposta.risorseFinanziarieBF + PROPOSTO_OC; } }
        public decimal PROPOSTO_CC { get { return _data.responseData.propostaUnit.stDettaglioProposta.contoCorrentePositivo; } }        
        public decimal PROPOSTO_SUBTOTALE { get { return _data.responseData.propostaUnit.stDettaglioProposta.risorseFinanziarieBF;  } }       
        public decimal PROPOSTO_OC { get { return _data.responseData.propostaUnit.stDettaglioProposta.partiteViaggianti; } }
        public decimal PROPOSTO_CCN { get { return _data.responseData.propostaUnit.stDettaglioProposta.contoCorrenteNegativo; } }
        public List<rsSTPosizione> PROPOSTO_LCCN { get { return (from o in _data.responseData.propostaUnit.dettaglioProdotti.dettaglioProdotti where o.area.ToUpper().Equals("CC") && o.ctvPro < 0 orderby o.ctvPro select o).ToList(); } }
        public decimal PROPOSTO_GPELIGO { get { return PROPOSTO_GPELIGOFONDI + PROPOSTO_GPELIGOTITOLI; } }
        public decimal PROPOSTO_GPELIGOFONDI { get { return _data.responseData.propostaUnit.stDettaglioProposta.liqEligoFondiNeg; } }
        public List<rsSTPosizione> PROPOSTO_LGPELIGOFONDI { get { return (from o in _data.responseData.propostaUnit.dettaglioProdotti.dettaglioProdotti where o.area.ToUpper().Equals("SELF") && o.prodotto.codSottoprodotto.ToUpper().Equals("L191") orderby o.ctvPro select o).ToList(); } }
        public decimal PROPOSTO_GPELIGOTITOLI { get { return _data.responseData.propostaUnit.stDettaglioProposta.liqEligoTitoliNeg; } }
        public List<rsSTPosizione> PROPOSTO_LGPELIGOTITOLI { get { return (from o in _data.responseData.propostaUnit.dettaglioProdotti.dettaglioProdotti where o.area.ToUpper().Equals("SELF") && o.prodotto.codSottoprodotto.ToUpper().Equals("L192") orderby o.ctvPro select o).ToList(); } }
        // 2181030 AC
        public decimal PROPOSTO_TUOFOGLIO { get { return _data.responseData.propostaUnit.stDettaglioProposta.liqFogliNeg; } }
        public List<rsSTPosizione> PROPOSTO_LTUOFOGLIO { get { return (from o in _data.responseData.propostaUnit.dettaglioProdotti.dettaglioProdotti where o.area.ToUpper().Equals("SELF") && o.prodotto.codSottoprodotto.ToUpper().Equals("V301") orderby o.ctvPro select o).ToList(); } }
        //--20181030 AC
        public decimal PROPOSTO_TOTALE { get { return _data.responseData.propostaUnit.stDettaglioProposta.patrimonioTotaleRFA; } }

        public List<prodottoAdeguatezzaBean> RI_AD_AREA_LGPELIGOFONDI  { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiArea.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("L191") orderby o.currentEquivalent select o).ToList(); } }
        public List<prodottoAdeguatezzaBean> RI_AD_AREA_LGPELIGOTITOLI { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiArea.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("L192") orderby o.currentEquivalent select o).ToList(); } }
        // 20181030 AC
        public List<prodottoAdeguatezzaBean> RI_AD_AREA_LTUOFOGLIO { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiArea.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("V301") orderby o.currentEquivalent select o).ToList(); } }
        //--20181030
        public List<prodottoAdeguatezzaBean> RI_AD_AREA_LCCN { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiArea.other.items where o.area.ToUpper().Equals("CC") && o.currentEquivalent < 0 orderby o.currentEquivalent select o).ToList(); } }

        public List<prodottoAdeguatezzaBean> RI_AD_CATEG_LGPELIGOFONDI { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiCategoria.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("L191") orderby o.currentEquivalent select o).ToList(); } }
        public List<prodottoAdeguatezzaBean> RI_AD_CATEG_LGPELIGOTITOLI { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiCategoria.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("L192") orderby o.currentEquivalent select o).ToList(); } }
        // 20181030 AC
        public List<prodottoAdeguatezzaBean> RI_AD_CATEG_LTUOFOGLIO { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiCategoria.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("V301") orderby o.currentEquivalent select o).ToList(); } }
        //--20181030
        public List<prodottoAdeguatezzaBean> RI_AD_CATEG_LCCN { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiCategoria.other.items where o.area.ToUpper().Equals("CC") && o.currentEquivalent < 0 orderby o.currentEquivalent select o).ToList(); } }

        public List<prodottoAdeguatezzaBean> RI_AD_CONTR_LGPELIGOFONDI { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiContratti.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("L191") orderby o.currentEquivalent select o).ToList(); } }
        public List<prodottoAdeguatezzaBean> RI_AD_CONTR_LGPELIGOTITOLI { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiContratti.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("L192") orderby o.currentEquivalent select o).ToList(); } }
        // 20181030 AC
        public List<prodottoAdeguatezzaBean> RI_AD_CONTR_LTUOFOGLIO { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiContratti.other.items where o.area.ToUpper().Equals("SELF") && o.codiceSottoProdotto.ToUpper().Equals("V301") orderby o.currentEquivalent select o).ToList(); } }
        //--20181030
        public List<prodottoAdeguatezzaBean> RI_AD_CONTR_LCCN { get { return (from o in _data.responseData.rischioUnit.adeguatezza.listaProdottiContratti.other.items where o.area.ToUpper().Equals("CC") && o.currentEquivalent < 0 orderby o.currentEquivalent select o).ToList(); } }

        public List<contrattoCliente> CLIENTE_CONTR_LCCN { get { return (from o in _data.responseData.patrimonioUnit.contrattiCliente.elencoContratti where o.ctv < 0 orderby o.ctv select o).ToList(); } }
  
    }


     
}
   
  
