using System; using System.Data; using System.Configuration; using System.Web; using System.Security.Cryptography.X509Certificates; using System.Net.Security; using PrometeiaMessage.bancafideuram.nac.posizionecliente; using PrometeiaMessage; public partial class PosizioneClienteWS { public DataTable GetDettaglioAssicurativi(ChiaveCliente chiave, string codiceContratto, string codiceInterno, DettaglioOperazione[] dettaglioOperazioni, InfoClient infoCliente, int chiaveclientepb) { ////Rattą gestione fiduciarie //this.setCodiceFiscaleMandatoFiduciarie(ref chiave); GestioneCliente.ImpostaCodiceFiscaleMandato(chiaveclientepb, ref chiave); string chiaveS = "PosizioneClienteWS_GetDettaglioAssicurativi" + codiceContratto + "_" + codiceInterno; HttpContext contesto = HttpContext.Current; object dettaglioAssicurativi = null; if (contesto != null && contesto.Session != null) dettaglioAssicurativi = contesto.Session[chiaveS]; if (dettaglioAssicurativi != null) { return (DataTable)dettaglioAssicurativi; } else { #region Chiamata al metodo getDettaglioAssicurativi del WebServices PosizioneCliente string _wsurl = ConfigurationManager.AppSettings["WSPOSIZIONECLIENTE"].ToString(); string _nomeutente = ConfigurationManager.AppSettings["NOMEUTENTENAC"].ToString(); string _password = ConfigurationManager.AppSettings["PASSWORDNAC"].ToString(); DataTable dtGetDettaglioAssicurativi; DettaglioAssicurativiRes risposta; string _proxy; if (ConfigurationManager.AppSettings["PROXY"] != null) _proxy = ConfigurationManager.AppSettings["PROXY"].ToString(); else _proxy = ""; #endregion try { #region Chiamata al metodo getDettaglioAssicurativi del WebServices PosizioneCliente PosizioneCliente wsposizionecliente = new PosizioneCliente(); wsposizionecliente.PreAuthenticate = true; wsposizionecliente.Url = _wsurl; System.Net.NetworkCredential cred = new System.Net.NetworkCredential(_nomeutente, _password); wsposizionecliente.Credentials = cred; // Settaggio eventuale proxy if (_proxy.Trim() != "") wsposizionecliente.Proxy = new System.Net.WebProxy(_proxy); System.Net.ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(VerifyServerCertificate); risposta = wsposizionecliente.getDettaglioAssicurativi(chiave, codiceContratto, codiceInterno, dettaglioOperazioni, infoCliente); #endregion #region Creazione DataTable GetDettaglioAssicurativi e aggiungo una riga e la aggiungo alla tabella dtGetDettaglioAssicurativi = new DataTable("DTDETTAGLIOASSICURATIVI"); dtGetDettaglioAssicurativi.Columns.Add("CODICECONTRATTO", typeof(string)); dtGetDettaglioAssicurativi.Columns.Add("CODICEINTERNO", typeof(string)); dtGetDettaglioAssicurativi.Columns.Add("CODICESOTTOPRODOTTO", typeof(string)); dtGetDettaglioAssicurativi.Columns.Add("DELTA", typeof(double)); dtGetDettaglioAssicurativi.Columns.Add("IMPORTOFINALE", typeof(double)); dtGetDettaglioAssicurativi.Columns.Add("IMPORTOINIZIALE", typeof(double)); dtGetDettaglioAssicurativi.Columns.Add("ISINFITTIZIO", typeof(string)); DataRow row; if (risposta.info.Errors.Length == 0) { foreach (DettaglioAssicurativi da in risposta.dettagliAssicurativi) { row = dtGetDettaglioAssicurativi.NewRow(); row["CODICECONTRATTO"] = da.codiceContratto; row["CODICEINTERNO"] = da.codiceInterno; row["CODICESOTTOPRODOTTO"] = da.codicesottoProdotto; row["DELTA"] = Math.Round(da.delta, 2, MidpointRounding.ToEven); row["IMPORTOFINALE"] = Math.Round(da.importoFinale, 2, MidpointRounding.ToEven); row["IMPORTOINIZIALE"] = Math.Round(da.importoIniziale, 2, MidpointRounding.ToEven); row["ISINFITTIZIO"] = da.isinFittizio; dtGetDettaglioAssicurativi.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: PosizioneCliente; Web Method: GetDettaglioAssicurativi", ex.InnerException); } if (contesto != null && contesto.Session != null) contesto.Session[chiaveS] = dtGetDettaglioAssicurativi; return dtGetDettaglioAssicurativi; } } 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; } //private void setCodiceFiscaleMandatoFiduciarie(ref ChiaveCliente _chiaveCliente) //{ // if (_chiaveCliente.codiceFiscale.Contains("@")) // { // PrometeiaMessage.Fiduciarie _fiduciarie = new PrometeiaMessage.Fiduciarie(); // _fiduciarie.LoadFiduciarie(); // string[] valori = _chiaveCliente.codiceFiscale.Split('@'); // _chiaveCliente.codiceFiscale = _fiduciarie.getPIva(valori[0]); // _chiaveCliente.codiceMandato = valori[1]; // } //} }