851 lines
37 KiB
C#
851 lines
37 KiB
C#
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 dell’immobile in funzione dell’esposizione 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 dell’immobile 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; }
|
||
}
|
||
}
|
||
}
|