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 = "

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\nAllegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.\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 banker1, 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.

"; } if (tipoLettera == TipoLettera.BenvenutoContestuale && tipoReport == TipoReport.Diagnosi) { SetBenvenutoContestuale(); testo = "Affluent Contestuale Sampaolo

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\nAllegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.\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 banker1, 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.

"; } 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 = "

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\nAllegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.\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 banker1, 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.

"; if (tipoLettera == prova.TipoLettera.BenvenutoContestuale) testo = "Affluent Contestuale Sampaolo

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\nAllegato a questa comunicazione trova il report di Diagnosi del suo Portafoglio.\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 banker1, 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.

"; return testo; }//GetTesto private static string GetOggetto() { return ""; }//GetOggetto private static string GetSaluti() { string saluti = ""; if (rete.Equals("F")) saluti = "

Matteo Colafrancesco\r\nL’Amministratore Delegato\r\nSanpaolo Invest SIM S.p.A.

'"; else //FC 26062015 Aggionamento nuova Ragione Sociale //saluti="

Matteo Colafrancesco\r\nL’Amministratore Delegato e Direttore Generale\r\nBanca Fideuram S.p.A.

"; // FC 26062015 Nuovo Amministratore Delegato //saluti = "

Matteo Colafrancesco\r\nL’Amministratore Delegato e Direttore Generale\r\nFideuram S.p.A.

"; saluti = "

Paolo Molesini\r\nL’Amministratore Delegato e Direttore Generale\r\nFideuram S.p.A.

"; return saluti; }//GetSaluti } }