using ceTe.DynamicPDF; using Consulenza.ReportWriter.Business.Entity; namespace Consulenza.ReportWriter.Business.OBJ_PDF { /// /// Rappresenta una nota. /// E' possibile aggiungere note a piè di pagina o a piè di tabella ad una TablePDF. /// In questo ultimo caso le note saranno disegnate subito sotto il footer della tabella associata. /// Il numero di asterischi è calcolato automaticamente dal motore di renderizzazione e ogni volta che nel documento è aggiunta una ObjectTypePDF.PAGE, viene resettato. /// La ListIdColumnsAssociatedNote è una lista di id delle colonne della TablePDF associata nei quali verranno aggiunti i relativi *. /// Gli * saranno accodati al rispettivo valore nella cella. /// Utilizza la classe primitiva ceTe.DynamicPDF.PageElements.ObjectPDF. /// public class TableNotePDF : FormattedTextAreaPDF { #region Enum /// /// Lista della tipologia delle possibili note da aggiungere al documento. /// public enum TableNoteType { NonImpostato } /// /// Lista delle tipologie di posizionamento dell'oggetto nota. /// public enum TableNotePositionType { PièDiPagina, PièDiTabella } /// /// Lista delle tipologie di marker dell'oggetto nota. /// public enum TableNoteTypemarker { Asterisco, Numeri } /// /// Lista della tipologia di posizionamento della nota all'interno della tabella. /// IntestazioneTabella: l'asterisco viene inserito tra i campi dell'intestazione della tabella. /// CorpoTabella: l'asterisco viene inserito tra i campi del dettaglio della tabella. /// PieDiTabella: l'asterisco viene inserito tra i campi del footer della tabella. /// public enum TableNoteAsteriskPositionType { IntestazioneTabella, CorpoTabella, PieDiTabella } /// /// Tipo id mapping /// public enum TableNoteMappingType { Fisso, Dinamico } #endregion #region Fields private TableNotePositionType _position = TableNotePositionType.PièDiTabella; private TableNoteAsteriskPositionType _asterisksposition = TableNoteAsteriskPositionType.CorpoTabella; private TableNoteTypemarker _marker = TableNoteTypemarker.Asterisco; private int _asterisksnumber; private TableNoteMappingType _mappingtype = TableNoteMappingType.Fisso; private string _condition = string.Empty; /// /// Imposta o ottiente il posizionamento dell'oggetto Nota. /// public TableNotePositionType Position { get { return _position; } set { _position = value; } } /// /// Imposta o recupera la tipologia di posizionamento degli asterischi quando viene impostata la ListIdColumnsAssociatedNote. /// IntestazioneTabella: gli asterischi vengono disegnati nei campi ListIdColumnsAssociatedNote nell'header della tabella. /// CorpoTabella: gli asterischi vengono disegnati nei campi ListIdColumnsAssociatedNote nel dettaglio della tabella. /// PieDiTabella: gli asterischi vengono disegnati nei campi ListIdColumnsAssociatedNote nel footer della tabella. /// Di default=CorpoTabella. /// public TableNoteAsteriskPositionType AsterisksPosition { get { return _asterisksposition; } set { _asterisksposition = value; } } public TableNoteTypemarker TypeMarker { get { return _marker; } set { _marker = value; } } /// /// Imposta o ottiente il numero di asterischi. /// public int AsterisksNumber { get { return _asterisksnumber; } set { _asterisksnumber = value; } } /// /// Imposta o ottiene la tipologia della nota. /// public TableNoteType Type { get; set; } /// /// Ottiene o imposta la lista degli id delle colonne della TablePDF cui la nota verrà associata. /// public string[] MappingFields { get; set; } /// /// Ottiene o imposta il nome del campo chiave che identifica la riga univoca per cui associare la nota. /// Utilizzare il campo @rownumber. /// Obbligatorio per MappingType= DINAMICO. /// public string MappingKey { get; set; } /// /// Ottiene o imposta il tipo di mapping in MappingFields. /// Con MappingType impostato su fisso gli * saranno impostati in tutte le colonne specificate in MappingFields. /// Con MappingType impostato su dinamico gli * saranno posizionati nella colonna il cui id (stringa) inizia con la colonna specificata in ConditionFields. /// Di default = FISSO. /// public TableNoteMappingType MappingType { get { return _mappingtype; } set { _mappingtype = value; } } /// /// Ottiene o imposta la where condition che definisce il criterio per cui inserire gli * nel datasource della TablePDF; /// Gli * verranno aggiunti eclusivamente nella ListIdColumnsAssociatedNote. /// public string Condition { get { return _condition; } set { _condition = value; } } /// /// Imposta o recupera la lista dei campi impostati nella Condition. /// E' necessario che ogni campo in ConditionFields sia mappato 1:1 con MappingFields e che la parte iniziale del nome del campo di ConditionFields e MappingFields siano uguali. /// ConditionFields è obbligatoria se si imposta MappingType = DINAMICO. /// public string[] ConditionFields { get; set; } /// /// Imposta o recupera il valore della Condition. E' un intero che identifica il tipo di nota. /// Ad esempio 1="Nota nuda proprietà", 2="Nota diritto proprietà"... /// ConditionValue è obbligatoria se si imposta MappingType = DINAMICO. /// public int ConditionValue { get; set; } /// /// Imposta o recupera l'immagine associata alla nota. /// Sarà disegnata a sinistra del testo. Se impostata l'immagine non saranno disegnati gli asterischi ma solo il testo. /// Di default = null (nessuna nota). /// public ImagePDF Image { get; set; } #endregion #region Costruttori /// /// Costruttore. /// Di default il FontSize è impostato a 6 e la Height a 8. /// Se non impostato la TipologiaPosizionamentoAsterisco di default=Dettaglio. /// public TableNotePDF() { Image = null; ObjectType = ObjectTypePdf.TABLENOTE; } /// /// Costruttore. /// Di default il FontSize è impostato a 6 e la Height a 8. /// Di default la X è pari alla X della tablePDF cui la nota è associata. /// Se non impostato la TipologiaPosizionamentoAsterisco di default=CorpoTabella. /// /// Posizionamento della nota /// Testo della nota public TableNotePDF(TableNotePositionType position, string text) : this() { _position = position; Text = text; } /// /// Costruttore. /// Di default il FontSize è impostato a 6 e la Height a 8. /// Di default la X è pari alla X della tablePDF cui la nota è associata. /// Se non impostato la TipologiaPosizionamentoAsterisco di default=CorpoTabella. /// /// Posizionamento della nota. /// Testo della nota. /// Lista degli id delle colonne della tabella a cui la nota verrà associata. public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields) : this(position, text) { MappingFields = mappingfields; } /// /// Costruttore. /// Di default il FontSize è impostato a 6 e la Height a 8. /// Di default la X è pari alla X della tablePDF cui la nota è associata. /// Se non impostato la TipologiaPosizionamentoAsterisco di default=CorpoTabella. /// /// Posizionamento della nota. /// Testo della nota. /// Lista degli id delle colonne della tabella a cui la nota verrà associata. /// Condition che definisce il criterio per cui inserire gli * nel datasource della tabella. public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields, string condition) : this(position, text, mappingfields) { _condition = condition; } /// /// Costruttore. /// Di default il FontSize è impostato a 6 e la Height a 8. /// Di default la X è pari alla X della tablePDF cui la nota è associata. /// Se non impostato la TipologiaPosizionamentoAsterisco di default=CorpoTabella. /// /// Posizionamento della nota. /// Testo della nota. /// Lista degli id delle colonne della tabella a cui la nota verrà associata. Se TipologiaPosizionamentoAsterisco=PieDiTabella utilizzare id della colonna in FooterColumns della TablePDF. /// Condition che definisce il criterio per cui inserire gli * nel datasource della tabella. /// Tipologia di posizionamento degli asterischi quando viene impostata la listidcolumnsassociatednote. /// IntestazioneTabella: gli asterischi vengono disegnati dei campi listidcolumnsassociatednote nell'header della tabella. /// CorpoTabella: gli asterischi vengono disegnati dei campi listidcolumnsassociatednote nel dettaglio della tabella. /// PieDiTabella: gli asterischi vengono disegnati nei campi listidcolumnsassociatednote nel footer della tabella. /// public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields, string condition, TableNoteAsteriskPositionType asterisksposition) : this(position, text, mappingfields, condition) { _asterisksposition = asterisksposition; } /// /// Costruttore. /// Di default il FontSize è impostato a 6 e la Height a 8. /// Di default la X è pari alla X della tablePDF cui la nota è associata. /// Se non impostato la TipologiaPosizionamentoAsterisco di default=CorpoTabella. /// /// Posizionamento della nota. /// Testo della nota. /// Lista degli id delle colonne della tabella a cui la nota verrà associata. Se TipologiaPosizionamentoAsterisco=PieDiTabella utilizzare id della colonna in FooterColumns della TablePDF. /// Condition che definisce il criterio per cui inserire gli * nel datasource della tabella. /// Tipologia di posizionamento degli asterischi quando viene impostata la listidcolumnsassociatednote. /// IntestazioneTabella: gli asterischi vengono disegnati dei campi listidcolumnsassociatednote nell'header della tabella. /// CorpoTabella: gli asterischi vengono disegnati dei campi listidcolumnsassociatednote nel dettaglio della tabella. /// PieDiTabella: gli asterischi vengono disegnati nei campi listidcolumnsassociatednote nel footer della tabella. /// public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields, string condition, TableNoteAsteriskPositionType asterisksposition, ImagePDF image) : this(position, text, mappingfields, condition) { Image = image; _asterisksposition = asterisksposition; } public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields, string condition, TableNoteAsteriskPositionType asterisksposition, TableNoteTypemarker marker) : this(position, text, mappingfields, condition) { _asterisksposition = asterisksposition; _marker = marker; } /// /// Costruttore. /// Di default il FontSize è impostato a 6 e la Height a 8. /// Di default la X è pari alla X della tablePDF cui la nota è associata. /// Se non impostato la TipologiaPosizionamentoAsterisco di default=CorpoTabella. /// /// Posizionamento della nota. /// Testo della nota. /// Lista degli id delle colonne della tabella a cui la nota verrà associata. Se TipologiaPosizionamentoAsterisco=PieDiTabella utilizzare id della colonna in FooterColumns della TablePDF. /// Condition che definisce il criterio per cui inserire gli * nel datasource della tabella. /// Tipologia di posizionamento degli asterischi quando viene impostata la listidcolumnsassociatednote. /// IntestazioneTabella: gli asterischi vengono disegnati dei campi listidcolumnsassociatednote nell'header della tabella. /// CorpoTabella: gli asterischi vengono disegnati dei campi listidcolumnsassociatednote nel dettaglio della tabella. /// PieDiTabella: gli asterischi vengono disegnati nei campi listidcolumnsassociatednote nel footer della tabella. /// /// Tipologia della nota /// Tipologia della nota public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields, string condition, TableNoteAsteriskPositionType asterisksposition, TableNoteType type) : this(position, text, mappingfields, condition, asterisksposition) { Type = type; } #endregion #region Metodi /// /// Ritorna la rappresentazione in stringa del numero asterisksnumber passato in input. /// /// Numero di * da rappresentare in formato stringa. /// public static string ToAsteriskString(int asterisksnumber) { string strReturn = string.Empty; for (int i = 0; i < asterisksnumber; i++) strReturn += "*"; return strReturn; } /// /// Ritorna la rappresentazione in stringa del numero di asterisci impostato nella proprietà AsterisksNumber. /// public string ToAsteriskString() { string strReturn = string.Empty; for (int i = 0; i < _asterisksnumber; i++) strReturn += "*"; return strReturn; } public string ToNumberAsteriskString() { return _asterisksnumber.ToString(); } public static string ToNumberAsteriskString(int asterisksnumber) { return "" + asterisksnumber.ToString() + ""; } /// /// Ritorna l'oggetto che sarà stampato sulla pagina del documento. /// /// public override PageElement ToElement() { return BaseElement; } #endregion } }