using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Text;
using PDFGenerator.BusinessLayer;
using PDFGenerator.Presentation.Section.Tables;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Xml.Linq;
using PDFGenerator.BusinessLayer.DataSection;
using System.Drawing;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
using System.Drawing.Imaging;
using System.Windows.Forms;
using Dundas.Charting.WebControl;
using System.Web.UI;
using System.Runtime.CompilerServices;
namespace PDFGenerator.Presentation.Section
{
public class S187 : ISezione
{
private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
string ambiente = CACHE.AMBIENTE;
int circle_size = CACHE.circle_size;
string Titolo = string.Empty;
string _testotitolo;
string _testointroduttivo;
string _testoAlternativo;
public string TestoIntroduttivo
{
get
{
return _testointroduttivo;
}
set
{
_testointroduttivo = value;
}
}
public void setTitolo(string label)
{
Titolo = label;
}
public string TestoTitolo
{
get
{
return _testotitolo;
}
set
{
_testotitolo = value;
}
}
public string TestoAlternativo
{
get { return _testoAlternativo; }
set { _testoAlternativo = value; }
}
public S187()
{
//
// TODO: Add constructor logic here
//
}
///
/// Analisi Portafoglio SFDR e Taxonomy
///
///
public void writeSezione(DataThread dataThread)
{
dataThread.SETDATA();
logger.Info("Inizio sezione S187 metodo writeSezione " + dataThread.CodiceFiscale);
DocumentPDF document = dataThread.DocumentPDF;
DSS187AnalisPortafoglioSFDRTaxonomy set = (DSS187AnalisPortafoglioSFDRTaxonomy)dataThread.Data.DatiSezione;
DatiTabella datitabSFRD = new DatiTabella();
DatiTabella datitabTAX = new DatiTabella();
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
float riferimentoTabella1 = 90;
float riferimentoTabella2 = 90;
int posizioneCerchio1_Y = 240;
int posizioneCerchio2_Y = 380;
DataTable SFRD = GetDati(set, "SFDR");
DataTable TAX = GetDati(set, "Taxonomy");
DataTable CERCHI = set.Tables[1];
datitabSFRD.table = SFRD;
datitabTAX.table = TAX;
if (dataThread.Rete == "W")
_testointroduttivo = _testointroduttivo.Replace("$/Banca/$", "la Società");
else
_testointroduttivo = _testointroduttivo.Replace("$/Banca/$", "la Banca");
logger.Info("Titolo della sezione " + _testointroduttivo);
document.setLastPos(-40);
//var pge = document.getCurrentPage();
//var dms = pge.Dimensions;
document.setChapterHeader(string.Concat(_testointroduttivo, "
"), 0, 520, 8);
// SEZIONE "SFDR"
document.setLastPos(2);
InsertIntestazioneTabella(document, "Analisi SFDR", document.getLastPos(), 90);
riferimentoTabella1 = WriteDati(document, datitabSFRD, document.getLastPos(), 100, 25);
//if (ambiente != "SVILUPPO") riferimentoTabella1 -= 10;
InsertTotaleTabella(document, document.getLastPos() + 43);
// SEZIONE "TAX"
document.setLastPos(2);
InsertIntestazioneTabella(document, "Analisi Taxonomy", document.getLastPos() + 20, 90);
//document.setLastPos(2);
riferimentoTabella2 = WriteDati(document, datitabTAX, document.getLastPos() + 13, 100, 25);
//if (ambiente != "SVILUPPO") riferimentoTabella2 -= 10;
InsertTotaleTabella(document, document.getLastPos() + 50);
//// controllo se eiste la tabella TEMP delle immagini
if (!System.IO.Directory.Exists(CACHE.pathGrafTemp))
{
System.IO.Directory.CreateDirectory(CACHE.pathGrafTemp);
}
// CERCHI
//string nomefileOutput = "";
bool primo = false;
int c = 0;
foreach (DataRow item in CERCHI.Rows)
{
string imageIN = item["PathImage"].ToString();
decimal Valore1 = Convert.ToDecimal(item["Valore"]);
decimal Valore2 = Convert.ToDecimal(item["ValoreDiCui"]);
FormatNum conv = new FormatNum();
conv.AggiornaValoriCerchi(ref Valore1, ref Valore2);
System.Drawing.Color colorBackground = System.Drawing.Color.FromArgb(255, 255, 255);
System.Drawing.Color colorForeControl = System.Drawing.Color.DimGray;
System.Drawing.Color colorBar1 = (System.Drawing.Color)item["ColoreValore"];
System.Drawing.Color colorBar2 = (System.Drawing.Color)item["ColoreValoreDiCui"];
var bm = CreateImage(imageIN, Valore1, 420,
primo == false ? posizioneCerchio1_Y : posizioneCerchio2_Y, 450,
Valore2, colorBackground, colorForeControl, colorBar1, colorBar2,
primo == false ? (int)riferimentoTabella1 * 3 : (int)riferimentoTabella2 * 3);
ceTe.DynamicPDF.PageElements.Image img_ = new
ceTe.DynamicPDF.PageElements.Image(bm, 450,
primo == false ? posizioneCerchio1_Y : posizioneCerchio2_Y);
img_.SetDpi(CACHE.resolution, CACHE.resolution);
img_.ID = $"S187_CIRCLE_{c}";
document.getCurrentPage().Elements.Add(img_);
var imge = (ceTe.DynamicPDF.PageElements.Image)document.getCurrentPage().Elements.GetPageElementByID(img_.ID);
float x = imge.X;
float y = imge.Y;
primo = true;
c++;
}
logger.Info("Fine sezione S187 metodo writeSezione " + dataThread.CodiceFiscale);
document.addPage();
}
DataTable GetDati(DSS187AnalisPortafoglioSFDRTaxonomy set, string tabella)
{
return set.Tables[0].AsEnumerable().Where(row => row.Field("Tabella") == tabella).CopyToDataTable();
}
Bitmap CreateImage(
string ImageIN,
decimal ValPercentuale,
long PosX,
long PosY,
long Scale,
decimal ValPercentuale2,
System.Drawing.Color Color1,
System.Drawing.Color Color2,
System.Drawing.Color Color3,
System.Drawing.Color Color4,
int Altezza)
{
//Graphics g = null;
System.Drawing.Color colorBackground = Color1; // SystemColors.Control;
System.Drawing.Color colorForeControl = Color2; // System.Drawing.Color.DimGray;
System.Drawing.Color colorBar1 = Color3;
System.Drawing.Color colorBar2 = Color4;
using (BarreCircolari _bc = new BarreCircolari(Altezza, Altezza, "", new System.Drawing.Font("Verdana", 10), colorBackground,
colorForeControl, colorBar1, colorBar2, new System.Drawing.Rectangle(0, 0, Altezza, Altezza),
(Int32)ValPercentuale, (Int32)ValPercentuale2))
{
//if (ambiente != "SVILUPPO") _bc.scaleImage = 0.90f;
_bc.pathImmagine = ImageIN;
_bc.OnPaintNew(ImageIN, "", false);
Bitmap outAnello = _bc.outImmagine;
//if (ambiente != "SVILUPPO")
//{
int w = circle_size, h = circle_size;
Bitmap nuova = new Bitmap(w, h);
System.Drawing.Image img = (System.Drawing.Image)outAnello;
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(new Point(0, 0), new Size(w, h));
using (var g1 = Graphics.FromImage(nuova))
{
g1.DrawImage(img, rect);
}
return nuova;
//}
//else
// return outAnello;
}
}
void InsertIntestazioneTabella(DocumentPDF document, string Caption, float DeltaX, float DeltaY)
{
Tabella tabellaDatiSFRD_Tax = new Tabella(document.getMargineLeft(), DeltaX, DeltaY, -2, 0.2F);
document.setLastPos(2);
DatiTabella datiTabellaInstestazione = new DatiTabella();
DataTable dtSFDR_INTESTAZIONE = new DataTable();
dtSFDR_INTESTAZIONE.Columns.Add("Caption", typeof(System.String));
dtSFDR_INTESTAZIONE.Columns.Add("Peso", typeof(System.String));
datiTabellaInstestazione.table = dtSFDR_INTESTAZIONE;
dtSFDR_INTESTAZIONE.Rows.Add(Caption, "PESO (%)");
tabellaDatiSFRD_Tax.Header = false;
tabellaDatiSFRD_Tax.Colonne.Add(new Colonna("Caption", "", 295, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaDatiSFRD_Tax.Colonne.Add(new Colonna("Peso", "", 70, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaDatiSFRD_Tax.Draw(datiTabellaInstestazione, document);
}
float WriteDati(DocumentPDF document, DatiTabella datiTab, float x, float y, Int32 rowDim)
{
Tabella tabellaDati = new Tabella(document.getMargineLeft() + 10, x, y, -2, 0.2F);
datiTab.SetRowDim(rowDim);
datiTab.setIsLinee(2);
document.setLastPos(2);
tabellaDati.Header = false;
tabellaDati.Colonne.Add(new Colonna("NomeFileCerchio", "", 10, TipoAllineamento.CENTRATO, false, 10, false, TipoColonna.IMMAGINE));
tabellaDati.Colonne.Add(new Colonna("Descrizione", "", 250, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO));
tabellaDati.Colonne.Add(new Colonna("ValMostrato", "", 90, TipoAllineamento.DESTRA, false, 9, false, TipoColonna.TESTO)); //45
tabellaDati.Draw(datiTab, document);
return tabellaDati.AltezzaTabella;
}
void InsertTotaleTabella(DocumentPDF document, float posizione)
{
Tabella tabellaTOT_SFRD_Tax = new Tabella(document.getMargineLeft(), posizione, 50, -2, 0.2F);
document.setLastPos(2);
DatiTabella datiTabellaTotale = new DatiTabella();
DataTable dtTotle = new DataTable();
dtTotle.Columns.Add("TOT", typeof(System.String));
dtTotle.Columns.Add("Peso", typeof(System.String));
datiTabellaTotale.table = dtTotle;
dtTotle.Rows.Add("TOTALE", "100,00");
tabellaTOT_SFRD_Tax.Header = false;
tabellaTOT_SFRD_Tax.Colonne.Add(new Colonna("TOT", "", 270, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaTOT_SFRD_Tax.Colonne.Add(new Colonna("Peso", "", 90, TipoAllineamento.DESTRA, true, 9, true, TipoColonna.TESTO));
tabellaTOT_SFRD_Tax.Draw(datiTabellaTotale, document);
}
}
}