145 lines
6.5 KiB
C#
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];
|
|
|
|
// }
|
|
//}
|
|
} |