2025-04-15 12:10:19 +02:00

270 lines
14 KiB
C#

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Text;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.BusinessLayer;
using System.Threading;
using System.Globalization;
using ContrattoSei.Utilities;
namespace PDFGenerator.Presentation.Section {
public class S18 : SProfiloDiRischio, ISezione {
bool indice = false;
bool legend = false;
DatiTabella datitab;
public S18() {
//
// TODO: Add constructor logic here
//
}
#region ISezione Members
public void writeSezione(DataThread dataThread) {
DocumentPDF document = dataThread.DocumentPDF;
datitab = new DatiTabella();
DataSetS18 set = (DataSetS18)dataThread.Data.DatiSezione;
datitab.table = set.Tables["RischioFinanziarioVarTotali"];
string sCulture = UtilityManager.getAppSetting("CultureToUse");
Thread.CurrentThread.CurrentCulture = new CultureInfo(sCulture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(sCulture);
Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ",";
//eventuali operazioni sul dataset
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
if (document.checkMargin(140)) document.addPage();
//aggiorna l'indice
if (indice) document.setSezTitolo(dataThread.SezioneReport.Titolo);
dsParam = dataThread;
//i due parametri devono essere presi da la datatable corrispondente
if (dsParam.profiloIsAct)
this.creaTabellaS18(document, (float)(int)set.RischioPatrimonioFinanziario.Rows[0]["Profilo"], datitab.table);
else
this.creaTabellaS18(document, 0.00F, datitab.table);
FormatNum conv = new FormatNum();
if (set.Tables["GradoCopertura"] != null)
if (set.Tables["GradoCopertura"].Rows.Count > 0)
if (!legend && Convert.ToDecimal(set.Tables["GradoCopertura"].Rows[0]["totale"]) < 100)
document.setSezFooter("Grado di copertura: " + conv.ConvertNum(set.Tables["GradoCopertura"].Rows[0]["totale"]) + "%", 150);
document.setLastPos(160);
}
public void setIndice() {
indice = true;
}
private void creaTabellaS18(DocumentPDF document, float var1, DataTable tab) {
float yLabel = document.getLastPos() - 1;
float yDistanceHeaderLabel = 27;
float xMacroAsset = document.getMargineLeft() + 110;
float xControvalore = xMacroAsset + 110;
float xImg = document.getMargineLeft() + 143;
float xRect = xMacroAsset + 98;
float yRect = yLabel - 4;
float yImg = document.getLastPos() + 27;
//float widthRect = 26;
//float heigthRect = 16;
float widthMacroAsset = 120;
//float widthControvalore = 80;
float fontSize = 9;
float heightLabel = 11;
//OpenTypeFont font;
OpenTypeFont font2 = Globals.OpenTypeFontVerdana;
FormatNum conv = new FormatNum();
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
ceTe.DynamicPDF.PageElements.Rectangle rect;
int numStep = 5 - 1;
bool _hasPortafoglioBancaFideuram = false;
bool _hasPortafoglioAltriIstituti = false;
this.creaTabella(document, var1);
if (legend) {
float varComplessivo = -1;
float varTerzi = -1;
float varBancaFideuram = -1;
string varTerziString = "VaR ";
string varBancaFideuramString = "VaR ";
string varComplessivoString = "VaR ";
foreach (DataRow myRow in tab.Rows)
{
switch (myRow["Descrizione"].ToString())
{
//FC 26062015 Aggionamento nuova Ragione Sociale
case "Portafoglio Fideuram":
//Marker DX1
if ((myRow["Var"] == System.DBNull.Value) || (Convert.ToSingle(myRow["Var"]) == 0.0))
{
varBancaFideuramString += myRow["VarString"].ToString();
}
else
{
varBancaFideuram = (Convert.ToSingle(myRow["Var"]));
varBancaFideuramString += conv.ConvertNum(varBancaFideuram) + "%";
}
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 155, yImg + ((numStep - MarkPosition(varBancaFideuram)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 0, 0));
rect.Angle = 45;
page.Elements.Add(rect);
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(varBancaFideuram)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 255, 255));
rect.Angle = 45;
page.Elements.Add(rect);
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 165, yImg + ((numStep - MarkPosition(varBancaFideuram)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(0, 0, 0));
rect.Angle = 45;
page.Elements.Add(rect);
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(varBancaFideuramString, xImg + 173, yImg - 5 + ((numStep - MarkPosition(varBancaFideuram)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize));
_hasPortafoglioBancaFideuram = true;
break;
case "Portafoglio Altri Istituti":
//Marker 2
if ((myRow["Var"] == System.DBNull.Value) || (Convert.ToSingle(myRow["Var"]) == 0.0))
{
varTerziString += myRow["VarString"].ToString();
//V
if (Convert.ToSingle(myRow["Var"]) == 0.0)
{
varTerzi = Convert.ToSingle(myRow["Var"]);
varTerziString += "0,00%";
}
//
}
else
{
varTerzi = Convert.ToSingle(myRow["Var"]);
varTerziString += conv.ConvertNum(varTerzi) + "%";
}
if (varBancaFideuram != -1 && MarkPosition(varBancaFideuram) == MarkPosition(varTerzi))
xImg += 70;
else {
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 155, yImg + ((numStep - MarkPosition(varTerzi)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 0, 0));
rect.Angle = 45;
page.Elements.Add(rect);
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(varTerzi)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 255, 255));
rect.Angle = 45;
page.Elements.Add(rect);
}
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(varTerzi)) * yDistanceHeaderLabel), 10, 10, 0, new RgbColor(0, 0, 0));
rect.CornerRadius = 5;
page.Elements.Add(rect);
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(varTerziString, xImg + 173, yImg - 5 + ((numStep - MarkPosition(varTerzi)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize));
_hasPortafoglioAltriIstituti = true;
break;
case "Portafoglio Complessivo":
if (_hasPortafoglioBancaFideuram && _hasPortafoglioAltriIstituti) // stampo il var complessivo solo in presenza sia di Patrimonio Banca Fideuram che di Patrimonio Terzi
{
//Marker 3
if ((myRow["Var"] == System.DBNull.Value) || (Convert.ToSingle(myRow["Var"]) == 0.0))
{
varComplessivoString += myRow["VarString"].ToString();
}
else
{
varComplessivo = Convert.ToSingle(myRow["Var"]);
varComplessivoString += conv.ConvertNum(varComplessivo) + "%";
}
if (varTerzi != -1 && MarkPosition(varTerzi) == MarkPosition(varComplessivo))
xImg += 70;
else
if (varBancaFideuram != -1 && MarkPosition(varBancaFideuram) == MarkPosition(varComplessivo))
xImg += 70;
else
{
// xImg = document.getMargineLeft() + 163; DDD
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 155, yImg + ((numStep - MarkPosition(varComplessivo)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 0, 0));
rect.Angle = 45;
page.Elements.Add(rect);
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(varComplessivo)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 255, 255));
rect.Angle = 45;
page.Elements.Add(rect);
}
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 161, yImg + 1 + ((numStep - MarkPosition(varComplessivo)) * yDistanceHeaderLabel), 8, 8, 0, new RgbColor(0, 0, 0));
//rect.CornerRadius = 5;
page.Elements.Add(rect);
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(varComplessivoString, xImg + 173, yImg - 5 + ((numStep - MarkPosition(varComplessivo)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize));
}
break;
default:
break;
}
}
}
else {
////Marker DX1
if (tab.Rows.Count != 0)
{
float var2 = -1;
//FC 26062015 Aggionamento nuova Ragione Sociale
String var2String = "Portafoglio Fideuram VaR ";
if ((tab.Rows[0]["Var"] == System.DBNull.Value) || ((float)tab.Rows[0]["Var"] == 0.0))
{
var2String += tab.Rows[0]["VarString"].ToString();
}
else
{
var2 = (float)tab.Rows[0]["Var"];
var2String += conv.ConvertNum(var2) + "%";
}
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 155, yImg + ((numStep - MarkPosition(var2)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 0, 0));
rect.Angle = 45;
page.Elements.Add(rect);
rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(var2)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 255, 255));
rect.Angle = 45;
page.Elements.Add(rect);
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 165, yImg - 5 + ((6 - MarkPosition(var2)) * yDistanceHeaderLabel), widthMacroAsset + 65, yDistanceHeaderLabel, 0, new RgbColor(232, 236, 237)));
//rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 165, yImg - 5 + ((6 - MarkPosition(var2)) * yDistanceHeaderLabel), yDistanceHeaderLabel / 1.414F, yDistanceHeaderLabel / 1.414F, 0, new RgbColor(232, 236, 237));
//rect.Angle = 45;
//page.Elements.Add(rect);
if (dsParam.Rete == "F")
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(var2String, xImg + 170, yImg - 5 + ((numStep - MarkPosition(var2)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize));
else
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(var2String, xImg + 170, yImg - 5 + ((numStep - MarkPosition(var2)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize));
}
}
}
#endregion
public void setLegend() {
legend = true;
}
}
}