851 lines
37 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using Consulenza.ExternalServices;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportWriter.Business.CHART_PDF;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Business.Entity;
using System.Text;
using Consulenza.ReportWriter.Business.Headers;
using System.Drawing;
using Dundas.Charting.WebControl;
namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.Monitoraggio
{
/// <summary>
/// Scheda 16
/// </summary>
public class S16 : Entity.Section
{
public bool bEstero = false;
public S16(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S16", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
/// <summary>
/// Scheda2. Patrimonio immobiliare Sintesi (distribuzione del patrimonio complessivo del cliente diviso per tipologia e cointestatari)
/// </summary>
protected override sealed void Draw()
{
AddElement(new SpacePDF(55));
// Modifica ES del 24.05.2018
// var sintesiImage = new ImagePDF(25, 0.67F, "sintesi.png");
var sintesiImage = new ImagePDF(25, 0.71F, "sintesi.jpg");
AddElement(sintesiImage);
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
var data = GetDataSet();
// INDICATORI DI DIVERSIFICAZIONE 11.05.2018
AddElement(new FormattedTextAreaPDF("Di seguito sono rappresentati il livello di rischio e la diversificazione del patrimonio immobiliare.", 30)
{
AutoIncrementYWritable = false,
Width = 800,
FontSize = 9.96f,
FontColor = new ColorPDF(91, 88, 79),
Y = 60
});
AddElement(new LinePDF()
{
AutoIncrementYWritable = false,
Width = 1.5f,
Y1 = 85,
Y2 = 85,
X1 = 35,
X2 = 750,
Color = new ColorPDF(153,149,133)
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = 120,
Height = 15,
X = 35,
Y = 98,
Color = new ColorPDF(196, 196, 186)
});
AddElement(new FormattedTextAreaPDF("Rischio valore", 40)
{
AutoIncrementYWritable = false,
Y = 99,
FontBold = true,
FontSize = 9.96f,
FontColor = new ColorPDF(255, 255, 255),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left
});
AddElement(new FormattedTextAreaPDF("Rappresentazione del rischio di deprezzamento dellimmobile in funzione dellesposizione a possibili variazioni delle condizioni di domanda.", 163)
{
AutoIncrementYWritable = false,
Y = 95,
FontSize = 9.96f,
FontColor = new ColorPDF(92, 89, 81),
Width = 260,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = 120,
Height = 15,
X = 35,
Y = 151,
Color = new ColorPDF(196, 196, 186)
});
AddElement(new FormattedTextAreaPDF("Rischio liquidabilità", 40)
{
AutoIncrementYWritable = false,
Y = 152,
FontBold = true,
FontSize = 9.96f,
FontColor = new ColorPDF(255, 255, 255),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left
});
AddElement(new FormattedTextAreaPDF("Rappresentazione del rischio legato alle difficoltà di smobilizzo dellimmobile in tempi brevi alle condizioni di mercato.", 163)
{
AutoIncrementYWritable = false,
Y = 148,
FontSize = 9.96f,
FontColor = new ColorPDF(92, 89, 81),
Width = 260,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
});
AddElement(new LinePDF()
{
AutoIncrementYWritable = false,
Width = 1.5f,
Y1 = 195,
Y2 = 195,
X1 = 35,
X2 = 750,
Color = new ColorPDF(153, 149, 133)
});
var chartData = GetChartsData(data);
List<LegendItem> legendItems = new List<LegendItem>()
{
new LegendItem() {Color = Color.FromArgb(0,109,45), Text = "Basso"},
new LegendItem() {Color = Color.FromArgb(162,216,154), Text = "Medio basso"},
new LegendItem() {Color = Color.FromArgb(242,221,68), Text = "Medio"},
new LegendItem() {Color = Color.FromArgb(233,148,33), Text = "Medio alto"},
new LegendItem() {Color = Color.FromArgb(213,38,7), Text = "Alto"}
};
DrawLegend(428, 97, 265, 65, legendItems, chartData.ClasseRischioValore, chartData.ClasseRischioLiquidabilita);
//float widthSmallRectangle = 173;
float widthSmallRectangle = 172;
float xSmallRectangle = 103;
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = 355,
Height = 255,
X = 32,
Y = 205,
Color = new ColorPDF(196, 196, 186)
});
// INDICATORI DI DIVERSIFICAZIONE 11.05.2018
AddElement(new FormattedTextAreaPDF("Diversificazione", 35)
{
AutoIncrementYWritable = false,
Y = 206,
FontBold = true,
FontSize = 9.96f,
FontColor = new ColorPDF(255, 255, 255),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = 353,
Height = 239,
X = 33,
Y = 220,
Color = new ColorPDF(255, 255, 255)
});
AddElement(new FormattedTextAreaPDF("Indicatore complessivo che prende in considerazione la diversificazione per geografia, per tipologia immobiliare e per numerosità degli immobili.", 36)
{
AutoIncrementYWritable = false,
Y = 225,
FontSize = 8f,
FontColor = new ColorPDF(92, 89, 81),
Width = 325,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left,
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = widthSmallRectangle,
Height = 65,
X = 36,
Y = 250,
// Original
//Color = new ColorPDF(239, 240, 237)
// Sfondo Bianco su Rectangle
Color = new ColorPDF(255, 255, 255),
BorderColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo,
BorderWidth = 0.2f
});
// Original
//DrawPieChart((double)chartData.ValDiversificazioneGeografia, Color.FromArgb(196, 196, 186), Color.FromArgb(239, 240, 237), xSmallRectangle, 252, 60, 35);
// Sfondo Bianco su Graph
DrawPieChart((double)chartData.ValDiversificazioneGeografia, Color.FromArgb(196, 196, 186), Color.FromArgb(255, 255, 255), xSmallRectangle, 252, 60, 35);
AddElement(new FormattedTextAreaPDF("Diversificazione per geografia", 38)
{
AutoIncrementYWritable = false,
Y = 252,
FontBold = true,
FontSize = 8.00f,
Width = 72,
FontColor = new ColorPDF(79, 92, 100),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left
});
AddElement(new FormattedTextAreaPDF(chartData.ClasseDiversificazioneGeografia, 163, 45)
{
AutoIncrementYWritable = false,
Y = 278,
FontBold = true,
FontSize = 6.96f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = widthSmallRectangle,
Height = 65,
X = 36,
Y = 320,
// Original
//Color = new ColorPDF(239, 240, 237)
// Sfondo Bianco su Rectangle
Color = new ColorPDF(255, 255, 255),
BorderColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo,
BorderWidth = 0.2f
});
// Original
//DrawPieChart((double)chartData.ValDiversificazioneTipologia, Color.FromArgb(196, 196, 186), Color.FromArgb(239, 240, 237), xSmallRectangle, 322, 60, 35);
// Sfondo Bianco su Graph
DrawPieChart((double)chartData.ValDiversificazioneTipologia, Color.FromArgb(196, 196, 186), Color.FromArgb(255, 255, 255), xSmallRectangle, 322, 60, 35);
AddElement(new FormattedTextAreaPDF("Diversificazione per tipologia", 38)
{
AutoIncrementYWritable = false,
Y = 321,
FontBold = true,
FontSize = 8.00f,
Width = 72,
FontColor = new ColorPDF(79, 92, 100),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left
});
AddElement(new FormattedTextAreaPDF(chartData.ClasseDiversificazioneTipologia, 163, 45)
{
AutoIncrementYWritable = false,
Y = 348,
FontBold = true,
FontSize = 6.96f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = widthSmallRectangle,
Height = 65,
X = 36,
Y = 390,
// Original
//Color = new ColorPDF(239, 240, 237)
// Sfondo Bianco su Rectangle
Color = new ColorPDF(255, 255, 255),
BorderColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo,
BorderWidth = 0.2f
});
// Original
//DrawPieChart((double)chartData.ValDiversificazioneNumerosita, Color.FromArgb(196, 196, 186), Color.FromArgb(239, 240, 237), xSmallRectangle, 392, 60, 35);
// Sfondo Bianco su Graph
DrawPieChart((double)chartData.ValDiversificazioneNumerosita, Color.FromArgb(196, 196, 186), Color.FromArgb(255, 255, 255), xSmallRectangle, 392, 60, 35);
AddElement(new FormattedTextAreaPDF("Diversificazione per numerosità", 38)
{
AutoIncrementYWritable = false,
Y = 392,
FontBold = true,
FontSize = 8.00f,
Width = 72,
FontColor = new ColorPDF(79, 92, 100),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left
});
AddElement(new FormattedTextAreaPDF(chartData.ClasseDiversificazioneNumerosita, 163, 45)
{
AutoIncrementYWritable = false,
Y = 417,
FontBold = true,
FontSize = 6.96f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = widthSmallRectangle-1,
Height = 205,
X = 212,
Y = 250,
// Original
//Color = new ColorPDF(239, 240, 237)
// Sfondo Bianco su Rectangle
Color = new ColorPDF(255, 255, 255),
BorderColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo,
BorderWidth = 0.2f
});
AddElement(new FormattedTextAreaPDF("Diversificazione<br>complessiva", 257)
{
AutoIncrementYWritable = false,
Y = 270,
FontBold = true,
FontSize = 9.04f,
Width = 85,
FontColor = new ColorPDF(79, 92, 100),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
// Original
//DrawPieChart((double)chartData.ValDiversificazioneComplessiva, Color.FromArgb(196, 196, 186), Color.FromArgb(239, 240, 237), 235, 300, 120, 30);
DrawPieChart((double)chartData.ValDiversificazioneComplessiva, Color.FromArgb(196, 196, 186), Color.FromArgb(255, 255, 255), 235, 300, 120, 30);
AddElement(new FormattedTextAreaPDF(chartData.ClasseDiversificazioneComplessiva, 212)
{
Width = widthSmallRectangle,
AutoIncrementYWritable = false,
Y = 427,
FontBold = true,
FontSize = 11f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = 355,
Height = 255,
X = 397,
Y = 205,
Color = new ColorPDF(196, 196, 186)
});
// INDICATORI DI DIVERSIFICAZIONE 11.05.2018
AddElement(new FormattedTextAreaPDF("Rischio complessivo e Diversificazione", 400)
{
AutoIncrementYWritable = false,
Y = 206,
FontBold = true,
FontSize = 9.96f,
FontColor = new ColorPDF(255, 255, 255),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Left
});
AddElement(new RectanglePDF()
{
AutoIncrementYWritable = false,
Width = 353,
Height = 239,
X = 398,
Y = 220,
Color = new ColorPDF(255, 255, 255)
});
DrawChart(chartData, 410, 230, 325, 165);
AddElement(new FormattedTextAreaPDF("Diversificazione", 410)
{
AutoIncrementYWritable = false,
Y = 360,
FontBold = false,
FontSize = 8f,
FontColor = new ColorPDF(0, 0, 0),
TextVerticalDirection = true
});
AddElement(new FormattedTextAreaPDF("Controvalore del portafoglio immobiliare €/mln", 510)
{
AutoIncrementYWritable = false,
Y = 400,
FontBold = false,
FontSize = 8f,
FontColor = new ColorPDF(0, 0, 0),
});
AddElement(new ImagePDF(447, 0.45f, "dotted_blue_line.png")
{
Y = 420
});
AddElement(new FormattedTextAreaPDF("Livello di massima diversificazione", 435)
{
AutoIncrementYWritable = false,
Y = 428,
Width = 60,
FontBold = false,
FontSize = 6f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
AddElement(new ImagePDF(505, 0.45f, "colored_bar.png")
{
Y = 435
});
AddElement(new FormattedTextAreaPDF("Area di<br/>ECCESSIVA CONCENTRAZIONE", 505)
{
AutoIncrementYWritable = false,
Y = 423,
Width = 75,
FontBold = false,
FontSize = 4.56f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
AddElement(new FormattedTextAreaPDF("Area di<br/>EQUILIBRIO", 575)
{
AutoIncrementYWritable = false,
Y = 423,
Width = 75,
FontBold = false,
FontSize = 4.56f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
AddElement(new FormattedTextAreaPDF("Area di<br/>OTTIMALE CONCENTRAZIONE", 643)
{
AutoIncrementYWritable = false,
Y = 423,
Width = 75,
FontBold = false,
FontSize = 4.56f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
if (bEstero == true)
AddElement(new FormattedTextAreaPDF("NB: il grafico non tiene conto del controvalore degli immobili ubicati all'Estero.", 400)
{
AutoIncrementYWritable = false,
Y = 450,
Width = 200,
FontBold = false,
FontSize = 4.56f,
FontColor = new ColorPDF(0, 0, 0),
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center
});
}
private void DrawPieChartTipologia(ChartRecord chartData)
{
CustomChartPDF pieChart = new CustomChartPDF();
var baseChart = pieChart.ChartBase;
baseChart.ChartAreas.Add("Default");
baseChart.Width = new System.Web.UI.WebControls.Unit(200);
baseChart.Height = new System.Web.UI.WebControls.Unit(200);
baseChart.ChartAreas["Default"].Area3DStyle.Enable3D = false;
baseChart.PaletteCustomColors = new Color[] { Color.White, Color.Red, Color.White, Color.Green };
var serie = baseChart.Series.Add("SerieName");
serie.Type = Dundas.Charting.WebControl.SeriesChartType.Pie;
serie.Points.AddXY(1, 1);
serie.Points.AddXY(1, 69);
serie.Points.AddXY(1, 1);
serie.Points.AddXY(1, 29);
AddElement(pieChart);
}
private void DrawPieChart(double value, Color colorRest, Color backgroundColor, double posX, double posY, double size, int widthPercentage)
{
CustomChartPDF pieChart = new CustomChartPDF()
{
X = (float)posX,
Y = (float)posY
};
var baseChart = pieChart.ChartBase;
baseChart.ChartAreas.Add("Default");
baseChart.Legends[0].Enabled = false;
baseChart.ChartAreas[0].BackColor = backgroundColor;
baseChart.BackColor = backgroundColor;
baseChart.Width = new System.Web.UI.WebControls.Unit(size);
baseChart.Height = new System.Web.UI.WebControls.Unit(size);
baseChart.ChartAreas["Default"].Area3DStyle.Enable3D = false;
var colorValue = GetColor(value);
baseChart.PaletteCustomColors = new Color[] { colorValue, backgroundColor, colorRest, backgroundColor };
var serie = baseChart.Series.Add("SerieName");
serie.Type = Dundas.Charting.WebControl.SeriesChartType.Doughnut;
serie["DoughnutRadius"] = "30";
serie["PieStartAngle"] = "270";
serie.Points.AddXY(1, value - 0.01d);
serie.Points.AddXY(1, 0.005d);
serie.Points.AddXY(1, 1 - value);
serie.Points.AddXY(1, 0.005d);
var image = pieChart.GetImage();
Graphics g = Graphics.FromImage(image);
SolidBrush brush = new SolidBrush(backgroundColor);
int width = image.Width * (100 - widthPercentage) / 100;
int height = image.Height * (100 - widthPercentage) / 100;
int x = (image.Width - width) / 2;
int y = (image.Height - height) / 2;
g.DrawEllipse(new Pen(Color.White), new Rectangle(x, y, width, height));
g.FillEllipse(brush, new Rectangle(x, y, width, height));
g.Save();
g.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height));
pieChart.SetCustomImage(image);
//image.RotateFlip(RotateFlipType.Rotate270FlipNone);
AddElement(pieChart);
}
private void DrawChart(ChartRecord chartData, int x, int y, double width, double height)
{
var dir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
.Replace("bin", "Images");
var path = string.Format("{0}\\{1}", dir, "s16_chart_background-cropped2.png");
var customChart = new CustomChartPDF()
{
X = x,
Y = y
};
var baseChart = customChart.ChartBase;
baseChart.Width = new System.Web.UI.WebControls.Unit(width);
baseChart.Height = new System.Web.UI.WebControls.Unit(height);
baseChart.ChartAreas.Add("Default");
baseChart.ChartAreas["Default"].Area3DStyle.Enable3D = false;
baseChart.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
baseChart.ChartAreas[0].AxisY.MajorGrid.Enabled = false;
baseChart.ChartAreas[0].AxisX.LabelsAutoFit = true;
baseChart.ChartAreas[0].AxisX.LabelsAutoFitStyle = LabelsAutoFitStyle.WordWrap;
baseChart.ChartAreas[0].AxisY.LabelStyle.Font = new Font("Verdana", 6);
baseChart.ChartAreas[0].AxisX.LabelStyle.Font = new Font("Verdana", 6);
baseChart.ChartAreas[0].AxisX.MajorTickMark.Enabled = true;
baseChart.ChartAreas[0].AxisX.MinorTickMark.Enabled = false;
baseChart.ChartAreas[0].BackImage = path;
baseChart.ChartAreas[0].BackImageMode = ChartImageWrapMode.Scaled;
baseChart.Legends[0].Enabled = false;
var singleAxisXLabelWidth = width / 7;
baseChart.ChartAreas[0].AxisX.LabelStyle.Enabled = true;
baseChart.ChartAreas[0].AxisX.Minimum = 0;
baseChart.ChartAreas[0].AxisX.Maximum = 6;
baseChart.ChartAreas[0].AxisX.Interval = 1;
baseChart.ChartAreas[0].AxisX.CustomLabels.Add(-0.5d, 0.5d, "0€");
for (int i = 1; i <= 5; i++)
{
//baseChart.ChartAreas[0].AxisX.CustomLabels.Add(i * singleAxisXLabelWidth - singleAxisXLabelWidth / 2, i * singleAxisXLabelWidth + singleAxisXLabelWidth / 2, i.ToString());
baseChart.ChartAreas[0].AxisX.CustomLabels.Add(i - 0.5d, i + 0.5d, i.ToString());
}
baseChart.ChartAreas[0].AxisX.CustomLabels.Add(5.5d, 6.5d, "≥6");
baseChart.ChartAreas[0].AxisY.LabelStyle.Enabled = true;
baseChart.ChartAreas[0].AxisY.Minimum = 0;
baseChart.ChartAreas[0].AxisY.Maximum = 5;
baseChart.ChartAreas[0].AxisY.Interval = 1;
//baseChart.ChartAreas[0].AxisY.CustomLabels.Add(-0.5d, 0.5d, "MINIMO");
//baseChart.ChartAreas[0].AxisY.CustomLabels.Add(0.5d, 1.5d, "MODERATO");
//baseChart.ChartAreas[0].AxisY.CustomLabels.Add(1.5d, 2.5d, "MEDIO");
//baseChart.ChartAreas[0].AxisY.CustomLabels.Add(2.5d, 3.5d, "ELEVATO");
//baseChart.ChartAreas[0].AxisY.CustomLabels.Add(3.5d, 4.5d, "MASSIMO");
baseChart.ChartAreas[0].AxisY.CustomLabels.Add(0d, 1d, "MINIMO");
baseChart.ChartAreas[0].AxisY.CustomLabels.Add(1d, 2d, "MODERATO");
baseChart.ChartAreas[0].AxisY.CustomLabels.Add(2d, 3d, "MEDIO");
baseChart.ChartAreas[0].AxisY.CustomLabels.Add(3d, 4d, "ELEVATO");
baseChart.ChartAreas[0].AxisY.CustomLabels.Add(4d, 5d, "MASSIMO");
var xx = chartData.CtvPortafoglioImmobiliare / 1000000 + 0.01m;
var yy = chartData.ValDiversificazioneComplessiva * 5;
if (xx > 6) xx = 6;
if (yy > 5) yy = 5;
if (yy < 0) yy = 0;
if (xx < 0) xx = 0;
var serie = baseChart.Series.Add("serie");
serie.Type = Dundas.Charting.WebControl.SeriesChartType.Area;
serie.Color = Color.Black;
serie.MarkerStyle = MarkerStyle.Diamond;
serie.MarkerSize = 25;
serie.Font = new Font("Verdana", 6);
serie.ShowInLegend = false;
serie.Points.AddXY(xx, yy);
//xx = 0.115m;
//yy = chartData.ValDiversificazioneComplessiva * 5;
//if (xx > 6) xx = 6;
//if (yy > 5) yy = 5;
//if (yy < 0) yy = 0;
//if (xx < 0) xx = 0;
//var serieHorizontalTriangle = baseChart.Series.Add("serieHorizontalTriangle");
//serieHorizontalTriangle.Type = Dundas.Charting.WebControl.SeriesChartType.Area;
//serieHorizontalTriangle.Color = Color.Black;
//serieHorizontalTriangle.MarkerImage = string.Format("{0}\\{1}", dir, "triangle_marker_horizontal.png");
//serieHorizontalTriangle.MarkerSize = 35;
//serieHorizontalTriangle.Font = new Font("Verdana", 6);
//serieHorizontalTriangle.ShowInLegend = false;
//serieHorizontalTriangle.Points.AddXY(xx, yy);
//xx = chartData.CtvPortafoglioImmobiliare / 1000000 + 0.01m;
//yy = 0.115m;
//if (xx > 6) xx = 6;
//if (yy > 5) yy = 5;
//if (yy < 0) yy = 0;
//if (xx < 0) xx = 0;
//var serieVerticalTriangle = baseChart.Series.Add("serieVerticalTriangle");
//serieVerticalTriangle.Type = Dundas.Charting.WebControl.SeriesChartType.Area;
//serieVerticalTriangle.Color = Color.Black;
//serieVerticalTriangle.MarkerImage = string.Format("{0}\\{1}", dir, "triangle_marker_vertical.png");
//serieVerticalTriangle.MarkerSize = 35;
//serieVerticalTriangle.Font = new Font("Verdana", 6);
//serieVerticalTriangle.ShowInLegend = false;
//serieVerticalTriangle.Points.AddXY(xx, yy);
AddElement(customChart);
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataTable.
/// </summary>
/// <returns></returns>
///
private Color GetColor(double value)
{
value = value * 100;
if (value >= 80)
return Color.FromArgb(0, 109, 45);//(117, 255, 0);
if (value >= 60)
return Color.FromArgb(162, 216, 154);//(202, 255, 0);
if (value >= 40)
return Color.FromArgb(242, 221, 68);//(255, 234, 0);
if (value >= 20)
return Color.FromArgb(233, 148, 33);//(255, 121, 0);
else
return Color.FromArgb(213, 38, 7);//(255, 5, 0);
}
protected override DataTable GetDataTable()
{
return null;
}
/// <summary>
/// Recupera i dati necessari alla Section restituendo un DataSet.
/// </summary>
/// <returns></returns>
protected override DataSet GetDataSet()
{
// COMMENTATA PER TEST BATCH IMMOBILIARE
var parametri = new List<Parametro>
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "ChiaveClientePB",
Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
}
};
var dt = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S28_MapStratImmEstero", parametri);
if (dt.Tables[0].Rows.Count > 0)
bEstero = true;
//bEstero = false;
// FINE COMMENTO
parametri = new List<Parametro>
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int32,
ParameterName = "chiaveClientePB",
Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int32,
ParameterName = "chiaveNucleo",
Value = (long) 0,
}
};
return DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S_AnalisiRischioSintesi", parametri);
}
private ChartRecord GetChartsData(DataSet dataSet)
{
DataRow row = dataSet.Tables[0].Rows[0];
ChartRecord result = new ChartRecord();
result.ClasseDiversificazioneComplessiva = (row["classeDiversificazioneComplessiva"] != DBNull.Value ? (string)row["classeDiversificazioneComplessiva"] : "n.c.") ;
result.ClasseDiversificazioneGeografia = (row["classeDiversificazioneGeografia"] != DBNull.Value ? (string)row["classeDiversificazioneGeografia"] : "n.c.");
result.ClasseDiversificazioneNumerosita =(row["classeDiversificazioneNumerosita"] != DBNull.Value ? (string)row["classeDiversificazioneNumerosita"] : "n.c.");
result.ClasseDiversificazioneTipologia = (row["classeDiversificazioneTipologia"] != DBNull.Value ? (string)row["classeDiversificazioneTipologia"] : "n.c.");
result.ClasseRischioLiquidabilita = (row["classeRischioLiquidabilita"] != DBNull.Value ? (string)row["classeRischioLiquidabilita"] : "n.c.");
result.ClasseRischioValore =(row["classeRischioValore"] != DBNull.Value ? (string)row["classeRischioValore"] : "n.c.");
result.ValDiversificazioneComplessiva = (row["valDiversificazioneComplessiva"] != DBNull.Value ? (decimal)row["valDiversificazioneComplessiva"] : 0);
result.ValDiversificazioneGeografia = (row["valDiversificazioneGeografia"] != DBNull.Value ? (decimal)row["valDiversificazioneGeografia"] : 0);
result.ValDiversificazioneNumerosita = (row["valDiversificazioneNumerosita"] != DBNull.Value ? (decimal)row["valDiversificazioneNumerosita"] : 0);
result.ValDiversificazioneTipologia = (row["valDiversificazioneTipologia"] != DBNull.Value ? (decimal)row["valDiversificazioneTipologia"] : 0);
result.CtvPortafoglioImmobiliare = (row["ctvPortafoglioImmobiliare"] != DBNull.Value ? (decimal)row["ctvPortafoglioImmobiliare"] : 0);
/***** ORIGINALE - Pino ***************/
//DataRow row = dataSet.Tables[0].Rows[0];
//ChartRecord result = new ChartRecord();
//result.ClasseDiversificazioneComplessiva = (string)row["classeDiversificazioneComplessiva"];
//result.ClasseDiversificazioneGeografia = (string)row["classeDiversificazioneGeografia"];
//result.ClasseDiversificazioneNumerosita = (string)row["classeDiversificazioneNumerosita"];
//result.ClasseDiversificazioneTipologia = (string)row["classeDiversificazioneTipologia"];
//result.ClasseRischioLiquidabilita = (string)row["classeRischioLiquidabilita"];
//result.ClasseRischioValore = (string)row["classeRischioValore"];
//result.ValDiversificazioneComplessiva = (decimal)row["valDiversificazioneComplessiva"];
//result.ValDiversificazioneGeografia = (decimal)row["valDiversificazioneGeografia"];
//result.ValDiversificazioneNumerosita = (decimal)row["valDiversificazioneNumerosita"];
//result.ValDiversificazioneTipologia = (decimal)row["valDiversificazioneTipologia"];
//result.CtvPortafoglioImmobiliare = (decimal)row["ctvPortafoglioImmobiliare"];
/************************************/
return result;
}
private class ChartRecord
{
public string ClasseDiversificazioneComplessiva { get; set; }
public string ClasseDiversificazioneGeografia { get; set; }
public string ClasseDiversificazioneNumerosita { get; set; }
public string ClasseDiversificazioneTipologia { get; set; }
public string ClasseRischioLiquidabilita { get; set; }
public string ClasseRischioValore { get; set; }
public decimal ValDiversificazioneComplessiva { get; set; }
public decimal ValDiversificazioneGeografia { get; set; }
public decimal ValDiversificazioneNumerosita { get; set; }
public decimal ValDiversificazioneTipologia { get; set; }
public decimal CtvPortafoglioImmobiliare { get; set; }
}
private void DrawLegend(int x, int y, int width, int height, List<LegendItem> legendItems, string firstValue, string secondValue)
{
int rowsCount = 2;
int distanceXPercentage = 5;
int distanceYPercentage = 33;
float xDistance = width * distanceXPercentage / 100 / (legendItems.Count - 1);
float yDistance = height * distanceYPercentage / 100 / (rowsCount - 1);
float itemWidth = width * (100 - distanceXPercentage) / 100 / (legendItems.Count - 1);
float itemHeight = height * (100 - distanceYPercentage) / 100 / rowsCount;
float positionX = x;
float positionY = y;
for (int i = 0; i < rowsCount; i++)
{
positionX = x;
for (int j = 0; j < legendItems.Count; j++)
{
var legendItem = legendItems[j];
var rectangle = new RectanglePDF()
{
X = positionX,
Y = positionY,
Height = itemHeight,
Width = itemWidth,
Color = new ColorPDF(legendItem.Color),
AutoIncrementYWritable = false,
BorderColor = new ColorPDF(196, 196, 186),
BorderWidth = 1.5f
};
var text = new FormattedTextAreaPDF()
{
X = positionX,
Y = positionY,
FixedHeight = itemHeight,
Width = itemWidth,
Text = legendItem.Text,
AutoIncrementYWritable = false,
TextVerticalAlign = ceTe.DynamicPDF.VAlign.Center,
TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Center,
FontBold = true,
FontColor = new ColorPDF(Color.White)
};
AddElement(rectangle);
AddElement(text);
if ((legendItem.Text.ToLower() == firstValue.ToLower().Replace("_", " ") && i == 0)||
(legendItem.Text.ToLower() == secondValue.ToLower().Replace("_", " ") && i == 1))
{
#region triangle
var imagePositionX = positionX;
var imagePositionY = positionY;
var image = new ImagePDF(positionX, 1, "triangle_marker_vertical.png")
{
Y = positionY + rectangle.Height,
X = positionX + (rectangle.Width / 2) - 5,
Width = 10,
Height = 10
};
AddElement(image);
#endregion
}
positionX += itemWidth;
if (j != legendItems.Count - 1)
{
positionX += xDistance;
}
}
positionY += itemHeight+10;
if (i != rowsCount - 1)
{
positionY += yDistance;
}
}
}
private class LegendItem
{
public Color Color { get; set; }
public string Text { get; set; }
}
}
}