using System; using System.Collections.Generic; using System.Text; using ceTe.DynamicPDF; using ceTe.DynamicPDF.Merger; using ceTe.DynamicPDF.Text; using System.Configuration; using System.Reflection; using System.IO; using ceTe.DynamicPDF.Imaging; using Dundas.Charting.WebControl; using System.Threading; using System.Globalization; using ceTe.DynamicPDF.PageElements; namespace prova { public enum TipoContratto { Old = 0, Affluent = 1, Private = 2 } public enum TipoLettera { BenvenutoPosticipata, BenvenutoContestuale, Accompagno } public enum TipoReport { Diagnosi, Monitoraggio } } namespace PDFGenerator { public class LetteraBA { //private byte[] data; //public byte[] Data //{ // get { return data; } //} //protected Image firma; //protected Document lettera; //protected int fontSize, // idLettera; //protected DateTime dataGenerazione; //public void writePDF() { // data = lettera.Draw(); // //DECOMMENTARE PER EFFETTUARE LE PROVE, SALVA LA LETTERA SUL PERCORSO // //SPECIFICATO SU pathScritturaLettera // //lettera.Draw(path + nomeLettera + ".pdf"); //} protected static Image GetImageByResourceName(string resourceName, int X, int Y, float ratio) { Assembly a = Assembly.GetExecutingAssembly(); try { using (Stream stream = a.GetManifestResourceStream(resourceName)) { Image gif = new Image(stream, X, Y, ratio); return gif; } } catch { return null; } } //protected abstract void settaCampi(); /// int MargineInfPX = 29; // int MargineSupPX = 14; // int MargineSxPX = 29; // int MargineDxPX = 14; //int xAreaCliente = 308; // int yAreaCliente = 186; // int wAreaCliente = 250; // int hAreaCliente = 90; // int xAreaLuogo = 0; // int yAreaLuogo = 258; // int wAreaLuogo = 480; // int hAreaLuogo = 30; //int xAreaOggetto = 0; //int yAreaOggetto = 288; //int hAreaOggetto = 480; //int wAreaOggetto = 30; //int xAreaCorpo = 0; //int yAreaCorpo = 328; //int hAreaCorpo = 480; //int wAreaCorpo = 320; //int xAreaSaluti = 250; //int yAreaSaluti = 677; //int hAreaSaluti = 230; //int wAreaSaluti = 56; //int xOffSetfirma = 0; //int yOffSetyfirma = 0; // int xLineNota = 0; // int yLineNota = 712; // int hLineNota = 150; // float wLineNota = 0.5F; //int xNota = 0; // int yNota = 715; //int wNota = 580; // int hNota = 30; // int sFontNota = 9; //int fontSize = 11; private void SetDefault() { //MargineInfPX = 29; //MargineSupPX = 14; //MargineSxPX = 29; //MargineDxPX = 14; //xAreaCliente = 308; //yAreaCliente = 186; //wAreaCliente = 250; //hAreaCliente = 90; //xAreaLuogo = 0; //yAreaLuogo = 258; //wAreaLuogo = 480; //hAreaLuogo = 30; //xAreaOggetto = 0; //yAreaOggetto = 288; //hAreaOggetto = 480; //wAreaOggetto = 30; //xAreaCorpo = 0; //yAreaCorpo = 328; //hAreaCorpo = 480; //wAreaCorpo = 320; //xAreaSaluti = 250; //yAreaSaluti = 677; //hAreaSaluti = 230; //wAreaSaluti = 56; //xOffSetfirma = 0; //yOffSetyfirma = 0; //xLineNota = 0; //yLineNota = 712; //hLineNota = 150; //wLineNota = 0.5F; //xNota = 0; //yNota = 715; //wNota = 480; //hNota = 30; //sFontNota = 7; //fontSize = 11; } public LetteraBA(string id) { SetDefault(); } /* public void aa(TipoLettera tipoLettera, TipoContratto tipoContratto, TipoReport tipoReport) { string testo = ""; if (tipoLettera == TipoLettera.BenvenutoPosticipata && tipoReport == TipoReport.Diagnosi) { SetBenvenutoPosticipata(); testo = "<P align='justify'>Gentile Cliente,\r\n\r\nla ringraziamo per aver aderito /$TIPOCOMTRATTO2$/: il servizio � stato attivato.\r\n\r\nLe ricordiamo che /$TIPOCOMTRATTO$/ sar� regolato, per gli aspetti che lo caratterizzano, dal Capo III delle �Norme contrattuali� riportate nel �Contratto per la prestazione dei servizi di consulenza in materia di investimenti e di collocamento�, nonch� dalle condizioni economiche riportate nel Modulo di Adesione /$TIPOCOMTRATTO2$/.\r\n\r\n<b>Allegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.</b>\r\n\r\nIl report rappresenta il suo patrimonio in /$BANCA$/, distribuito per Aree di Bisogno sulla base delle esigenze che ci ha manifestato. Inoltre, secondo i criteri specificati nel report stesso, rappresenta gli investimenti realizzati presso terzi intermediari ed eventuali altri beni di cui lei ha fornito informazioni. In questo modo lei pu� disporre di una diagnosi globale della sua ricchezza mobiliare e immobiliare.\r\n\r\nLe ricordiamo che, con cadenza trimestrale, ricever� il Report di Monitoraggio.\r\n\r\nIl suo private banker<font size='1'><sup>1</sup></font>, la sua filiale e il servizio assistenza clienti, attivo dal luned� al venerd�, dalle 8.30 alle 18.30, al numero /$NUMTEL$/, sono a sua disposizione per qualsiasi ulteriore richiesta di chiarimento si rivelasse necessaria.\r\n\r\nLa ringraziamo per la fiducia che ha voluto rinnovarci, e cogliamo questa occasione per porgerle i nostri pi� cordiali saluti.</P>"; } if (tipoLettera == TipoLettera.BenvenutoContestuale && tipoReport == TipoReport.Diagnosi) { SetBenvenutoContestuale(); testo = "Affluent Contestuale Sampaolo <P align='justify'>Gentile cliente,\r\n\r\nla ringraziamo per aver sottoscritto in data /$DATA$/. il �Contratto per la prestazione dei servizi di consulenza in materia di investimenti e di collocamento�. Il contratto � stato da noi accettato e, al contempo, abbiamo attivato /$TIPOCOMTRATTO$/ a cui lei ha scelto di aderire.\r\n\r\nI servizi saranno regolati dalle disposizioni contenute nelle �Norme contrattuali� riportate nel predetto contratto e, in particolare, per gli aspetti che caratterizzano /$TIPOCOMTRATTO$/, dal Capo III, nonch� dalle condizioni economiche riportate nel Modulo di Adesione /$TIPOCOMTRATTO2$/.\r\n\r\n<b>Allegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.</b>\r\n\r\nIl report rappresenta il suo patrimonio in /$BANCA$/, distribuito per Aree di Bisogno sulla base delle esigenze che ci ha manifestato. Inoltre, secondo i criteri specificati nel report stesso, rappresenta gli investimenti realizzati presso terzi intermediari ed eventuali altri beni di cui lei ha fornito informazioni. In questo modo lei pu� disporre di una diagnosi globale della sua ricchezza mobiliare e immobiliare.\r\n\r\nLe ricordiamo che, con cadenza trimestrale, ricever� il Report di Monitoraggio.\r\n\r\nIl suo private banker<font size=''1''><sup>1</sup></font>, la sua filiale e il servizio assistenza clienti, attivo dal luned� al venerd�, dalle 8.30 alle 18.30, al numero /$NUMTEL$/, sono a sua disposizione per qualsiasi ulteriore richiesta di chiarimento si rivelasse necessaria.\r\n\r\nLa ringraziamo per la fiducia che ha voluto rinnovarci, e cogliamo questa occasione per porgerle i nostri pi� cordiali saluti.</P>"; } if(tipoLettera==TipoLettera.Accompagno) SetAccompagno(); }//GeneraLettera */ private static prova.TipoReport tipoReport; private static prova.TipoLettera tipoLettera; //private static prova.TipoContratto tipoContratto; private static string rete = ""; public static byte[] GetLetteraBA(BusinessLayer.DataThread dataThread) { tipoReport = dataThread.TipoReport.ToUpper().Trim().Equals("DIAGNOSI") ? prova.TipoReport.Diagnosi : prova.TipoReport.Monitoraggio; tipoLettera = (dataThread.AdesioneSuccessivaAvanzato || dataThread.ContrattoOld) ? prova.TipoLettera.BenvenutoPosticipata : prova.TipoLettera.BenvenutoContestuale; //switch (dataThread.TipoContratto) //{ // case TipoContratto.Old: // tipoContratto = prova.TipoContratto.Old; // break; // case TipoContratto.Affluent: // tipoContratto = prova.TipoContratto.Affluent; // break; // case TipoContratto.Private: // tipoContratto = prova.TipoContratto.Private; // break; //} rete = dataThread.Rete.Trim().ToUpper(); string testo = GetTesto(); string oggetto = GetOggetto(); string saluti = GetSaluti(); string nome = ""; string cognome = ""; string indirizzo = ""; string appelativo = ""; return Genera(testo, nome, cognome, indirizzo, appelativo, oggetto, saluti); } private static byte[] Genera(string txtTesto, string txtNome, string txtCognome, string txtIndirizzo, string txtAppellativo, string txtOggetto, string txtSaluti) { int MargineInfPX = 29; int MargineSupPX = 14; int MargineSxPX = 29; int MargineDxPX = 14; int xAreaCliente = 308; int yAreaCliente = 186; int wAreaCliente = 250; int hAreaCliente = 90; int xAreaLuogo = 0; int yAreaLuogo = 258; int wAreaLuogo = 480; int hAreaLuogo = 30; int xAreaOggetto = 0; int yAreaOggetto = 288; int hAreaOggetto = 480; int wAreaOggetto = 30; int xAreaCorpo = 0; int yAreaCorpo = 328; int hAreaCorpo = 480; int wAreaCorpo = 320; //int xAreaSaluti = 250; //int yAreaSaluti = 677; int xAreaSaluti = 120; int yAreaSaluti = 750; int hAreaSaluti = 230; int wAreaSaluti = 56; //int xOffSetfirma = 0; //int yOffSetyfirma = 0; int xLineNota = 0; int yLineNota = 712; int hLineNota = 150; float wLineNota = 0.5F; int xNota = 0; int yNota = 715; int wNota = 580; int hNota = 30; int sFontNota = 7; int fontSize = 11; //******************** Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); //this.rete = rete; // this.data = null; //this.appellativo = appellativo; //this.testoOggetto = obj; //this.testoSaluti = testoSaluti; //this.indirizzo = indirizzo; //this.idLettera = idLettera; //this.testo = testo; //this.nome = nome; //this.cognome = cognome; //this.codiceContratto = codiceContratto; DateTime dataGenerazione = DateTime.Now; Document lettera = new Document(); System.Reflection.Assembly thisExe = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream file = null; if (rete.ToUpper() == "F") file = thisExe.GetManifestResourceStream("PDFGeneratorLetteraBenvenuto.TemplateBF_New2.pdf"); else file = thisExe.GetManifestResourceStream("PDFGeneratorLetteraBenvenuto.templateSPI_New2.pdf"); using (file) { PdfDocument pp = new PdfDocument(file); Page page = new ImportedPage(pp.GetPage(1)); PageDimensions dimensions = new PageDimensions(PageSize.A4, PageOrientation.Portrait); dimensions.BottomMargin = MargineInfPX; dimensions.TopMargin = MargineSupPX; dimensions.LeftMargin = MargineSxPX; dimensions.RightMargin = MargineDxPX; page.Dimensions = dimensions; lettera.Pages.Add(page); string txtCliente = txtAppellativo + "\r\n" + txtNome + " " + txtCognome + "\r\n" + txtIndirizzo; FormattedTextArea cliente = new FormattedTextArea(txtCliente, xAreaCliente, yAreaCliente, wAreaCliente, hAreaCliente, FontFamily.Times, fontSize, true); DateTime dataFineTrimestre = Convert.ToDateTime(ConfigurationManager.AppSettings["DataFineTrimestreCorrente_LetteraAccompagnamento"], new CultureInfo("it-IT", false).DateTimeFormat); string txtLuogo = "Torino, " + dataFineTrimestre.ToString("dd MMMM yyyy", new CultureInfo("it-IT", false).DateTimeFormat); FormattedTextArea luogo = new FormattedTextArea(txtLuogo, xAreaLuogo, yAreaLuogo, wAreaLuogo, hAreaLuogo, FontFamily.Times, fontSize, true); luogo.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Right; FormattedTextArea oggetto = new FormattedTextArea(txtOggetto, xAreaOggetto, yAreaOggetto, hAreaOggetto, wAreaOggetto, FontFamily.Times, fontSize, true); FormattedTextArea corpo = new FormattedTextArea(txtTesto, xAreaCorpo, yAreaCorpo, hAreaCorpo, wAreaCorpo, FontFamily.Times, fontSize, true); corpo.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify; FormattedTextArea saluti = new FormattedTextArea(txtSaluti, xAreaSaluti, yAreaSaluti, hAreaSaluti, wAreaSaluti, FontFamily.Times, fontSize, true); //int xOffSetfirma = 0; //int yOffSetyfirma = 0; //int xFirma = (int)(saluti.X + (saluti.Width - 94) / 2); //int yFirma = (int)(saluti.Y - saluti.Height + 15); int xFirma = (int)(saluti.X + (saluti.Width - 94) / 2); int yFirma = (int)(saluti.Y - saluti.Height + 15); Image firma = null; //if (ristampa) // firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.Firma_Ristampa.jpg", xFirma, yFirma, (float)0.2); //else switch (rete.ToUpper()) { case "F": firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.firma_Fideuram.jpg", xFirma, yFirma, (float)0.2); break; case "S": // firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.firma_SP.jpg", xFirma, yFirma, (float)0.2); firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.firma_Fideuram.jpg", xFirma, yFirma + 20, (float)0.15); //Andrea Rosaspina break; case "W": firma = GetImageByResourceName("PDFGeneratorLetteraBenvenuto.firma_SanPaoloInvest.jpg", xFirma, yFirma, (float)0.2); break; } ceTe.DynamicPDF.PageElements.Line lineNota = new ceTe.DynamicPDF.PageElements.Line(xLineNota, yLineNota, xLineNota + hLineNota, yLineNota, wLineNota, RgbColor.Black); ceTe.DynamicPDF.PageElements.Label Nota = new ceTe.DynamicPDF.PageElements.Label( "�Il private banker � un professionista della consulenza finanziaria, previdenziale e assicurativa, iscritto all�albo dei promotori finanziari." , xNota , yNota , wNota , hNota , Globals.OpenTypeFontTimes , sFontNota ); page.Elements.Add(corpo); page.Elements.Add(cliente); page.Elements.Add(oggetto); page.Elements.Add(luogo); page.Elements.Add(firma); page.Elements.Add(saluti); page.Elements.Add(lineNota); page.Elements.Add(Nota); return lettera.Draw(); } } private static string GetTesto() { string testo = ""; if (tipoLettera == prova.TipoLettera.BenvenutoPosticipata) testo = "<P align='justify'>Gentile Cliente,\r\n\r\nla ringraziamo per aver aderito /$TIPOCOMTRATTO2$/: il servizio � stato attivato.\r\n\r\nLe ricordiamo che /$TIPOCOMTRATTO$/ sar� regolato, per gli aspetti che lo caratterizzano, dal Capo III delle �Norme contrattuali� riportate nel �Contratto per la prestazione dei servizi di consulenza in materia di investimenti e di collocamento�, nonch� dalle condizioni economiche riportate nel Modulo di Adesione /$TIPOCOMTRATTO2$/.\r\n\r\n<b>Allegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.</b>\r\n\r\nIl report rappresenta il suo patrimonio in /$BANCA$/, distribuito per Aree di Bisogno sulla base delle esigenze che ci ha manifestato. Inoltre, secondo i criteri specificati nel report stesso, rappresenta gli investimenti realizzati presso terzi intermediari ed eventuali altri beni di cui lei ha fornito informazioni. In questo modo lei pu� disporre di una diagnosi globale della sua ricchezza mobiliare e immobiliare.\r\n\r\nLe ricordiamo che, con cadenza trimestrale, ricever� il Report di Monitoraggio.\r\n\r\nIl suo private banker<font size='1'><sup>1</sup></font>, la sua filiale e il servizio assistenza clienti, attivo dal luned� al venerd�, dalle 8.30 alle 18.30, al numero /$NUMTEL$/, sono a sua disposizione per qualsiasi ulteriore richiesta di chiarimento si rivelasse necessaria.\r\n\r\nLa ringraziamo per la fiducia che ha voluto rinnovarci, e cogliamo questa occasione per porgerle i nostri pi� cordiali saluti.</P>"; if (tipoLettera == prova.TipoLettera.BenvenutoContestuale) testo = "Affluent Contestuale Sampaolo <P align='justify'>Gentile cliente,\r\n\r\nla ringraziamo per aver sottoscritto in data /$DATA$/. il �Contratto per la prestazione dei servizi di consulenza in materia di investimenti e di collocamento�. Il contratto � stato da noi accettato e, al contempo, abbiamo attivato /$TIPOCOMTRATTO$/ a cui lei ha scelto di aderire.\r\n\r\nI servizi saranno regolati dalle disposizioni contenute nelle �Norme contrattuali� riportate nel predetto contratto e, in particolare, per gli aspetti che caratterizzano /$TIPOCOMTRATTO$/, dal Capo III, nonch� dalle condizioni economiche riportate nel Modulo di Adesione /$TIPOCOMTRATTO2$/.\r\n\r\n<b>Allegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.</b>\r\n\r\nIl report rappresenta il suo patrimonio in /$BANCA$/, distribuito per Aree di Bisogno sulla base delle esigenze che ci ha manifestato. Inoltre, secondo i criteri specificati nel report stesso, rappresenta gli investimenti realizzati presso terzi intermediari ed eventuali altri beni di cui lei ha fornito informazioni. In questo modo lei pu� disporre di una diagnosi globale della sua ricchezza mobiliare e immobiliare.\r\n\r\nLe ricordiamo che, con cadenza trimestrale, ricever� il Report di Monitoraggio.\r\n\r\nIl suo private banker<font size=''1''><sup>1</sup></font>, la sua filiale e il servizio assistenza clienti, attivo dal luned� al venerd�, dalle 8.30 alle 18.30, al numero /$NUMTEL$/, sono a sua disposizione per qualsiasi ulteriore richiesta di chiarimento si rivelasse necessaria.\r\n\r\nLa ringraziamo per la fiducia che ha voluto rinnovarci, e cogliamo questa occasione per porgerle i nostri pi� cordiali saluti.</P>"; return testo; }//GetTesto private static string GetOggetto() { return ""; }//GetOggetto private static string GetSaluti() { string saluti = ""; if (rete.Equals("F")) saluti = "<P align='center'>Matteo Colafrancesco\r\nL�Amministratore Delegato\r\nSanpaolo Invest SIM S.p.A.</P>'"; else //FC 26062015 Aggionamento nuova Ragione Sociale //saluti="<P align='center'>Matteo Colafrancesco\r\nL�Amministratore Delegato e Direttore Generale\r\nBanca Fideuram S.p.A.</P>"; // FC 26062015 Nuovo Amministratore Delegato //saluti = "<P align='center'>Matteo Colafrancesco\r\nL�Amministratore Delegato e Direttore Generale\r\nFideuram S.p.A.</P>"; saluti = "<P align='center'>Paolo Molesini\r\nL�Amministratore Delegato e Direttore Generale\r\nFideuram S.p.A.</P>"; return saluti; }//GetSaluti } }