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 System.IO; using System.Drawing.Imaging; using System.Globalization; namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.Monitoraggio { /// /// Scheda 28 - Distribuzione Geografica - Estero /// public class S28 : Entity.Section { public string sImagePosition = ""; public S28(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { Draw(); } catch (Exception ex) { SectionLogger.Write("S28", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } /// /// Scheda28. Patrimonio immobiliare – Estero /// protected override sealed void Draw() { var ds = GetDataSet(); var image = getImageFromStored(); AddElement(new FormattedTextAreaPDF("Di seguito si rappresenta la distribuzione geografica degli immobili ubicati all'Estero.", 30) { AutoIncrementYWritable = false, Width = 800, FontSize = 9.96f, FontColor = new ColorPDF(91, 88, 79), Y = 60 }); #region TO DELETE //// Image EUROPA - PROMETEIA //AddElement(new ImagePDF(455, 0.25f, image) //{ // AutoIncrementYWritable = false, // Y = 80 //}); //// Image WORLD - PROMETEIA //AddElement(new ImagePDF(430, 0.25f, image) //{ // AutoIncrementYWritable = false, // Y = 80 //}); //// Image EUROPA - MINE //AddElement(new ImagePDF(330, 0.58f, image) //{ // AutoIncrementYWritable = false, // Y = 70 //}); //// Image WORLD - MINE //AddElement(new ImagePDF(80, 0.63f, image) //{ // AutoIncrementYWritable = false, // Y = 75 //}); //AddElement(new SpacePDF(280)); #endregion int deltaY = 0; switch (ds.Tables["sintesi"].Rows.Count) { case 1: deltaY = 0; break; case 2: deltaY = 17; break; case 3: deltaY = 34; break; case 4: deltaY = 51; break; case 5: deltaY = 68; break; case 6: deltaY = 85; break; case 7: deltaY = 102; break; default: deltaY = 119; break; } // Image WORLD - NEW PROMETEIA //var imagePatch1 = new ImagePDF(655, 0.20F, "BlankPatch.png") { Y = 440, AutoIncrementYWritable = false }; //AddElement(imagePatch1); //var imagePatch2 = new ImagePDF(655, 0.20F, "BlankPatch.png") { Y = 460, AutoIncrementYWritable = false }; //AddElement(imagePatch2); if (sImagePosition == "C") { AddElement(new ImagePDF(80, 0.56f, image) { AutoIncrementYWritable = false, Y = 75 }); //AddElement(new SpacePDF(310)); AddElement(new SpacePDF(368 - deltaY)); } else { AddElement(new ImagePDF(220, 0.6273f, image) { AutoIncrementYWritable = false, Y = 80 }); AddElement(new SpacePDF(368 - deltaY)); } //// Image EUROPE - NEW PROMETEIA ////var imagePatch = new ImagePDF(655, 0.19F, "BlankPatch.png" ) { Y = 460, AutoIncrementYWritable = false }; ////AddElement(imagePatch); //AddElement(new ImagePDF(220, 0.6273f, image) //{ // AutoIncrementYWritable = false, // Y = 80 //}); //AddElement(new SpacePDF(368 - deltaY)); // Disegnare Tabella var table = new TablePDF(20, ds.Tables["sintesi"], ds.Tables["sintesiTotale"]) { Style = Style.Immobiliare, AlternateRow = false, HeaderHeight = 12, RowHeight = 10, FooterHeight = 13, //AdditionalSpaceBetweenHeadersAndTable = 5.0F, HeaderTextVerticalAlign = VerticalAlignmentType.Basso, AutoIncrementYWritable = false, ShowBorderLastLine = false, ShowBorderLastLineInPageBreak = false, ShowBorderHeader = false }; table.Columns.Add(new ColumnPDF("codStato", 25, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Immagine, "codStato", "") { HeaderFontSize = 7, ScaleColumnTypeImage = 0.3F, VerticalAlignment = VerticalAlignmentType.Basso }); table.Columns.Add(new ColumnPDF("comune", 90, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "comune", "Nazione") { HeaderFontSize = 7, VerticalAlignment = VerticalAlignmentType.Basso }); table.Columns.Add(new ColumnPDF("numero", 25, HorizontalAlignmentType.Centrato, false, false, 7, ColumnType.Testo, "numero", "") { HeaderGroupWidth = 25, HeaderGroupPathImage ="CASANERA.png", HeaderGroupScaleImage = 0.07F, HeaderGroupTextDeltaX = 5, HeaderGroupBorderLine = false, VerticalAlignment = VerticalAlignmentType.Basso }); table.Columns.Add(new ColumnPDF("totale", 75,HorizontalAlignmentType.Destra, false, false, 7, ColumnType.Testo, "totaleCurrency", "") { HeaderGroupWidth = 75, HeaderGroupPathImage ="Euro.png", HeaderGroupScaleImage = 0.07F, HeaderGroupTextDeltaX = 45, HeaderGroupBorderLine = false, VerticalAlignment = VerticalAlignmentType.Basso, }); table.FooterColumns.Add(new ColumnPDF("spazio", 25, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo)); table.FooterColumns.Add(new ColumnPDF("comuneTotale", 90, HorizontalAlignmentType.Sinistra, false, true, 7, ColumnType.Testo)); table.FooterColumns.Add(new ColumnPDF("numeroTotale", 25, HorizontalAlignmentType.Centrato, false, true, 7, ColumnType.Testo)); table.FooterColumns.Add(new ColumnPDF("totaleTotale", 75, HorizontalAlignmentType.Destra, false, true, 7, ColumnType.Testo)); //float startFrameX = table.X + table.Width + 10; //float startFrameY = 94; //addFrame(startFrameX, startFrameX + 320, startFrameY, startFrameY + 350); AddElement(table); } /// /// Recupera i dati necessari alla Section restituendo un DataTable. /// /// protected override DataTable GetDataTable() { return null; } /// /// Recupera i dati necessari alla Section restituendo un DataSet. /// /// protected override DataSet GetDataSet() { #region Definizione dei parametri var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "ChiaveClientePB", Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave } }; #endregion var dt = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S28_MapStratImmEstero", parametri); //DataTable table = new DataTable(); //table.Columns.Add("comune", typeof(string)); //table.Columns.Add("numero", typeof(string)); //table.Columns.Add("totale", typeof(string)); //table.Columns.Add("ImmagineBandiera", typeof(byte)); DataTable tableTotale = new DataTable(); tableTotale.Columns.Add("spazio", typeof(string)); tableTotale.Columns.Add("comuneTotale", typeof(string)); tableTotale.Columns.Add("numeroTotale", typeof(string)); tableTotale.Columns.Add("totaleTotale", typeof(string)); int nTotImmobili = 0; decimal nTotValore = 0; //DataTable table = dt.Tables[0].Copy(); DataTable table = dt.Tables[0].AsEnumerable().OrderByDescending(o => o.Field("totale")).CopyToDataTable(); table.Columns.Add("totaleCurrency", typeof(string)); for (int i = 0; i < dt.Tables[0].Rows.Count; i++) { nTotImmobili = nTotImmobili + Convert.ToInt16(table.Rows[i]["numero"]); nTotValore= nTotValore + Convert.ToDecimal(table.Rows[i]["totale"]); //table.Rows[i]["comune"] = Helper.CapitalizeWords(table.Rows[i]["comune"].ToString().ToLower()); table.Rows[i]["totaleCurrency"] = Helper.FormatCurrency(table.Rows[i]["totale"].ToString()); table.Rows[i]["codStato"] = "Flags\\" + table.Rows[i]["codStato"].ToString() + ".png"; } tableTotale.Rows.Add(" ","Totale", nTotImmobili, Helper.FormatCurrency(nTotValore.ToString())); //rowTotale["numImmobiliTotale"], //Helper.FormatCurrency(rowTotale["valProQuotaTotale"].ToString()), //Helper.FormatCurrency(rowTotale["valTotaleTotale"].ToString()), //Helper.FormatPercentage(Convert.ToDecimal(Helper.FormatDecimal(rowTotale["pesoTotale"].ToString(), 4)) * 100, 1)); DataSet ds = new DataSet(); table.TableName = "sintesi"; tableTotale.TableName = "sintesiTotale"; ds.Tables.Add(table); ds.Tables.Add(tableTotale); return ds; } public virtual Stream getImageFromStored() { var parametri = new List { 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 = 0 } }; var data = DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_ImmobiliareMonitoraggio_S14_MapDistrGeografica_Image", parametri); byte[] imageBytes = (byte[])data.Tables[0].Rows[0][3]; sImagePosition = data.Tables[0].Rows[0][4].ToString(); MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); ms.Write(imageBytes, 0, imageBytes.Length); return ms; } public void addFrame(float XupSx, float XupDx, float Yup, float Ydown) { var horizontalTopLine = new LinePDF(XupSx, Yup, XupDx, Yup, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false }; AddElement(horizontalTopLine); var horizontalBottomLine = new LinePDF(XupSx, Ydown, XupDx, Ydown, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false }; AddElement(horizontalBottomLine); var verticalLeftLine = new LinePDF(XupSx, Yup, XupSx, Ydown, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false }; AddElement(verticalLeftLine); var verticalRightLine = new LinePDF(XupDx, Yup, XupDx, Ydown, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false }; AddElement(verticalRightLine); } public string getTipologia(string tipologia) { switch (tipologia) { case "U": return "Uso abitativo"; case "I": return "Investimento"; case "S": return "Strumentale"; case "NS": return "Non specificata"; default: return ""; } } } }