using GPW_data; using SteamWare; using System; using System.Data; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace GPW_Admin.WebUserControls { public partial class mod_approvaTimbr : BaseUserControl { #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; } } /// /// restituisce info se utente sia admin (vedi web.config x ruolo...) /// public bool userIsAdmin { get { bool answ = false; try { string adminRole = memLayer.ML.confReadString("adminRole"); answ = user_std.UtSn.userHasRight(adminRole); } catch { } return answ; } } #endregion Public Properties #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 #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 Protected Methods /// /// Approva + deseleziona le righe selezionate... /// /// /// protected void btnApproveSelected_Click(object sender, EventArgs e) { if (sender != null) { // salvo approvazione DateTime dataOra = DateTime.Today; int idxDip = 0; foreach (GridViewRow riga in grView.Rows) { if (((CheckBox)riga.FindControl("chkSelect")).Checked) { idxDip = 0; try { dataOra = Convert.ToDateTime(((Label)riga.FindControl("lblDataOra")).Text); idxDip = Convert.ToInt32(((Label)riga.FindControl("lblIdxDip")).Text); logger.lg.scriviLog(string.Format("Approvazione per dip {0} in data/ora {1}", idxDip, dataOra), tipoLog.INFO); } catch (Exception exc) { logger.lg.scriviLog($"Eccezione durante recupero dati dip/data-ora in approva timbr{Environment.NewLine}{exc}"); } if (idxDip > 0) { // 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; } try { // modifico data del record DataProxy.DP.taTimb.stp_Timbr_modifica(idxDip, dataOra, dataOra.AddMinutes(minArr - minOrig).AddSeconds(-secOrig)); } catch (Exception exc) { logger.lg.scriviLog($"Eccezione durante approva timbr{Environment.NewLine}{exc}"); } try { // approvo con data modificata DataProxy.DP.taTimb.stp_Timbr_Approva(idxDip, dataOra.AddMinutes(minArr - minOrig).AddSeconds(-secOrig)); ((CheckBox)riga.FindControl("chkSelect")).Checked = false; } catch (Exception exc) { logger.lg.scriviLog($"Eccezione durante approva timbr{Environment.NewLine}{exc}"); } } } } // update! grView.SelectedIndex = -1; checkFixOds(); } } /// /// seleziona/deseleziona le righe indicate... /// /// /// protected void btnSelAll_Click(object sender, EventArgs e) { if (sender != null) { // seleziono tutti i valori visibili nel datagrid CheckBox chkbox = ((CheckBox)sender); bool isChecked = chkbox.Checked; if (!isChecked) { chkbox.ToolTip = "Seleziona tutti"; } else { chkbox.ToolTip = "Deseleziona tutti"; } foreach (GridViewRow riga in grView.Rows) { ((CheckBox)riga.FindControl("chkSelect")).Checked = isChecked; } } } 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; } try { // modifico data del record DataProxy.DP.taTimb.stp_Timbr_modifica(idxDip, dataOra, dataOra.AddMinutes(minArr - minOrig).AddSeconds(-secOrig)); } catch (Exception exc) { logger.lg.scriviLog($"Eccezione durante stp_Timbr_modifica{Environment.NewLine}{exc}"); } try { // approvo con data modificata DataProxy.DP.taTimb.stp_Timbr_Approva(idxDip, dataOra.AddMinutes(minArr - minOrig).AddSeconds(-secOrig)); } catch (Exception exc) { logger.lg.scriviLog($"Eccezione durante stp_Timbr_Approva{Environment.NewLine}{exc}"); } } 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 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 } }