using System; using System.Collections.Generic; using System.Data; namespace PDFGenerator.BusinessLayer { /// <summary> /// Summary description for Capitolo /// </summary> public class CapitoloReport : Report { private Int32 _id; private string _titolo; private string _testoIntroduttivo; private string _testoIntroduttivoAlternativo; private List<ParagrafoReport> _children = new List<ParagrafoReport>(); private string _querySql; private Int32 _ordine; private Report _parent; private bool _checkstampaelemento; private bool _checkstampato; private string _intermediario = string.Empty; private bool _stampainnuovapagina = false; public List<ParagrafoReport> Children { get { return _children; } } /// <summary> /// Costruttore /// </summary> public CapitoloReport() { _checkstampaelemento = true; } /// <summary> /// Costruttore /// </summary> /// <param name="idCapitolo"></param> public CapitoloReport(int idCapitolo) { _id = idCapitolo; _checkstampaelemento = true; } /// <summary> /// Costruttore. /// </summary> /// <param name="idCapitolo">id del Capitolo</param> /// <param name="SourceDatarow">Datarow che contiene i campi: /// queryOracleCapitolo, /// titoloCapitolo, /// testoCapitolo, /// stampainnuovapagina /// che valorizzano le rispettive propriet� dell'oggetto capitolo. /// </param> public CapitoloReport(int idCapitolo, DataRow SourceDatarow) : this(idCapitolo) { _querySql = SourceDatarow["querySqlCapitolo"].ToString(); _titolo = SourceDatarow["titoloCapitolo"].ToString(); _testoIntroduttivo = SourceDatarow["testoCapitolo"].ToString(); _testoIntroduttivoAlternativo = SourceDatarow["testoCapitoloAlternativo"] == DBNull.Value ? string.Empty : SourceDatarow["testoCapitoloAlternativo"].ToString(); _stampainnuovapagina = Convert.ToBoolean(SourceDatarow["nuovaPaginaCapitolo"]); } #region Proprieta /// <summary> /// Imposta o recupera l'Id del Capitolo. /// </summary> public new int Id { get { return _id; } set { _id = value; } } /// <summary> /// Imposta o recupera il Titolo del Capitolo. /// </summary> public new string Titolo { get { return _titolo; } set { _titolo = value; } } /// <summary> /// Imposta o recupera il testo che introduce il Capitolo. /// </summary> public new string TestoIntroduttivo { get { return _testoIntroduttivo; } set { _testoIntroduttivo = value; } } /// <summary> /// Imposta o recupera il testo alternativo che introduce il Capitolo. /// </summary> public string TestoIntroduttivoAlternativo { get { return _testoIntroduttivoAlternativo; } set { _testoIntroduttivoAlternativo = value; } } /// Imposta o recupera il nome del file .sql contenente la select oracle /// da lanciare nel caso in cui il capitolo sia sottoposto a query. /// </summary> public string QuerySql { get { return _querySql; } set { _querySql = value; } } /// <summary> /// Imposta o recupera l'ordine di stampa del capitolo. /// </summary> public new int Ordine { get { return _ordine; } set { _ordine = value; } } /// <summary> /// Restituisce l'oggetto Report padre dell'oggetto Capitolo corrente. /// </summary> public Report CapitoloParent { get { return _parent; } set { _parent = value; } } /// <summary> /// Indica se il capitolo deve essere stampato oppure no. /// Di default true /// </summary> public new bool CheckStampaElemento { get { return _checkstampaelemento; } set { _checkstampaelemento = value; } } /// <summary> /// Indica se il capitolo � gi� stato stampato. /// Utilizzato nei capitoli sottoposti a query. /// </summary> public bool CheckStampato { get { return _checkstampato; } set { _checkstampato = value; } } /// <summary> /// Intermediario associato al capitolo. /// Utilizzato nei capitoli sottoposti a query. /// </summary> public string Intermediario { get { return _intermediario; } set { _intermediario = value; } } /// <summary> /// Indica se il testo del capitolo va stampato in una nuova pagina del documento. /// Di default = false. /// </summary> public bool StampaInNuovaPagina { get { return _stampainnuovapagina; } set { _stampainnuovapagina = value; } } #endregion #region Metodi public void Add(ParagrafoReport child) { _children.Add(child); } public void Remove(ParagrafoReport child) { _children.Remove(child); } public new void Disegna() { foreach (ParagrafoReport child in _children) { child.ParagrafoParent = this; child.Disegna(); } } #endregion } }