using System;
using System.Collections.Generic;
using System.Data;
namespace PDFGenerator.BusinessLayer
{
///
/// Summary description for Paragrafo
///
public class ParagrafoReport : CapitoloReport
{
private Int32 _id;
private string _titolo;
private string _sottoTitolo;
private string _testoIntroduttivo;
private List _children = new List();
private string _querySql;
private Int32 _ordine;
private CapitoloReport _parent;
private bool _checkstampaelemento;
private bool _ripetistampaelemento = false;
private bool _indicizzato;
private float _spazionecessariosezionesuccessiva = 0;
private string _areaprogettocodice;
private string _areaprogettodescrizione;
private string _nomeprogetto;
private Int32? _ordinamentoProgettoPerAreeMonitorate;
private string _nomeprogettodaindicizzare = string.Empty;
private bool _areaprogettosottomonitoraggio = false;
private int _numeroprogettiinvestimento;
//usato per identificare l'intermediario nella S102 S103
private string _intermediario = string.Empty;
public new List Children
{
get
{
return _children;
}
}
///
/// Costruttore
///
public ParagrafoReport()
{
_checkstampaelemento = true;
_indicizzato = true;
}
///
/// Costruttore
///
///
public ParagrafoReport(int idParagrafo)
{
_id = idParagrafo;
_checkstampaelemento = true;
_indicizzato = true;
}
///
/// Costruttore.
///
/// id del Paragrafo
/// Datarow che contiene i campi:
/// queryOracleParagrafo,
/// titoloParagrafo,
/// testoParagrafo,
/// ordineParagrafo,
/// indicizzatoParagrafo,
/// che valorizzano le rispettive proprietà dell'oggetto Paragrafo.
///
public ParagrafoReport(int idParagrafo, DataRow SourceDatarow)
: this(idParagrafo)
{
_ordine = SourceDatarow["ordineParagrafo"] == DBNull.Value ? 0 : Convert.ToInt32(SourceDatarow["ordineParagrafo"]);
_titolo = SourceDatarow["titoloParagrafo"].ToString();
_testoIntroduttivo = SourceDatarow["testoParagrafo"].ToString();
_querySql = SourceDatarow["querySqlParagrafo"].ToString();
_indicizzato = Convert.ToBoolean(SourceDatarow["indicizzatoParagrafo"]);
_spazionecessariosezionesuccessiva = SourceDatarow["spazionecessariosezionesuccessiva"] == DBNull.Value ? 0 : Convert.ToSingle(SourceDatarow["spazionecessariosezionesuccessiva"]);
_areaprogettocodice = string.Empty;
_areaprogettodescrizione = string.Empty;
_nomeprogetto = string.Empty;
_nomeprogettodaindicizzare = string.Empty;
_ordinamentoProgettoPerAreeMonitorate = null;
}
#region Proprieta
///
/// Imposta o recupera l'Id del Paragrafo.
///
public new int Id
{
get { return _id; }
set { _id = value; }
}
///
/// Restituisce l'oggetto Capitolo padre dell'oggetto Paragrafo corrente.
///
public CapitoloReport ParagrafoParent
{
get { return _parent; }
set { _parent = value; }
}
///
/// Imposta o recupera il Titolo del Paragrafo.
///
public new string Titolo
{
get { return _titolo; }
set { _titolo = value; }
}
///
/// Imposta o recupera il sotto titolo del Paragrafo.
///
public string SottoTitolo
{
get { return _sottoTitolo; }
set { _sottoTitolo = value; }
}
///
/// Imposta o recupera il testo che introduce il Paragrafo.
///
public new string TestoIntroduttivo
{
get { return _testoIntroduttivo; }
set { _testoIntroduttivo = value; }
}
///
/// Imposta o recupera il nome del file .sql contenente la select oracle
/// da lanciare nel caso in cui il paragrafo sia sottoposto a query.
///
public new string QuerySql
{
get { return _querySql; }
set { _querySql = value; }
}
///
/// Imposta o recupera l'ordine di stampa del paragrafo.
///
public new int Ordine
{
get { return _ordine; }
set { _ordine = value; }
}
///
/// Indica se l'elemento viene stampato o no.
/// Di default true.
///
public new bool CheckStampaElemento
{
get { return _checkstampaelemento; }
set { _checkstampaelemento = value; }
}
///
/// Ripete la stampa dell'elemento (paragrafo corrente) e non imposta a false la proprietà CheckStampaElemento.
/// Utilizzato in monitoraggio per stampare i paragrafi per ogni area monitorata, in modo da non duplicare i paragrafi.
/// Di default = false.
///
public bool RipetiStampaElemento
{
get { return _ripetistampaelemento; }
set { _ripetistampaelemento = value; }
}
///
/// Indica se il paragrafo dovra essere indicizzato o no.
/// True se non specificato.
///
public bool Indicizzato
{
get { return _indicizzato; }
set { _indicizzato = value; }
}
///
/// Ottiene o imposta lo spazio necessario al paragrafo per scrivere la sezione successiva senza
/// posizionarsi su una nuova pagina del documento.
/// Il valore viene settato a livello di database: campo "SpazioNecessarioSezioneSuccessiva" della tabella "R6Paragrafo"
///
public float SpazioNecessarioSezioneSuccessiva
{
get { return _spazionecessariosezionesuccessiva; }
set { _spazionecessariosezionesuccessiva = value; }
}
///
/// Imposta o recupera il codice dell'Area/Progetto. es "Inv","Ext".
///
public string AreaProgettoCodice
{
get { return _areaprogettocodice; }
set { _areaprogettocodice = value; }
}
///
/// Imposta o recupera la descrizione dell'Area/Progetto. es "Investimento","Extra Rendimento".
///
public string AreaProgettoDescrizione
{
get { return _areaprogettodescrizione; }
set { _areaprogettodescrizione = value; }
}
///
/// Imposta o recupera la descrizione del nome progetto per l'area di investimento.
///
public string NomeProgetto
{
get { return _nomeprogetto; }
set { _nomeprogetto = value; }
}
///
/// Imposta o recupera il valore di Ordinamento assegnato al progetto nell'ambito delle Aree Monitorate:
/// questo valore è poi consumato dalle sezioni appartenenti al praragrafo per impostare i relativi filtri.
///
public Int32? OrdinamentoProgettoPerAreeMonitorate
{
get { return _ordinamentoProgettoPerAreeMonitorate; }
set { _ordinamentoProgettoPerAreeMonitorate = value; }
}
///
/// Imposta o recupera la descrizione del nome progetto che va indicizzato.
/// Nel report di proposta l'indicizzazione per le areebisogno/progetto è fatta a livello di sezione e non di paragrafo.
/// Le sezione S70 e S71 sono legate ad un solo paragrafo e vengono duplicate per ogni area/progetto.
/// Se i progetti di investimento sono >1 l'indicizzazione e il settaggio del titolo e del testo introduttivo,
/// va fatto solo sulla prima S70 di tali progetti.
///
public string NomeProgettoDaIndicizzare
{
get { return _nomeprogettodaindicizzare; }
set { _nomeprogettodaindicizzare = value; }
}
///
/// Indica se l'area/progetto è sottoposta a monitoraggio.
/// Implica che per e aree/progetto non sottoposte a monitoraggio venga stampata la s43 al posto della s43bis
///
public bool AreaProgettoSottoMonitoraggio
{
get { return _areaprogettosottomonitoraggio; }
set { _areaprogettosottomonitoraggio = value; }
}
///
/// Imposta o recupera il numero totale dei progetti d'investimento.
///
public int NumeroProgettiInvestimento
{
get { return _numeroprogettiinvestimento; }
set { _numeroprogettiinvestimento = value; }
}
///
/// Imposta o recupera L'intermediario per il paragrafo.
///
public string IntermediarioPar
{
get
{
return _intermediario;
}
set
{
_intermediario = value;
}
}
#endregion
#region Metodi
public void Add(SezioneReport child)
{
_children.Add(child);
}
public void Remove(SezioneReport child)
{
_children.Remove(child);
}
public new void Disegna()
{
foreach (SezioneReport child in _children)
{
child.SezioneParent = this;
child.Disegna();
}
}
#endregion
}
}