using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using SteamWare; namespace MP_MAG.WebUserControls { public partial class cmp_selPeriodoFuturo : BaseUserControl { #region Protected Fields protected intervalloDate _intervallo; #endregion Protected Fields #region Protected Properties /// /// definisce se sia da mostrare il selettore delle ore nel controllo /// protected bool mostraSelOra { get { bool answ = false; if (memLayer.ML.isInSessionObject("mostraSelOra")) { answ = memLayer.ML.BoolSessionObj("mostraSelOra"); } else { // leggo da sessione e salvo... try { answ = memLayer.ML.CRB("mostraSelOra"); } catch { } memLayer.ML.setSessionVal("mostraSelOra", answ); } return answ; } } #endregion Protected Properties #region Public Properties /// /// indica se il controllo debba fare update in automatico o attendere pressione button update da utente /// public bool autoUpdate { get; set; } public DateTime fine { get { return intervalloAnalisi.fine; } } public DateTime inizio { get { return intervalloAnalisi.inizio; } } public intervalloDate intervalloAnalisi { get { return (intervalloDate)Session["_intervallo"]; } set { intervalloDate interv = value; Session["_intervallo"] = interv; Session["_inizio"] = interv.inizio; Session["_fine"] = interv.fine; _intervallo = interv; aggiornaDateMostrate(false); } } #endregion Public Properties #region Private Methods /// /// effettua update delle date mostrate da intervallo analisi (ed eventualmente riporta update...) /// /// private void aggiornaDateMostrate(bool doReportUpdate) { scriviDate(); if (doReportUpdate) { reportUpdate(); } } /// /// update periodo /// private void aggiornaPeriodo() { _intervallo = new intervalloDate(); // calcolo tempi arrotondati _intervallo.inizio = Convert.ToDateTime(txtInizio.Text); _intervallo.fine = Convert.ToDateTime(txtFine.Text); verificaCoerenzaDate(); reportUpdate(); } /// /// verifica la modifica delle date.. /// private void procDateMod() { aggiornaPeriodo(); } /// /// scrive nuove date in controllo /// private void scriviDate() { // se intervallo non è valorizzato leggo da sessione... if (!_intervallo.isValid) { _intervallo = intervalloAnalisi; } txtInizio.Text = _intervallo.inizio.ToString("yyyy-MM-dd"); txtFine.Text = _intervallo.fine.ToString("yyyy-MM-dd"); } /// /// imposta intervallo da sessione o di default /// private void setIntervallo() { //intervalloDate _intervallo; try { _intervallo = (intervalloDate)Session["_intervallo"]; } catch { int numGG = memLayer.ML.CRI("defDayTo") > 1 ? memLayer.ML.CRI("defDayTo") : 30; _intervallo = new intervalloDate(); _intervallo.inizio = DateTime.Today; _intervallo.fine = _intervallo.inizio.AddDays(numGG); Session["_intervallo"] = _intervallo; Session["_inizio"] = _intervallo.inizio; Session["_fine"] = _intervallo.fine; } scriviDate(); } /// /// verifica che le date dell'intervallo siano coerenti (inizio < fine) /// private void verificaCoerenzaDate() { // controllo date siano coerenti (fine > inizio)... if (_intervallo.inizio >= _intervallo.fine) { _intervallo.inizio = DateTime.Today; _intervallo.fine = _intervallo.inizio.AddDays(memLayer.ML.CRI("defDayTo")); } //intervalloAnalisi = _intervallo; aggiornaDateMostrate(false); } #endregion Private Methods #region Protected Methods /// /// avvio componente /// /// protected override void OnInit(EventArgs e) { base.OnInit(e); txtInizio.ToolTip = "inizio periodo di riferimento per i dati mostrati"; txtFine.ToolTip = "fine periodo di riferimento per i dati mostrati"; setIntervallo(); } /// /// caricamento pagina /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { txtInizio.ToolTip = "inizio periodo di riferimento per i dati mostrati"; txtFine.ToolTip = "fine periodo di riferimento per i dati mostrati"; } } /// /// evento cambio testo data fine /// /// /// protected void txtFine_TextChanged(object sender, EventArgs e) { procDateMod(); } /// /// evento cambio testo data inizio /// /// /// protected void txtInizio_TextChanged(object sender, EventArgs e) { procDateMod(); } #endregion Protected Methods #region Public Methods /// /// effettua update /// /// public void doUpdate(bool doReportUpdate) { aggiornaDateMostrate(doReportUpdate); } /// /// riporta aggiornamento a controller /// public void reportUpdate() { intervalloAnalisi = _intervallo; base.raiseEvent(); } #endregion Public Methods } }