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
}
}