358 lines
16 KiB
C#
358 lines
16 KiB
C#
using ceTe.DynamicPDF;
|
|
using Consulenza.ReportWriter.Business.Entity;
|
|
|
|
namespace Consulenza.ReportWriter.Business.OBJ_PDF
|
|
{
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public class TableNotePDF : FormattedTextAreaPDF
|
|
{
|
|
#region Enum
|
|
|
|
/// <summary>
|
|
/// Lista della tipologia delle possibili note da aggiungere al documento.
|
|
/// </summary>
|
|
public enum TableNoteType
|
|
{
|
|
NonImpostato
|
|
}
|
|
|
|
/// <summary>
|
|
/// Lista delle tipologie di posizionamento dell'oggetto nota.
|
|
/// </summary>
|
|
public enum TableNotePositionType
|
|
{
|
|
PièDiPagina,
|
|
PièDiTabella
|
|
}
|
|
/// <summary>
|
|
/// Lista delle tipologie di marker dell'oggetto nota.
|
|
/// </summary>
|
|
public enum TableNoteTypemarker
|
|
{
|
|
Asterisco,
|
|
Numeri
|
|
}
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public enum TableNoteAsteriskPositionType
|
|
{
|
|
IntestazioneTabella,
|
|
CorpoTabella,
|
|
PieDiTabella
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tipo id mapping
|
|
/// </summary>
|
|
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;
|
|
|
|
|
|
/// <summary>
|
|
/// Imposta o ottiente il posizionamento dell'oggetto Nota.
|
|
/// </summary>
|
|
public TableNotePositionType Position
|
|
{
|
|
get { return _position; }
|
|
set { _position = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public TableNoteAsteriskPositionType AsterisksPosition
|
|
{
|
|
get { return _asterisksposition; }
|
|
set { _asterisksposition = value; }
|
|
}
|
|
public TableNoteTypemarker TypeMarker
|
|
{
|
|
get { return _marker; }
|
|
set { _marker = value; }
|
|
}
|
|
/// <summary>
|
|
/// Imposta o ottiente il numero di asterischi.
|
|
/// </summary>
|
|
public int AsterisksNumber
|
|
{
|
|
get { return _asterisksnumber; }
|
|
set { _asterisksnumber = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Imposta o ottiene la tipologia della nota.
|
|
/// </summary>
|
|
public TableNoteType Type { get; set; }
|
|
|
|
/// <summary>
|
|
/// Ottiene o imposta la lista degli id delle colonne della TablePDF cui la nota verrà associata.
|
|
/// </summary>
|
|
public string[] MappingFields { get; set; }
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public string MappingKey { get; set; }
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public TableNoteMappingType MappingType
|
|
{
|
|
get { return _mappingtype; }
|
|
set { _mappingtype = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ottiene o imposta la where condition che definisce il criterio per cui inserire gli * nel datasource della TablePDF;
|
|
/// Gli * verranno aggiunti eclusivamente nella ListIdColumnsAssociatedNote.
|
|
/// </summary>
|
|
public string Condition
|
|
{
|
|
get { return _condition; }
|
|
set { _condition = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public string[] ConditionFields { get; set; }
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public int ConditionValue { get; set; }
|
|
|
|
/// <summary>
|
|
/// 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).
|
|
/// </summary>
|
|
public ImagePDF Image { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Costruttori
|
|
|
|
/// <summary>
|
|
/// Costruttore.
|
|
/// Di default il FontSize è impostato a 6 e la Height a 8.
|
|
/// Se non impostato la TipologiaPosizionamentoAsterisco di default=Dettaglio.
|
|
/// </summary>
|
|
public TableNotePDF()
|
|
{
|
|
Image = null;
|
|
ObjectType = ObjectTypePdf.TABLENOTE;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="position">Posizionamento della nota</param>
|
|
/// <param name="text">Testo della nota</param>
|
|
public TableNotePDF(TableNotePositionType position, string text)
|
|
: this()
|
|
{
|
|
_position = position;
|
|
Text = text;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="position">Posizionamento della nota.</param>
|
|
/// <param name="text">Testo della nota.</param>
|
|
/// <param name="mappingfields">Lista degli id delle colonne della tabella a cui la nota verrà associata.</param>
|
|
public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields)
|
|
: this(position, text)
|
|
{
|
|
MappingFields = mappingfields;
|
|
}
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="position">Posizionamento della nota.</param>
|
|
/// <param name="text">Testo della nota.</param>
|
|
/// <param name="mappingfields">Lista degli id delle colonne della tabella a cui la nota verrà associata.</param>
|
|
/// <param name="condition">Condition che definisce il criterio per cui inserire gli * nel datasource della tabella.</param>
|
|
public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields, string condition)
|
|
: this(position, text, mappingfields)
|
|
{
|
|
_condition = condition;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="position">Posizionamento della nota.</param>
|
|
/// <param name="text">Testo della nota.</param>
|
|
/// <param name="mappingfields">Lista degli id delle colonne della tabella a cui la nota verrà associata. Se TipologiaPosizionamentoAsterisco=PieDiTabella utilizzare id della colonna in FooterColumns della TablePDF. </param>
|
|
/// <param name="condition">Condition che definisce il criterio per cui inserire gli * nel datasource della tabella.</param>
|
|
/// <param name="asterisksposition">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.
|
|
/// </param>
|
|
public TableNotePDF(TableNotePositionType position, string text, string[] mappingfields, string condition, TableNoteAsteriskPositionType asterisksposition)
|
|
: this(position, text, mappingfields, condition)
|
|
{
|
|
_asterisksposition = asterisksposition;
|
|
}
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="position">Posizionamento della nota.</param>
|
|
/// <param name="text">Testo della nota.</param>
|
|
/// <param name="mappingfields">Lista degli id delle colonne della tabella a cui la nota verrà associata. Se TipologiaPosizionamentoAsterisco=PieDiTabella utilizzare id della colonna in FooterColumns della TablePDF. </param>
|
|
/// <param name="condition">Condition che definisce il criterio per cui inserire gli * nel datasource della tabella.</param>
|
|
/// <param name="asterisksposition">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.
|
|
/// </param>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
/// <param name="position">Posizionamento della nota.</param>
|
|
/// <param name="text">Testo della nota.</param>
|
|
/// <param name="mappingfields">Lista degli id delle colonne della tabella a cui la nota verrà associata. Se TipologiaPosizionamentoAsterisco=PieDiTabella utilizzare id della colonna in FooterColumns della TablePDF. </param>
|
|
/// <param name="condition">Condition che definisce il criterio per cui inserire gli * nel datasource della tabella.</param>
|
|
/// <param name="asterisksposition">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.
|
|
/// </param>
|
|
/// <param>Tipologia della nota</param>
|
|
/// <param name="type">Tipologia della nota</param>
|
|
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
|
|
|
|
/// <summary>
|
|
/// Ritorna la rappresentazione in stringa del numero asterisksnumber passato in input.
|
|
/// </summary>
|
|
/// <param name="asterisksnumber">Numero di * da rappresentare in formato stringa.</param>
|
|
/// <returns></returns>
|
|
public static string ToAsteriskString(int asterisksnumber)
|
|
{
|
|
string strReturn = string.Empty;
|
|
|
|
for (int i = 0; i < asterisksnumber; i++)
|
|
strReturn += "*";
|
|
|
|
return strReturn;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ritorna la rappresentazione in stringa del numero di asterisci impostato nella proprietà AsterisksNumber.
|
|
/// </summary>
|
|
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 "<sup>" + asterisksnumber.ToString() + "</sup>";
|
|
|
|
}
|
|
/// <summary>
|
|
/// Ritorna l'oggetto che sarà stampato sulla pagina del documento.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public override PageElement ToElement()
|
|
{
|
|
return BaseElement;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|