using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using SteamWare; using GPW_data; using System.Globalization; using System.Data; namespace GPW_Admin.WebUserControls { public partial class mod_approvaTimbr : BaseUserControl { #region Protected Properties /// /// idx dipendente loggato /// protected int IdxDipSel { get { int idx = -1; try { idx = memLayer.ML.IntSessionObj("idxDip_sel"); } catch { } return idx; } set { memLayer.ML.setSessionVal("idxDip_sel", value); } } #endregion Protected Properties #region Public Properties /// /// verifica se l'utente possa approvare la modifica oraria /// public bool userCanApprove { get { bool answ = false; try { answ = user_std.UtSn.userHasRight("GPW_admin") && chkLicOk; } catch { } return answ; } } #endregion Public Properties #region Private Methods /// /// imposto ODS /// private void checkFixOds() { if (filtroDip.valoreInt != -1) { IdxDipSel = filtroDip.valoreInt; ods.SelectMethod = "getNonApprByDip"; } else { //memLayer.ML.emptySessionVal("idxDip_sel"); IdxDipSel = -1; ods.SelectMethod = "getNonAppr"; } grView.DataBind(); } /// /// seleziono /// /// /// private void filtroDip_eh_selValore(object sender, EventArgs e) { // imposto ods checkFixOds(); } #endregion Private Methods #region Protected Methods protected void chkshowAll_CheckedChanged(object sender, EventArgs e) { filtroDip.ods = odsDip; } protected void grView_PageIndexChanged(object sender, EventArgs e) { // imposto ods checkFixOds(); } /// /// wrapper x salvare approvazioni /// /// /// protected void grView_SelectedIndexChanged(object sender, EventArgs e) { // salvo approvazione DateTime dataOra = DateTime.Now; int idxDip = 0; try { dataOra = Convert.ToDateTime(grView.SelectedDataKey["dataOra"].ToString()); idxDip = Convert.ToInt32(grView.SelectedDataKey["idxDipendente"].ToString()); logger.lg.scriviLog(string.Format("Approvazione per dip {0} in data/ora {1}", idxDip, dataOra), tipoLog.INFO); // recupero tab timbr non approvate x dip DS_Applicazione.TimbratureRow rigaTimb = DataProxy.DP.taTimb.getByDipDataOra(idxDip, dataOra)[0]; // effettua arrotondamento (aggiunge/toglie) int minOrig = dataOra.Minute; int secOrig = dataOra.Second; int minArr = 0; int step = Convert.ToInt32(txtArrot.Text); if (rigaTimb.entrata) { minArr = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(minOrig / step))) * step; } else { minArr = Convert.ToInt32(Math.Floor(Convert.ToDouble(minOrig / step))) * step; } // modifico data del record DataProxy.DP.taTimb.stp_Timbr_modifica(idxDip, dataOra, dataOra.AddMinutes(minArr - minOrig).AddSeconds(-secOrig)); // approvo con data modificata DataProxy.DP.taTimb.stp_Timbr_Approva(idxDip, dataOra.AddMinutes(minArr - minOrig).AddSeconds(-secOrig)); } catch { } // update! grView.SelectedIndex = -1; checkFixOds(); } /// /// post delete resetto filtro... /// /// /// protected void ods_Deleted(object sender, ObjectDataSourceStatusEventArgs e) { checkFixOds(); } /// /// post update resetto filtro... /// /// /// protected void ods_Updated(object sender, ObjectDataSourceStatusEventArgs e) { checkFixOds(); } protected void Page_Load(object sender, EventArgs e) { grView.PageSize = utils.pageSize; if (!Page.IsPostBack) { filtroDip.ods = odsDip; filtroDip.reset(); } filtroDip.eh_selValore += new EventHandler(filtroDip_eh_selValore); } #endregion Protected Methods #region Public Methods /// /// calcola cognome-nome da idx /// /// /// public string cognomeNome(object idxDip) { string answ = ""; try { int IdxDipendente = 0; if (int.TryParse($"{idxDip}", out IdxDipendente)) { answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente); } } catch { } return answ; } public void doUpdate() { grView.PageSize = utils.pageSize; grView.DataBind(); } /// /// inverte valore booleano /// /// /// public bool invBool(object valore) { bool answ = true; try { answ = !Convert.ToBoolean(valore); } catch { } return answ; } #endregion Public Methods } }