using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System;
using System.Data;
using System.Web;
using ConsulenzaEvoluta;
using PrometeiaMessage.bancafideuram.nac.anagrafica;

public partial class index : System.Web.UI.Page
{
   
    public string checkPrivacy;     
    public string userName = string.Empty;
    public string codiceApplicazione = string.Empty;
    public string urlCenter = string.Empty;

    protected void Page_Load(object sender, EventArgs e)
    {

        GestioneStampe gs = new GestioneStampe(new RequestSession(Request));        
        gs.datiNavigazione.CaptionNav = "";
        if(gs.datiNavigazione.Token==0) 
                        gs.SetTokenAngaWs();

        gs.setdsParam();

        if (!gs.datiNavigazione.isNotCliente)
        {
            gs.SetCliente(gs.datiNavigazione.CodicePB, gs.datiNavigazione.CfIva);
            gs.datiNavigazione.checkPrivacy = gs.datiCliente.PrivacyAccettata; 
        }

        if (!gs.datiNavigazione.isNotCliente &&
            gs.datiCliente.Tipologia == Cliente.TipoCliente.Prospect &&
            !gs.datiNavigazione.checkPrivacy) {
                idMessage.Text = "ATTENZIONE: Non è possibile stampare la reportistica per un cliente potenziale in assenza dell’autorizzazione del cliente all’utilizzo dei dati";
                idMessage.Visible = true;
                return;
                 
        }


        string codiceUtenteQueryString = gs.datiNavigazione.CodicePB;

        if (GetUtenteAutorizzato.getAccessoPortaleAutorizzato())  
        {
            urlCenter = "RicercaHD.aspx";
        }
        else if (gs.datiNavigazione.isNotCliente)  
        {
            urlCenter = "blank.aspx"; 
        }
        else
        {           
            urlCenter = "blank.aspx";

            string nomePB = string.Empty;
            string cognomePB = string.Empty;
            string nomeCliente = string.Empty;
            string cognomeCliente = string.Empty;


            nomePB = gs.datiCliente.NomePB;
            cognomePB = gs.datiCliente.CognomePB;
            checkPrivacy = gs.datiCliente.PrivacyAccettata == true ? "1" : "0";
            
             

            #region InfoClient e ChiaveCliente di GlobalPosition e Anagrafica

            // Global Position
            PrometeiaMessage.bancafideuram.nac.globalposition.InfoClient _infoCliente_GlobalPosition = new PrometeiaMessage.bancafideuram.nac.globalposition.InfoClient();
            _infoCliente_GlobalPosition.codiceApplicazione = WebConfigParameter.getParameter("CODICEAPPLICAZIONE").ToString();
            _infoCliente_GlobalPosition.codiceRete = gs.datiNavigazione.Rete;
            _infoCliente_GlobalPosition.versioneDatabaseSIMPB = gs.datiNavigazione.Token;


            PrometeiaMessage.bancafideuram.nac.globalposition.ChiaveCliente _chiaveCliente_GlobalPosition = new PrometeiaMessage.bancafideuram.nac.globalposition.ChiaveCliente();
            _chiaveCliente_GlobalPosition.codiceAgente = gs.datiNavigazione.Agente;
            _chiaveCliente_GlobalPosition.codicefiscale = gs.datiNavigazione.CfIva;
            _chiaveCliente_GlobalPosition.codiceRete = gs.datiNavigazione.Rete;
            _chiaveCliente_GlobalPosition.potenzialeClienteNAC = true;


            // Anagrafica
            PrometeiaMessage.bancafideuram.nac.anagrafica.InfoClient _infoCliente_Anagrafica = new PrometeiaMessage.bancafideuram.nac.anagrafica.InfoClient();
            _infoCliente_Anagrafica.codiceApplicazione = WebConfigParameter.getParameter("CODICEAPPLICAZIONE").ToString();
            _infoCliente_Anagrafica.codiceRete = gs.datiNavigazione.Rete;
            _infoCliente_Anagrafica.versioneDatabaseSIMPB = gs.datiNavigazione.Token;

            PrometeiaMessage.bancafideuram.nac.anagrafica.ChiaveCliente _chiaveCliente_Anagrafica = new PrometeiaMessage.bancafideuram.nac.anagrafica.ChiaveCliente();
            _chiaveCliente_Anagrafica.codiceAgente = gs.datiNavigazione.Agente;
            _chiaveCliente_Anagrafica.codicefiscale = gs.datiNavigazione.CfIva;
            _chiaveCliente_Anagrafica.codiceRete = gs.datiNavigazione.Rete;
            _chiaveCliente_Anagrafica.potenzialeClienteNAC = true;

            #endregion

            #region Caricamento tabella Dettaglio_Asul

            // Recupero i dati dalla Prometeia.GetContrattoSintesiPerClienteCaricamentoAsul
            DataTable dtDettaglioAsul = new DataTable();
            DataTable dtContrattoSintesiPerCliente = Prometeia.GetContrattoSintesiPerClienteCaricamentoAsul(_chiaveCliente_GlobalPosition, _infoCliente_GlobalPosition, gs.datiCliente.ChiaveClientePB);
            DataRow[] rowsProdottiAsul = dtContrattoSintesiPerCliente.Select("tipoProdotto='ASUL'");

            // Richiamo il dettaglio asul per ogni asul trovato nel portafoglio del cliente.
            foreach (DataRow itemProdottoAsul in rowsProdottiAsul)
            {
                dtDettaglioAsul.Merge(Prometeia.GetContrattoUnitLinkedSaldo(_chiaveCliente_GlobalPosition, itemProdottoAsul["CODICECONTRATTO"].ToString(), _infoCliente_GlobalPosition, gs.datiCliente.ChiaveClientePB));
            }

            // Insert sulla DETTAGLIO_ASUL di ConsulenzaEvoluta
            if (dtDettaglioAsul.Rows.Count > 0)
                BusinessManager.InsertData_Into_DettaglioAsul(gs.datiCliente.ChiaveClientePB, dtDettaglioAsul);

            #endregion

            #region Gestione Autorizzazione

            if (WebConfigParameter.getParameter("Ambiente") == "esterno")
                userName = User.Identity.Name;
            else
                userName = WebConfigParameter.getParameter("UtenzaWindowsAccessoHP");

            //1) utente loggato (VINCENZO UT.PROVA 2 MAGRI)
            //2) utente impersonificato (VIOTTI GIANCARLO)

            string AbilitazionePrimaria = string.Empty;

            codiceApplicazione = WebConfigParameter.getParameter("CodiceApplicazione");

            string codiceUtente = gs.datiNavigazione.Rete + Utente.GetCodiceUtente(userName); // è il codiceutente con cui andrò a interrogare la ConsulenzaBase.dbo.PromotoreBancario per recuperare le informazioni dell'utente loggato

            Utente utenteLoggato_WS = Utente.GetAutorizzazioniAccessoGestioneControlli(userName, codiceApplicazione); // utente loggato (VINCENZO UT.PROVA 2 MAGRI), informazioni prese dai WS
            Utente utenteLoggato = Utente.GetProfiloUtente(codiceUtente, utenteLoggato_WS.ProfiloUtenteLoggato); // utente loggato (VINCENZO UT.PROVA 2 MAGRI) , informazioni prese da DB
            utenteLoggato.ProfiloUtenteLoggato = utenteLoggato_WS.ProfiloUtenteLoggato;
            utenteLoggato.AbilitazionePrimaria = utenteLoggato_WS.AbilitazionePrimaria;
            utenteLoggato.IsUtenteImpersonificato = utenteLoggato_WS.IsUtenteImpersonificato;
            utenteLoggato.UtenteAutorizzatoApplicazione = utenteLoggato_WS.UtenteAutorizzatoApplicazione;
             

            
            Utente utenteImpersonificato = Utente.GetProfiloUtente(codiceUtenteQueryString, null); // utente impersonificato (VIOTTI GIANCARLO)
            utenteImpersonificato.AbilitazionePrimaria = utenteLoggato.AbilitazionePrimaria;
            utenteImpersonificato.IsUtenteImpersonificato = utenteLoggato.IsUtenteImpersonificato;
            utenteImpersonificato.UtenteAutorizzatoApplicazione = utenteLoggato.UtenteAutorizzatoApplicazione;

            gs.SetUtente(utenteImpersonificato);

            // FIX da valutare per TK T-300675-L4Y3
            if (!gs.datiNavigazione.CodiceAssistente.Equals(gs.datiNavigazione.Agente))
                codiceUtenteQueryString = codiceUtente;

            Utente utenteSoloPerAutorizzazione = Utente.GetAutorizzazioni(userName, codiceApplicazione, gs.datiNavigazione.Rete, codiceUtenteQueryString, gs.datiNavigazione.Token);

            if (utenteSoloPerAutorizzazione.UtenteAutorizzatoApplicazione)
            {
                if (Request.Browser.Cookies)
                {
                    #region utente Loggato (UtenteLoggatoDiSessione)

                    string utenteLoggatoString = Utente.SerializeMessage(utenteLoggato);

                    utenteLoggatoString = HttpUtility.UrlDecode(utenteLoggatoString.TrimStart().TrimEnd());
                    Session.Add("UtenteLoggatoDiSessione", utenteLoggatoString);

                    #endregion

                    #region utente Impersonificato (UtenteImpersonificatoDiSessione)

                    string utenteImpersonificatoString = Utente.SerializeMessage(utenteImpersonificato);

                    utenteImpersonificatoString = HttpUtility.UrlDecode(utenteImpersonificatoString.TrimStart().TrimEnd());
                    Session.Add("UtenteImpersonificatoDiSessione", utenteImpersonificatoString);

                    #endregion
                }
                else
                {
                    AbilitazionePrimaria = string.Empty;
                    if (utenteLoggato != null)
                        if (utenteLoggato.AbilitazionePrimaria != null)
                            AbilitazionePrimaria = utenteLoggato.AbilitazionePrimaria;

                    Response.Redirect("error.aspx?UtenteWindows=" + userName + "&UtentePB=" + codiceUtenteQueryString + "&CodiceApplicazione=" + WebConfigParameter.getParameter("CODICEAPPLICAZIONE") + "&VersioneSIMPB=" + gs.datiNavigazione.Token.ToString() + "&AbilitazionePrimaria=" + AbilitazionePrimaria);
                }
            }
            else
            {
                AbilitazionePrimaria = string.Empty;
                if (utenteLoggato != null)
                    if (utenteLoggato.AbilitazionePrimaria != null)
                        AbilitazionePrimaria = utenteLoggato.AbilitazionePrimaria;

                Response.Redirect("error.aspx?UtenteWindows=" + userName + "&UtentePB=" + codiceUtenteQueryString + "&CodiceApplicazione=" + WebConfigParameter.getParameter("CODICEAPPLICAZIONE") + "&VersioneSIMPB=" + gs.datiNavigazione.Token.ToString() + "&AbilitazionePrimaria=" + AbilitazionePrimaria + "&UtenteAutorizzato=" + utenteLoggato_WS.UtenteAutorizzatoApplicazione.ToString());
            }


            #endregion
        }
    }
}