using System;
using System.Web;
using System.Net;
using System.Data;
using ClassLibraryWS.bancafideuram.nac.anagrafica;
using ClassLibraryWS.bancafideuram.nac.globalposition;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Configuration;
using System.IO;
//ISPB using bancafideuram.nac.ads4ws;

public partial class InitForm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {

                if (ClassLibraryWS.Debug.iSDebug && !IsPostBack)
            {
                //txb_PB.Text = ClassLibraryWS.Debug.Agente;
                //txb_CodiceCliente.Text = ClassLibraryWS.Debug.codNsg;
                //txb_Rete.Text = ClassLibraryWS.Debug.Rete;
                //#region AvvioImmediato //ISPB
                //btn_Ok_Click(sender, e);
                //#endregion AvvioImmediato //ISPB
                //txb_PB_Nucleo.Text = ClassLibraryWS.Debug.Agente;
                //txb_Chiave_Nucleo.Text = ClassLibraryWS.Debug.ChiaveNucleo;
                //txb_Rete_Nucleo.Text = ClassLibraryWS.Debug.Rete;           
            }
        }
        catch (Exception excep){
            StreamWriter log = new StreamWriter(HttpContext.Current.Server.MapPath("c:\\LogIspb.txt"), true, System.Text.Encoding.Default);
            log.WriteLine(" - " + excep.Message.ToString());
        }

    }
    protected void btn_Ok_Click(object sender, EventArgs e)
    {
        Session.RemoveAll();
        
        string codPB = this.txb_PB.Text.Trim();
        string tipoRete = this.txb_Rete.Text.ToUpper().Trim();
        string codCliente = (this.txb_CodiceCliente.Text).ToUpper().Trim();
        string codMandato = (this.txt_Mandato.Text).ToUpper().Trim();
        string codAssistente = this.txb_CodiceAssistente.Text.ToUpper().Trim();
        string token = string.Empty;

        codAssistente = string.IsNullOrEmpty(codAssistente) ? codPB : codAssistente;

        //set cookie
        HttpCookie cookie = new HttpCookie("UserID");

        String strHostName = Dns.GetHostName();
        IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
        IPAddress[] addr = ipEntry.AddressList;

        cookie.Value = addr[0].ToString();
        Response.Cookies.Add(cookie);

        #region Frames.aspx
        string initialURI = WebConfigParameter.getParameter("URI");

        string command = "window.open(\" " + initialURI + "?codPB=" + codPB + "&codCliente=" + codCliente + "&codAs=" + codAssistente + "&token=" + token + "&tipoRete=" + tipoRete + "&mandato=" + codMandato + "\");"; //ISPB adeguamento Codice cliente contiene CodNsg 
        ClientScript.RegisterClientScriptBlock(typeof(string), "one",
                                                "<script language=\"javascript\">" + "\n" +
                                                "<!--" + "\n" +
                                                command + "\n" +
                                                "//-->" + "\n" +
                                                "</script>");
        #endregion
    }


    //protected void btn_Ok_Nucleo_Click(object sender, EventArgs e)
    //{
    //    string codPB = this.txb_PB_Nucleo.Text.Trim();
    //    string tipoRete = this.txb_Rete_Nucleo.Text.ToUpper().Trim();
    //    string chiaveNucleo = (this.txb_Chiave_Nucleo.Text).ToUpper().Trim();

    //    string initialURI = "reportNucleiFamiliari.aspx";

    //    //reportNucleiFamiliari.aspx?chiaveNucleo=646&codPB=001016&tipoRete=F&token=
    //    //http://localhost/SeiReportEvoluzione/reportNucleiFamiliari.aspx?chiaveNucleo=646&codPB=001016&tipoRete=F&token=

    //    string command = "window.open(\" " + initialURI + "?codPB=" + codPB + "&chiaveNucleo=" + chiaveNucleo + "&token=" + "&tipoRete=" + tipoRete + "\");";
    //    ClientScript.RegisterClientScriptBlock(typeof(string), "one",
    //                                            "<script language=\"javascript\">" + "\n" +
    //                                            "<!--" + "\n" +
    //                                            command + "\n" +
    //                                            "//-->" + "\n" +
    //                                            "</script>");

    //}
     
    //ISPB >>>>
    //private bool GetAutorizzazioni(string UserId, string CodApp)
    //{
    //    bool utenteAutorizzato = false;
    //    //ISPB >>>>
    //    ClassLibraryWS.bancafideuram.ads4ws.Ads4wsImpl asd4web = new ClassLibraryWS.bancafideuram.ads4ws.Ads4wsImpl();
    //    asd4web.Url = WebConfigParameter.getParameter("hp_sei.ads4ws");
    //    ClassLibraryWS.bancafideuram.ads4ws.GetAutorizzazioniResponse risposta = asd4web.getAutorizzazione(UserId, CodApp);
    //    //ISPB <<<<
    //    if (risposta.Applicazione.attiva == true)
    //        utenteAutorizzato = true;

    //    return utenteAutorizzato;
    //}
    //ISPB <<<<<



    protected void Button1_Click(object sender, EventArgs e)
    {
        GetContrattoSintesiPerCliente();
    }

    public DataTable GetContrattoSintesiPerCliente()
    {
        ClassLibraryWS.bancafideuram.nac.globalposition.ChiaveCliente chiave = new ClassLibraryWS.bancafideuram.nac.globalposition.ChiaveCliente();
        chiave.codiceAgente = "253620";
        chiave.codiceRete = "I";
        chiave.NSG = "0001370124000";

        ClassLibraryWS.bancafideuram.nac.globalposition.InfoClient infoCliente = new ClassLibraryWS.bancafideuram.nac.globalposition.InfoClient();
        infoCliente.codiceApplicazione = "KCW";
        infoCliente.codiceRete = "I";
        infoCliente.versioneDatabaseSIMPB = 0;

        int chiaveclientepb = 1;

        //ISPB GestioneCliente.ImpostaCodiceFiscaleMandato(chiaveclientepb, ref chiave);
        string chiaveS = "GlobalPositionWS_GetContrattoSintesiPerCliente";
        HttpContext contesto = HttpContext.Current;
        object contratto = null;
        if (contesto != null && contesto.Session != null)
            contratto = contesto.Session[chiaveS];
        if (contratto != null)
        {
            return (DataTable)contratto;
        }
        else
        {
            #region Chiamata al metodo getCliente del WebServices Anagrafica
            string _wsurl = "";
            //_wsurl= @"http://eswvwservices.fideuram.bancafideuram.it/WSNAC_ISPB/GlobalPosition.asmx"; //Produzione
            _wsurl = "http://eswsservices01c.fideuram.bancafideuram.it/WSNAC_ISPB/GlobalPosition.asmx"; //Collaudo
            string _nomeutente = "M700001";
            string _password = "M7000010";

            //string _wsurl = ConfigurationManager.AppSettings["WSGLOBALPOSITION"].ToString();
            //string _nomeutente = ConfigurationManager.AppSettings["NOMEUTENTENAC"].ToString();
            //string _password = ConfigurationManager.AppSettings["PASSWORDNAC"].ToString();

            DataTable dtGetContrattoSintesiPerCliente;
            string _proxy = "";
            #endregion

            try
            {
                #region Chiamata al metodo getCliente del WebServices Global Position
                GlobalPosition wsglobalposition = new GlobalPosition();
                wsglobalposition.PreAuthenticate = true;
                wsglobalposition.Url = _wsurl;
                System.Net.NetworkCredential cred = new System.Net.NetworkCredential(_nomeutente, _password);
                wsglobalposition.Credentials = cred;
                if (_proxy.Trim() != "")
                    wsglobalposition.Proxy = new System.Net.WebProxy(_proxy);
                System.Net.ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(VerifyServerCertificate);
                ContrattoSintesiperClienteRes risposta = wsglobalposition.getContrattoSintesiperCliente(chiave, infoCliente);
                #endregion

                #region Creazione DataTable GetContrattoSintesiPerCliente e aggiungo una riga e la aggiungo alla tabella
                dtGetContrattoSintesiPerCliente = new DataTable("DTCONTRATTOSINTESIPERCLIENTE");
                dtGetContrattoSintesiPerCliente.Columns.Add("codiceContratto", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("numeroPolizza", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("Rubricato", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("CustodiaGaranzia", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("tipoProdotto", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("tipoProdottomapping", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("codiceInterno", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("isin", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("conto", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("codicesottoProdotto", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("codiceMAF", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("pctKey", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("pctTitoloCollegato", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("pctDescrizionteTitoloCollegato", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("quote", typeof(double));
                dtGetContrattoSintesiPerCliente.Columns.Add("prezzo", typeof(double));
                dtGetContrattoSintesiPerCliente.Columns.Add("ctv", typeof(double));
                dtGetContrattoSintesiPerCliente.Columns.Add("partvia", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("partviaal", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("datadiRiferimento", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("datadiSottoscrizione", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("dataValNavAl", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("codiceStato", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("dataInizioRendimento", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("dataTrimestreRendimento", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("rendimentoDaSottoscrizione", typeof(double));
                dtGetContrattoSintesiPerCliente.Columns.Add("rendimentoDaInizioTrimestre", typeof(double));
                dtGetContrattoSintesiPerCliente.Columns.Add("dataAnnoRendimento", typeof(String));
                dtGetContrattoSintesiPerCliente.Columns.Add("rendimentoDaInizioAnno", typeof(double));
                dtGetContrattoSintesiPerCliente.Columns.Add("valore", typeof(double));
                dtGetContrattoSintesiPerCliente.Columns.Add("CVN", typeof(double));
                DataRow row;
                if (risposta.info.errors[0].codiceErrore == 0)
                {
                    foreach (ContrattoSintesiperCliente ul in risposta.tuttiContrattiSintesi)
                    {
                        row = dtGetContrattoSintesiPerCliente.NewRow();
                        row["CODICECONTRATTO"] = ul.numeroRapporto;  //ISPB 
                        row["numeroPolizza"] = ul.numeroPolizza;
                        row["Rubricato"] = ul.Rubricato;
                        if (ul.CustodiaGaranzia != "" || ul.CustodiaGaranzia != null)
                            row["CustodiaGaranzia"] = ul.CustodiaGaranzia;
                        row["tipoProdotto"] = ul.chiaveProdottoTipo;//ISPB
                        row["codiceInterno"] = ul.chiaveProdottoProdotto; //ISPB 
                        row["conto"] = ul.Conto;
                        row["codicesottoProdotto"] = ul.chiaveProdottoSottoProdotto;//ISPB
                        row["codiceMAF"] = null;//ISPB
                        row["pctKey"] = ul.pctKey;
                        row["pctTitoloCollegato"] = ul.pctTitoloCollegato;
                        row["pctDescrizionteTitoloCollegato"] = ul.pctDescrizionteTitoloCollegato;
                        if (ul.isin != "" || ul.isin != null)
                            row["isin"] = ul.isin;
                        row["quote"] = ul.quote;
                        row["prezzo"] = ul.prezzo;
                        row["ctv"] = ul.ctv;
                        row["partvia"] = ul.partvia;
                        row["partviaal"] = ul.partvia;//ISPB 
                        row["datadiRiferimento"] = ul.datadiRiferimento;

                        //ISPB if (ul.tipoProdotto != null && ul.tipoProdotto != "" && (ul.tipoProdotto.Trim().ToUpper() == "DT" || ul.tipoProdotto.Trim().ToUpper() == "FI" || ul.tipoProdotto.Trim().ToUpper() == "GE" || ul.tipoProdotto.Trim().ToUpper() == "GES" || ul.tipoProdotto.Trim().ToUpper() == "GP"))
                        if (ul.chiaveProdottoTipo != null && ul.chiaveProdottoTipo != "" && (ul.chiaveProdottoTipo.Trim().ToUpper() == "DT" || ul.chiaveProdottoTipo.Trim().ToUpper() == "FI" || ul.chiaveProdottoTipo.Trim().ToUpper() == "GE" || ul.chiaveProdottoTipo.Trim().ToUpper() == "GES" || ul.chiaveProdottoTipo.Trim().ToUpper() == "GP"))
                        {
                            if (ul.dataInizioRendimento != null && ul.dataInizioRendimento != "")
                                row["datadiSottoscrizione"] = ul.dataInizioRendimento;
                            else
                                row["datadiSottoscrizione"] = ul.datadiRiferimento;//ISPB 
                        }
                        else
                        {
                            row["datadiSottoscrizione"] = ul.datadiRiferimento;//ISPB
                        }
                        row["dataValNavAl"] = ul.dataValNavAl;
                        row["codiceStato"] = ul.codiceStato;
                        row["dataInizioRendimento"] = ul.dataInizioRendimento;
                        row["dataTrimestreRendimento"] = ul.dataTrimestreRendimento;
                        row["rendimentoDaSottoscrizione"] = ul.rendimentoDaInizioAnno;//ISPB 
                        row["rendimentoDaInizioTrimestre"] = ul.rendimentoDaInizioTrimestre;
                        row["dataAnnoRendimento"] = ul.dataAnnoRendimento;
                        row["rendimentoDaInizioAnno"] = ul.rendimentoDaInizioAnno;
                        row["valore"] = ul.valore;
                        row["CVN"] = ul.CVN;
                        dtGetContrattoSintesiPerCliente.Rows.Add(row);
                    }
                }
                else
                {
                    if (risposta.info.errors[0].codiceErrore == 50)
                    {
                        Exception ex = new Exception();
                        ex.Data.Add("CodiceErrore", 50);
                        throw new Exception(risposta.info.errors[0].messaggioPerUtenteFinale, ex);
                    }
                    else
                        throw new Exception(risposta.info.errors[0].messaggioPerUtenteFinale);
                }
                #endregion
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + "; Web Service: GlobalPosition; Web Method: GetContrattoSintesiPerCliente", ex.InnerException);
            }
            if (contesto != null && contesto.Session != null) contesto.Session[chiaveS] = dtGetContrattoSintesiPerCliente;
            return dtGetContrattoSintesiPerCliente;
        }
    }

    private bool VerifyServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        if (sslPolicyErrors == SslPolicyErrors.None)
            return true;
        foreach (X509ChainStatus s in chain.ChainStatus)
        {
            // allows expired certificates
            if (string.Equals(s.Status.ToString(), "NotTimeValid", StringComparison.OrdinalIgnoreCase))
                return true;
        }

        return true;
    }
}