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; // TUOFOGLIO 20181213 Dall'introduzione del prodotto Il Mio Foglio, serve a distinguere tra i GP e MioFoglio private string _codiceAreaSelf; //--TUOFOGLIO 20181213 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; } } // TUOFOGLIO 20181213 public string CodiceAreaSelf { get { return _codiceAreaSelf; } set { _codiceAreaSelf = value; } } //--TUOFOGLIO 20181213 /// /// 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 } }