TP_SEI_Project/root/Shared/PrometeiaMessage/PosizioneClienteWS.cs
2025-04-15 12:10:19 +02:00

145 lines
6.5 KiB
C#

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];
// }
//}
}