using System; using Consulenza.ReportWriter.Business; using Consulenza.ReportWriter.Business.OBJ_PDF; using System.Data; using Consulenza.ReportCommon; using Consulenza.ReportWriter.Business.CHART_PDF; using Consulenza.ReportWriter.Business.Entity; using System.Collections.Generic; using System.Linq; using Consulenza.DataServices.fideuram.data.service; namespace Consulenza.ReportWriter.Manager.Section.Unica { /// /// S48.RischioMercatoMacroAssetClass idSezione = 91 /// public class S48 : Entity.Section { ColorPDF coloreSeriePortafoglio = new ColorPDF(255,165,0); ColorPDF coloreSerieMonetario = new ColorPDF(172,207,101); ColorPDF coloreSerieObbligazionario = new ColorPDF(32, 114, 156); ColorPDF coloreSerieAzionario = new ColorPDF(208, 66, 66); public S48(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { Draw(); } catch (Exception ex) { SectionLogger.Write("S48", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } protected override sealed void Draw() { var dati = GetDataTable(); #region Grafico Combination var graficoCombination = new CombinationPDF(EnvironmentFacade.RendererFacade.XLeftLimit + 56, 1F) { Height = 200, Width = 400, MarginAxisY = 0, LabelFormatAxisY = FormatType.Decimale0, ShowLabelAxisY = true, //IntervalNumberAxisY = 7, LabelFormatAxisX = FormatType.DataShort, ShowLineAxisX = true, ShowLabelAxisX = true, IntervalNumberAxisX = 6, RemoveWhiteSpacesY = true, EqualDateLabelDistanceAxisX = true, AxisYMinimumValueOffset = 0, CalculateCustomIntegerLabelsAxisY = true }; #region Serie // Creo le Serie var serieCombination = new List() { new Serie { Name = "Portafoglio", Type = Dundas.Charting.WebControl.SeriesChartType.Line, BorderWidth = 6 }, new Serie { Name = "Monetario", Type = Dundas.Charting.WebControl.SeriesChartType.Line, BorderWidth = 12 }, new Serie { Name = "Obbligazionario", Type = Dundas.Charting.WebControl.SeriesChartType.Line, BorderWidth = 6}, new Serie { Name = "Azionario", Type = Dundas.Charting.WebControl.SeriesChartType.Line, BorderWidth = 6} }; //Valorizzo le Serie EnumerableRowCollection datiSerie; #region Serie Portafoglio datiSerie = dati.AsEnumerable().Where(o => o.Field("Riferimento").Equals("PTF")); foreach (DataRow item in datiSerie) { serieCombination[0].Points.Add(new Point { Color = coloreSeriePortafoglio, Values = new ValuesPointXY(Convert.ToDateTime(item["Data"]).ToOADate(), Convert.ToDouble(item["VaR"])), ShowLabelAxisY = false, LabelAxisY = "Portafoglio", FontSizeLabelAxisY = 8, FontBoldLabelAxisY = false, ShowLabelAxisX = false }); } #endregion #region Serie MercatoMonetario datiSerie = dati.AsEnumerable().Where(o => o.Field("Riferimento").Equals("MN")); foreach (DataRow item in datiSerie) { serieCombination[1].Points.Add(new Point { Color = coloreSerieMonetario, Values = new ValuesPointXY(Convert.ToDateTime(item["Data"]).ToOADate(), Convert.ToDouble(item["VaR"])), ShowLabelAxisY = false, LabelAxisY = "MercatoMonetario", FontSizeLabelAxisY = 8, FontBoldLabelAxisY = false, ShowLabelAxisX = false }); } #endregion #region Serie MercatoObbligazionario datiSerie = dati.AsEnumerable().Where(o => o.Field("Riferimento").Equals("OB")); foreach (DataRow item in datiSerie) { serieCombination[2].Points.Add(new Point { Color = coloreSerieObbligazionario, Values = new ValuesPointXY(Convert.ToDateTime(item["Data"]).ToOADate(), Convert.ToDouble(item["VaR"])), ShowLabelAxisY = false, LabelAxisY = "MercatoObbligazionario", FontSizeLabelAxisY = 8, FontBoldLabelAxisY = false, ShowLabelAxisX = false }); } #endregion #region Serie MercatoAzionario datiSerie = dati.AsEnumerable().Where(o => o.Field("Riferimento").Equals("AZ")); foreach (DataRow item in datiSerie) { serieCombination[3].Points.Add(new Point { Color = coloreSerieAzionario, Values = new ValuesPointXY(Convert.ToDateTime(item["Data"]).ToOADate(), Convert.ToDouble(item["VaR"])), ShowLabelAxisY = false, LabelAxisY = "MercatoAzionario", FontSizeLabelAxisY = 8, FontBoldLabelAxisY = false, ShowLabelAxisX = false }); } #endregion // aggiungo le Serie al grafico graficoCombination.SeriesCollection = serieCombination; #endregion #region Etichetta Rischio Credito AddElement(new FormattedTextAreaPDF("Rischio Mercato (VaR%)", EnvironmentFacade.RendererFacade.XLeftLimit + 14) { FontBold = true, FontSize = 7, TextVerticalDirection = true, DeltaY = 155, AutoIncrementYWritable = false }); AddElement(new SpacePDF(10)); #endregion //AddElement(new FormattedTextAreaPDF("Rischio Mercato (VaR%)", EnvironmentFacade.RendererFacade.XLeftLimit) //{ // FontBold = true, // TextVerticalDirection = true, // AutoIncrementYWritable = false, // DeltaY = 169, // DeltaX = 45 //}); AddElement(graficoCombination); AddElement(new SpacePDF(30)); // rettangolo della Legenda AddElement(new CirclePDF(9, 9, coloreSeriePortafoglio, 3) { X = graficoCombination.X-40, DeltaY = 6, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF(string.Format("Patrimonio {0}", Helper.ReplaceVariables("$/Banca/$", EnvironmentFacade.ReportEnvironment)).Replace("SIM", ""), graficoCombination.X-40 + 10 + 5, 100) {FontSize=7, DeltaY = 5, AutoIncrementYWritable = false }); AddElement(new CirclePDF(9, 9, coloreSerieMonetario, 3) { X = graficoCombination.X - 40 + 130, DeltaY = 6, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF("Mercato monetario", graficoCombination.X - 40 + 140 + 5, 100) { FontSize = 7, DeltaY = 5, AutoIncrementYWritable = false }); AddElement(new CirclePDF(9, 9, coloreSerieObbligazionario, 3) { X = graficoCombination.X - 40 + 250, DeltaY = 6, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF("Mercato obbligazionario", graficoCombination.X - 40 + 260 + 5, 120) { FontSize = 7, DeltaY = 5, AutoIncrementYWritable = false }); AddElement(new CirclePDF(9, 9, coloreSerieAzionario, 3) { X = graficoCombination.X - 40 + 390, DeltaY = 6, AutoIncrementYWritable = false }); AddElement(new FormattedTextAreaPDF("Mercato azionario", graficoCombination.X - 40 + 400 + 5, 100) { FontSize = 7, DeltaY = 5, AutoIncrementYWritable = false }); AddElement(new SpacePDF(25)); // pari all'altezza del rettangolo grigio + 5 per lasciare un piccolo margine$/Banca/$ if (datiSeiUnico.rischioUnit().rischio.mercatiFinanziariMacroAsset.flagfiduciariaPluriMandato) { AddElement(new SpacePDF(10)); string codicemandato = datiSeiUnico.getClienteReport().codiceMandato; AddElement(new FormattedTextAreaPDF(datiSeiUnico.FormatBanca("L'indicatore «Rischio Mercato (VaR)» del patrimonio $/Banca/$ visualizzato nel grafico è calcolato considerando tutti i prodotti detenuti dai mandati fiduciari associati al medesimo fiduciante a cui appartiene il mandato "+ codicemandato+"."), EnvironmentFacade.RendererFacade.XLeftLimit) { FontSize = 6, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify }); } #endregion } /// /// Recupera i dati necessari alla Section restituendo un DataTable. /// /// protected sealed override DataTable GetDataTable() { var mercatiFinanziatiMacroAsset = datiSeiUnico.rischioUnit().rischio.mercatiFinanziariMacroAsset; var returnList = new List(); var listaMercatoAzionario = new List(); var listaMercatoMonetario = new List(); var listaMercatoObbligazionario = new List(); var listaVarPtfCliente = new List(); listaMercatoAzionario = mercatiFinanziatiMacroAsset.listaMercatoAzionario.data.ToList(); listaMercatoMonetario = mercatiFinanziatiMacroAsset.listaMercatoMonetario.data.ToList(); listaMercatoObbligazionario = mercatiFinanziatiMacroAsset.listaMercatoObbligazionario.data.ToList(); if (mercatiFinanziatiMacroAsset.listaVarPtfCliente.data != null) listaVarPtfCliente = mercatiFinanziatiMacroAsset.listaVarPtfCliente.data.ToList(); foreach (var item in listaMercatoAzionario) returnList.Add(new VaRPerData { Data = item.dataRiferimento, VaR = item.var, Riferimento = "AZ" }); foreach (var item in listaMercatoMonetario) returnList.Add(new VaRPerData { Data = item.dataRiferimento, VaR = item.var, Riferimento = "MN" }); foreach (var item in listaMercatoObbligazionario) returnList.Add(new VaRPerData { Data = item.dataRiferimento, VaR = item.var, Riferimento = "OB" }); foreach (var item in listaVarPtfCliente) returnList.Add(new VaRPerData { Data = item.dataRiferimento, VaR = item.var, Riferimento = "PTF" }); var dtMercati = new DataTable(); dtMercati.Columns.Add(new DataColumn("Riferimento", typeof(string))); dtMercati.Columns.Add(new DataColumn("Data", typeof(DateTime))); dtMercati.Columns.Add(new DataColumn("VaR", typeof(decimal))); //coloreSeriePortafoglio = new ColorPDF(ptf.fill.); foreach (var item in returnList) { dtMercati.Rows.Add(item.Riferimento, item.Data, item.VaR); } return dtMercati; } /// /// Recupera i dati necessari alla Section restituendo un DataSet. /// /// protected sealed override DataSet GetDataSet() { return null; } /// /// Struttura /// private struct VaRPerData { public DateTime Data { get; set; } public decimal VaR { get; set; } public string Riferimento { get; set; } } } }