using Consulenza.DataServices.fideuram.data.service; using System.Configuration; using System; using System.Data; using System.Collections.Generic; namespace Consulenza.DataServices { /// /// Classe astratta da cui erediteranno tutte le classi di Consulenza.DataServices. /// Contiene tutti gli oggetti necessari per la chiamata al servizio dati (fideuram.data.service). /// public abstract class FideuramData { private ReportManagerService _dataservice; private const string ClassName = "FideuramData"; /// /// Recupera il servizio attraverso cui recuperare i dati. /// public ReportManagerService DataService { get { return _dataservice ?? (_dataservice = GetDataService()); } } /// /// Recupera il servizio dati. /// /// private static ReportManagerService GetDataService() { return new ReportManagerService { Url = ConfigurationManager.AppSettings["UrlFideuramDati"], UseDefaultCredentials = true, Timeout = Convert.ToInt32(ConfigurationManager.AppSettings["TimeoutFideuramDati"]) * 1000 }; } private uidConsulenza _userIdConsulenza; /// /// La chiave con cui accedere al servizio dati. /// public uidConsulenza UserIdConsulenza { get { return _userIdConsulenza ?? (_userIdConsulenza = GetUserIdConsulenza()); } } /// /// Recupera la UserIdConsulenza. La chiave con cui accedere al servizio dati. /// /// private uidConsulenza GetUserIdConsulenza() { var keyForCache = GetKeyForCache(ClassName, "GetUserIdConsulenza"); uidConsulenza uidConsulenza; //if (CacheStore.Exists(keyForCache)) //{ // // Rileggo dalla cache // uidConsulenza = CacheStore.Get(keyForCache); //} //else //{ DataTable dtCliente; try { dtCliente = DataAccess.ExecuteDataTableStoredProcedure( DBProvider.SqlServerConsulenzaUnica, "REP_INFOCLIENTEPB", new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "chiaveClientePb", Value = ChiaveClientePb }}); if (dtCliente.Rows.Count <= 0) throw new Exception("Consulenza.DataServices.GetUserIdConsulenza: Cliente non trovato"); } catch (Exception ex) { throw new Exception("Consulenza.DataServices.GetUserIdConsulenza:" + ex.Message); } uidConsulenza = new uidConsulenza { codiceAgente = dtCliente.Rows[0]["CodAge"].ToString().ToUpper(), codiceFiscale = dtCliente.Rows[0]["CodFis"].ToString().ToUpper(), codiceRete = dtCliente.Rows[0]["Rete"].ToString().ToUpper(), codiceMandato = dtCliente.Rows[0]["CodMan"].ToString().ToUpper() }; // Memorizzo in chache // CacheStore.Add(keyForCache, uidConsulenza); //} return uidConsulenza; } /// /// Imposta o recupera la ChiaveClientePb. /// public Int64 ChiaveClientePb { get; set; } /// /// Recupera la chiave di memorizzazione in cache. /// /// nome della classe /// nome del metodo /// public string GetKeyForCache(string className, string methodName) { return string.Format("{0}.{1}_{2}", className, methodName, ChiaveClientePb); } /// /// Esegue la request passata in input restituendo un oggetto di response popolato con la stessa struttura di input. /// /// oggetto request /// public rsReportManager Execute(rqData requestdata) { throw new Exception("class FideuramData Deprecated"); try { var data = DataService.reportManagerWS(new rqReportManager { chiaveClientePB = UserIdConsulenza, requestData = requestdata }); if (data.info.elencoErrori.Length > 0) throw new Exception(string.Format("Consulenza.DataServices.Execute: {0}-{1}-{2}", data.info.elencoErrori[0].tipoErrore, data.info.elencoErrori[0].codiceErrore, data.info.elencoErrori[0].messaggio)); return data; } catch (Exception ex) { throw new Exception("Consulenza.DataServices.Execute: " + ex.Message); } } } /// /// Interfaccia /// public interface IFideuramData { decimal GetTotale(TipoTotaleOutput output); //List GetListaProdotti(); rsComposizione GetDistribuzioneAssetClass(); rsComposizione GetDistribuzioneMacroAssetClass(); rsComposizione GetDistribuzioneCategoriaProdotto(); rsComposizione GetDistribuzioneMacroCategoriaProdotto(); } /// /// Enumeratore del tipo di totale in output /// public enum TipoTotaleOutput { NonSpecificato, // Totale non specificato RisorseFinanziarie, // Richiesto il totale delle sole Risorse Finanziarie Complessivo, // Richiesto il totale compessivo ContiCorrentiPositivi, // Totale dei conticorrenti positivi ContiCorrentiNegativi, // Totale dei conticorrenti negativi ContiCorrentiComplessivi, // Totale dei conticorrenti (somma tra positivi e negativi) EligoFondiNegativi, //Totale eligo fondi negativi EligoTitoliNegativi, //Totale eligo titoli negativi EligoComplessivi, // Totale delgi Eligo(linea Self) (somma tra EligoFondiNegativi e EligoTitoliNegativi) OperazioniInCorso, // Totale delle operazioni in corso (partite viaggianti) ProdottiNonRappresentabili_MacroAssetClass, //Totale dei prodotti non rappresentabili per Macro Asset Class } /// /// Enumerato della tipologia di non rappresentabilità del prodotto. /// public enum TipoNonRappresentabilitaProdotto { AssetClass, //Prodotto non rappresentabile in termini di AssetClass EsposizioneValutaria, //Prodotto non rappresentabile in termini di Esposizione Valutaria CalcoloRendimenti, // Prodotto non rappresentabile in termine di Calcolo dei Rendimenti NonCopertoRischioCredito // Prodotto non rappresentabile in termine di Rischio di Credito } }