From dc5123019965b34d2961b990975b09cfd6dc18fc Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 13 Jan 2022 12:54:59 +0100 Subject: [PATCH] Refactor chiamate info dipendente (cache redis...) --- .../WebUserControls/cmp_userLicense.ascx.cs | 5 +- .../WebUserControls/mod_approvaTimbr.ascx.cs | 7 +- .../WebUserControls/mod_elencoTimbr.ascx.cs | 8 +- .../mod_reviewTimbrature.ascx.cs | 8 +- .../WebUserControls/mod_bCodeTimb.ascx.cs | 2 +- .../mod_commUtMancTimbr.ascx.cs | 8 +- .../WebUserControls/mod_elencoTimbr.ascx.cs | 8 +- GPW_Data/DataProxy.cs | 39 +- GPW_Data/licenzeGPW.cs | 17 +- GPW_Smart/WebUserControls/cmp_menuTop.ascx.cs | 2 +- .../mod_enrollByAuthKey.ascx.cs | 2 +- .../mod_enrollByJumperAuthKey.ascx.cs | 2 +- .../WebUserControls/mod_mancTimb.ascx.cs | 406 +++++++++--------- .../mod_sendAuthToEmail.ascx.cs | 2 +- 14 files changed, 263 insertions(+), 253 deletions(-) diff --git a/GPW_Admin/WebUserControls/cmp_userLicense.ascx.cs b/GPW_Admin/WebUserControls/cmp_userLicense.ascx.cs index be57bbe..03d9dd9 100644 --- a/GPW_Admin/WebUserControls/cmp_userLicense.ascx.cs +++ b/GPW_Admin/WebUserControls/cmp_userLicense.ascx.cs @@ -205,8 +205,11 @@ namespace GPW_Admin.WebUserControls if (oggi.Subtract(assunto).TotalDays > 60) { // recupero record utente +#if false var tabDip = DataProxy.DP.taDipendenti.getByIdx(idxDipSel); - if (tabDip != null && tabDip.Rows.Count == 1) + if (tabDip != null && tabDip.Rows.Count == 1) +#endif + if (DataProxy.DP.getRowDip(idxDipSel) != null) { // verifica sia sbloccabile la licenza (online) answ = licenzeGPW.checkActivationUnlocked(CodImpiego).Result; diff --git a/GPW_Admin/WebUserControls/mod_approvaTimbr.ascx.cs b/GPW_Admin/WebUserControls/mod_approvaTimbr.ascx.cs index c2572e2..be8b3f9 100644 --- a/GPW_Admin/WebUserControls/mod_approvaTimbr.ascx.cs +++ b/GPW_Admin/WebUserControls/mod_approvaTimbr.ascx.cs @@ -195,8 +195,11 @@ namespace GPW_Admin.WebUserControls string answ = ""; try { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(Convert.ToInt32(idxDip))[0]; - answ = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome); + int IdxDipendente = 0; + if (int.TryParse($"{idxDip}", out IdxDipendente)) + { + answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente); + } } catch { } diff --git a/GPW_Admin/WebUserControls/mod_elencoTimbr.ascx.cs b/GPW_Admin/WebUserControls/mod_elencoTimbr.ascx.cs index 41b60c0..39acb78 100644 --- a/GPW_Admin/WebUserControls/mod_elencoTimbr.ascx.cs +++ b/GPW_Admin/WebUserControls/mod_elencoTimbr.ascx.cs @@ -114,13 +114,11 @@ namespace GPW_Admin.WebUserControls public string cognomeNome(object idxDip) { string answ = ""; - try + int IdxDipendente = 0; + if (int.TryParse($"{idxDip}", out IdxDipendente)) { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(Convert.ToInt32(idxDip))[0]; - answ = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome); + answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente); } - catch - { } return answ; } diff --git a/GPW_Admin/WebUserControls/mod_reviewTimbrature.ascx.cs b/GPW_Admin/WebUserControls/mod_reviewTimbrature.ascx.cs index f549e13..dde5f12 100644 --- a/GPW_Admin/WebUserControls/mod_reviewTimbrature.ascx.cs +++ b/GPW_Admin/WebUserControls/mod_reviewTimbrature.ascx.cs @@ -383,13 +383,11 @@ namespace GPW_Admin.WebUserControls public string cognomeNome(object idxDip) { string answ = ""; - try + int IdxDipendente = 0; + if (int.TryParse($"{idxDip}", out IdxDipendente)) { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(Convert.ToInt32(idxDip))[0]; - answ = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome); + answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente); } - catch - { } return answ; } diff --git a/GPW_Barcode/WebUserControls/mod_bCodeTimb.ascx.cs b/GPW_Barcode/WebUserControls/mod_bCodeTimb.ascx.cs index 45c2e4c..d1b15d0 100644 --- a/GPW_Barcode/WebUserControls/mod_bCodeTimb.ascx.cs +++ b/GPW_Barcode/WebUserControls/mod_bCodeTimb.ascx.cs @@ -363,7 +363,7 @@ namespace GPW.WebUserControls string CognomeNome = ""; if (memLayer.ML.confReadBool("showNameAfterCmd")) { - CognomeNome = DataProxy.DP.CognomeNomeByIdx(DataProxy.idxDipendente); + CognomeNome = DataProxy.DP.cognomeNomeByIdx(DataProxy.idxDipendente); } if (nextIsEntrata) { diff --git a/GPW_Commesse/WebUserControls/mod_commUtMancTimbr.ascx.cs b/GPW_Commesse/WebUserControls/mod_commUtMancTimbr.ascx.cs index f199199..a041c0b 100644 --- a/GPW_Commesse/WebUserControls/mod_commUtMancTimbr.ascx.cs +++ b/GPW_Commesse/WebUserControls/mod_commUtMancTimbr.ascx.cs @@ -205,13 +205,11 @@ namespace GPW_Commesse.WebUserControls public string cognomeNome(object idxDip) { string answ = ""; - try + int IdxDipendente = 0; + if (int.TryParse($"{idxDip}", out IdxDipendente)) { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(Convert.ToInt32(idxDip))[0]; - answ = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome); + answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente); } - catch - { } return answ; } diff --git a/GPW_Commesse/WebUserControls/mod_elencoTimbr.ascx.cs b/GPW_Commesse/WebUserControls/mod_elencoTimbr.ascx.cs index e544de7..0580002 100644 --- a/GPW_Commesse/WebUserControls/mod_elencoTimbr.ascx.cs +++ b/GPW_Commesse/WebUserControls/mod_elencoTimbr.ascx.cs @@ -70,13 +70,11 @@ namespace GPW_Commesse.WebUserControls public string cognomeNome(object idxDip) { string answ = ""; - try + int IdxDipendente = 0; + if (int.TryParse($"{idxDip}", out IdxDipendente)) { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(Convert.ToInt32(idxDip))[0]; - answ = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome); + answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente); } - catch - { } return answ; } /// diff --git a/GPW_Data/DataProxy.cs b/GPW_Data/DataProxy.cs index f9cd77e..32c97a9 100644 --- a/GPW_Data/DataProxy.cs +++ b/GPW_Data/DataProxy.cs @@ -1,4 +1,5 @@ -using SteamWare; +using Newtonsoft.Json; +using SteamWare; using System; using System.Security.Cryptography; using System.Text; @@ -110,7 +111,7 @@ namespace GPW_data bool answ = false; try { - DS_Applicazione.DipendentiRow rigaDip = DP.taDipendenti.getByIdx(idxDipendente)[0]; + DS_Applicazione.DipendentiRow rigaDip = DP.getRowDip(idxDipendente); answ = rigaDip.attivo; } catch @@ -128,7 +129,7 @@ namespace GPW_data bool answ = false; try { - DS_Applicazione.DipendentiRow rigaDip = DP.taDipendenti.getByIdx(_idxDipendente)[0]; + DS_Applicazione.DipendentiRow rigaDip = DP.getRowDip(_idxDipendente); answ = rigaDip.attivo; } catch @@ -230,16 +231,14 @@ namespace GPW_data #region Public Methods - public string CognomeNomeByIdx(int idxDip) + public string cognomeNomeByIdx(int idxDip) { string answ = ""; - try + var rigaDip = getRowDip(idxDip); + if (rigaDip != null) { - DS_Applicazione.DipendentiRow rigaDip = taDipendenti.getByIdx(idxDip)[0]; - answ = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome); + answ = $"{rigaDip.Cognome} {rigaDip.Nome}"; } - catch - { } return answ; } @@ -316,15 +315,31 @@ namespace GPW_data return fatto; } + private static int cacheTTL = 60 * 5; + private static string rkeyDipRow = memLayer.ML.redHash($"LiMan:DipRow"); + public DS_Applicazione.DipendentiRow getRowDip(int idxDip) { DS_Applicazione.DipendentiRow answ = null; + // solo se dip valido if (idxDip > 0) { - var tabDip = DP.taDipendenti.getByIdx(idxDip); - if (tabDip != null && tabDip.Rows.Count == 1) + // cerco in redis... + string redKey = $"{rkeyDipRow}:{idxDip}"; + string rawData = memLayer.ML.getRSV(redKey); + if (string.IsNullOrEmpty(rawData)) { - answ = tabDip[0]; + var tabDip = DP.taDipendenti.getByIdx(idxDip); + if (tabDip != null && tabDip.Rows.Count == 1) + { + answ = tabDip[0]; + rawData = JsonConvert.SerializeObject(tabDip); + memLayer.ML.setRSV(redKey, rawData, cacheTTL); + } + } + else + { + answ = JsonConvert.DeserializeObject(rawData)[0]; } } return answ; diff --git a/GPW_Data/licenzeGPW.cs b/GPW_Data/licenzeGPW.cs index 13ebb7c..3d34896 100644 --- a/GPW_Data/licenzeGPW.cs +++ b/GPW_Data/licenzeGPW.cs @@ -37,7 +37,7 @@ namespace GPW_data private static string rkeyTickets = memLayer.ML.redHash($"LiMan:Tickets"); private static string rkeyVetoRefPayL = memLayer.ML.redHash($"LiMan:VetoRefPayL"); - private static int cacheTTL = 5; + private static int cacheTTL = 60 * 5; #endregion Private Fields @@ -627,7 +627,7 @@ namespace GPW_data { answ = DataProxy.DP.taAKV.getByKey(installazione)[0].valString; // salvo x 5 min - memLayer.ML.setRSV(rkeyAuth, answ, 60 * cacheTTL); + memLayer.ML.setRSV(rkeyAuth, answ, cacheTTL); } catch (Exception exc) { @@ -712,7 +712,7 @@ namespace GPW_data { answ = DataProxy.DP.taAKV.getByKey("installazione")[0].valString; // salvo x 5 min - memLayer.ML.setRSV(rkeyInstall, answ, 60 * cacheTTL); + memLayer.ML.setRSV(rkeyInstall, answ, cacheTTL); } catch (Exception exc) { @@ -756,7 +756,7 @@ namespace GPW_data { answ = DataProxy.DP.taAKV.getByKey(installazione)[0].valInt; // salvo x 5 min - memLayer.ML.setRSV(rkeyNumInstall, $"{answ}", 60 * cacheTTL); + memLayer.ML.setRSV(rkeyNumInstall, $"{answ}", cacheTTL); } catch (Exception exc) { @@ -817,7 +817,7 @@ namespace GPW_data { answ = DataProxy.DP.taAKV.getByKey(installazione)[0].valString; // salvo x 5 min - memLayer.ML.setRSV(rkeyMKey, answ, 60 * cacheTTL); + memLayer.ML.setRSV(rkeyMKey, answ, cacheTTL); } catch (Exception exc) { @@ -859,10 +859,9 @@ namespace GPW_data try { // recupero riga dip - DS_Applicazione.DipendentiDataTable userTab = DataProxy.DP.taDipendenti.getByIdx(idxDip); - if (userTab != null && userTab.Count > 0) + var userRow = DataProxy.DP.getRowDip(idxDip); + if (userRow != null) { - var userRow = userTab[0]; // calcolo suo codice... var codImpCurr = DataProxy.DP.hashCodImpiego(userRow); // cerco dip tra elenco json @@ -895,7 +894,7 @@ namespace GPW_data { answ = DataProxy.DP.taDipendenti.getAttivi(false); rawData = JsonConvert.SerializeObject(answ); - memLayer.ML.setRSV(rkeyDipAct, rawData, 60 * cacheTTL); + memLayer.ML.setRSV(rkeyDipAct, rawData, cacheTTL); } else { diff --git a/GPW_Smart/WebUserControls/cmp_menuTop.ascx.cs b/GPW_Smart/WebUserControls/cmp_menuTop.ascx.cs index a341a86..98ac510 100644 --- a/GPW_Smart/WebUserControls/cmp_menuTop.ascx.cs +++ b/GPW_Smart/WebUserControls/cmp_menuTop.ascx.cs @@ -135,7 +135,7 @@ namespace GPW_Smart.WebUserControls string hashEmail = ""; try { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(idxDipendente)[0]; + DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.getRowDip(idxDipendente); CognomeNome = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome); email = rigaDip.email; hashEmail = SteamCrypto.getHashStringMD5(email); diff --git a/GPW_Smart/WebUserControls/mod_enrollByAuthKey.ascx.cs b/GPW_Smart/WebUserControls/mod_enrollByAuthKey.ascx.cs index a261575..ab2e467 100644 --- a/GPW_Smart/WebUserControls/mod_enrollByAuthKey.ascx.cs +++ b/GPW_Smart/WebUserControls/mod_enrollByAuthKey.ascx.cs @@ -96,7 +96,7 @@ namespace GPW.WebUserControls string CognomeNome = "USER ND"; try { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(idxDipendente)[0]; + DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.getRowDip(idxDipendente); CognomeNome = $"{rigaDip.Cognome} {rigaDip.Nome} [{idxDipendente}]"; } catch diff --git a/GPW_Smart/WebUserControls/mod_enrollByJumperAuthKey.ascx.cs b/GPW_Smart/WebUserControls/mod_enrollByJumperAuthKey.ascx.cs index 1b2bb9d..12fd314 100644 --- a/GPW_Smart/WebUserControls/mod_enrollByJumperAuthKey.ascx.cs +++ b/GPW_Smart/WebUserControls/mod_enrollByJumperAuthKey.ascx.cs @@ -54,7 +54,7 @@ namespace GPW.WebUserControls string CognomeNome = "USER ND"; try { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(idxDipendente)[0]; + DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.getRowDip(idxDipendente); CognomeNome = $"{rigaDip.Cognome} {rigaDip.Nome} [{idxDipendente}]"; } catch diff --git a/GPW_Smart/WebUserControls/mod_mancTimb.ascx.cs b/GPW_Smart/WebUserControls/mod_mancTimb.ascx.cs index 579c018..fe270e9 100644 --- a/GPW_Smart/WebUserControls/mod_mancTimb.ascx.cs +++ b/GPW_Smart/WebUserControls/mod_mancTimb.ascx.cs @@ -7,216 +7,214 @@ using System.Web.UI.WebControls; namespace GPW.WebUserControls { - public partial class mod_mancTimb : System.Web.UI.UserControl - { - protected void Page_Load(object sender, EventArgs e) + public partial class mod_mancTimb : System.Web.UI.UserControl { - // salvo data corrente x filtraggi... - if (!Page.IsPostBack) - { - memLayer.ML.setSessionVal("today", DateTime.Today.ToShortDateString()); - // imposto entrata - rblEntrata.SelectedIndex = 0; - presetDateTime(); - chkShowAll.Visible = userCanApprove; - } - checkFixOds(); - } - - private void presetDateTime() - { - // imposto valori selezionati a metà - DateTime adesso = DateTime.Now; - // arrotondo a 5 minuti... - int minuti = adesso.Minute; - adesso = adesso.AddMinutes(-minuti).AddMinutes((minuti / 5) * 5); - mod_dateTime.valoreDateTime = adesso; - } - - public event EventHandler ev_reqUpdate; - /// - /// registro timbratura NON APPROVATA - /// - /// - /// - private void registraTimbraturaNonApp(bool isEntrata, DateTime dataOra) - { - // salvo evento entrata... - string IPv4 = ""; - bool approvata = false; // è una richiesta!!!! - if (DataProxy.idxDipendente > 0) - { - // recupero IP - IPv4 = Request.UserHostName; - DataProxy.DP.taTimb.stp_insTimbMan(DataProxy.idxDipendente, dataOra, isEntrata, IPv4, "NoTim", approvata); - logger.lg.scriviLog(string.Format("Richiesta timbratura per il dipendente:{0} in data:{1} isEntrata:{2}", DataProxy.idxDipendente, dataOra, isEntrata), tipoLog.INFO); - } - else - { - logger.lg.scriviLog("IdxDipendente non trovato! inserimento timbratura mancante impossibile", tipoLog.INFO); - } - } - /// - /// salvo richiesta - /// - /// - /// - protected void btnRichMT_Click(object sender, EventArgs e) - { - logger.lg.scriviLog("Richiesta registrazione timbratura manuale", tipoLog.INFO); - // salva una richiesta di timbratura (ovvero approvata = FALSE!!!) - DateTime richiesta = DateTime.Now; - try - { - CultureInfo ita = new CultureInfo("it-IT"); - richiesta = mod_dateTime.valoreDateTime; - bool isEntrata = Convert.ToBoolean(rblEntrata.SelectedValue); - registraTimbraturaNonApp(isEntrata, richiesta); - // aggiorno gridview - grView.DataBind(); - } - catch - { - logger.lg.scriviLog("Errore conversione datetime!"); - } - // sollevo evento - ev_reqUpdate?.Invoke(this, new EventArgs()); - } - /// - /// inverte valore booleano - /// - /// - /// - public bool invBool(object valore) - { - bool answ = true; - try - { - answ = !Convert.ToBoolean(valore); - } - catch - { } - return answ; - } - /// - /// verifica se l'utente possa approvare la modifica oraria - /// - public bool userCanApprove - { - get - { - bool answ = false; - try + protected void Page_Load(object sender, EventArgs e) { - answ = DataProxy.DP.taDip2Ruoli.getByDipRuolo(DataProxy.idxDipendente, "AppMancTimb").Rows.Count > 0; + // salvo data corrente x filtraggi... + if (!Page.IsPostBack) + { + memLayer.ML.setSessionVal("today", DateTime.Today.ToShortDateString()); + // imposto entrata + rblEntrata.SelectedIndex = 0; + presetDateTime(); + chkShowAll.Visible = userCanApprove; + } + checkFixOds(); } - catch - { } - return answ; - } - } - /// - /// calcola cognome-nome da idx - /// - /// - /// - public string cognomeNome(object idxDip) - { - string answ = ""; - try - { - DS_Applicazione.DipendentiRow rigaDip = DataProxy.DP.taDipendenti.getByIdx(Convert.ToInt32(idxDip))[0]; - answ = string.Format("{0} {1}", rigaDip.Cognome, rigaDip.Nome); - } - catch - { } - return answ; - } - /// - /// cambia tipo di visualizzaizone - /// - /// - /// - protected void chkShowAll_CheckedChanged(object sender, EventArgs e) - { - checkFixOds(); - } - /// - /// effettua fix dell'ods - /// - private void checkFixOds() - { - if (chkShowAll.Checked) - { - ods.SelectMethod = "getNonAppr"; - } - else - { - ods.SelectMethod = "getNonApprByDip"; - } - grView.DataBind(); - } - /// - /// 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 + private void presetDateTime() { - minArr = Convert.ToInt32(Math.Floor(Convert.ToDouble(minOrig / step))) * step; + // imposto valori selezionati a metà + DateTime adesso = DateTime.Now; + // arrotondo a 5 minuti... + int minuti = adesso.Minute; + adesso = adesso.AddMinutes(-minuti).AddMinutes((minuti / 5) * 5); + mod_dateTime.valoreDateTime = adesso; } - // 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; - grView.DataBind(); - // sollevo evento - ev_reqUpdate?.Invoke(this, new EventArgs()); - } - /// - /// sistemo post eliminazione - /// - /// - /// - protected void grView_RowUpdated(object sender, GridViewUpdatedEventArgs e) - { - chkShowAll.Checked = true; - checkFixOds(); - // sollevo evento - ev_reqUpdate?.Invoke(this, new EventArgs()); - } - protected void grView_RowDeleted(object sender, GridViewDeletedEventArgs e) - { - // sollevo evento - ev_reqUpdate?.Invoke(this, new EventArgs()); + public event EventHandler ev_reqUpdate; + /// + /// registro timbratura NON APPROVATA + /// + /// + /// + private void registraTimbraturaNonApp(bool isEntrata, DateTime dataOra) + { + // salvo evento entrata... + string IPv4 = ""; + bool approvata = false; // è una richiesta!!!! + if (DataProxy.idxDipendente > 0) + { + // recupero IP + IPv4 = Request.UserHostName; + DataProxy.DP.taTimb.stp_insTimbMan(DataProxy.idxDipendente, dataOra, isEntrata, IPv4, "NoTim", approvata); + logger.lg.scriviLog(string.Format("Richiesta timbratura per il dipendente:{0} in data:{1} isEntrata:{2}", DataProxy.idxDipendente, dataOra, isEntrata), tipoLog.INFO); + } + else + { + logger.lg.scriviLog("IdxDipendente non trovato! inserimento timbratura mancante impossibile", tipoLog.INFO); + } + } + /// + /// salvo richiesta + /// + /// + /// + protected void btnRichMT_Click(object sender, EventArgs e) + { + logger.lg.scriviLog("Richiesta registrazione timbratura manuale", tipoLog.INFO); + // salva una richiesta di timbratura (ovvero approvata = FALSE!!!) + DateTime richiesta = DateTime.Now; + try + { + CultureInfo ita = new CultureInfo("it-IT"); + richiesta = mod_dateTime.valoreDateTime; + bool isEntrata = Convert.ToBoolean(rblEntrata.SelectedValue); + registraTimbraturaNonApp(isEntrata, richiesta); + // aggiorno gridview + grView.DataBind(); + } + catch + { + logger.lg.scriviLog("Errore conversione datetime!"); + } + // sollevo evento + ev_reqUpdate?.Invoke(this, new EventArgs()); + } + /// + /// inverte valore booleano + /// + /// + /// + public bool invBool(object valore) + { + bool answ = true; + try + { + answ = !Convert.ToBoolean(valore); + } + catch + { } + return answ; + } + /// + /// verifica se l'utente possa approvare la modifica oraria + /// + public bool userCanApprove + { + get + { + bool answ = false; + try + { + answ = DataProxy.DP.taDip2Ruoli.getByDipRuolo(DataProxy.idxDipendente, "AppMancTimb").Rows.Count > 0; + } + catch + { } + return answ; + } + } + /// + /// calcola cognome-nome da idx + /// + /// + /// + public string cognomeNome(object idxDip) + { + string answ = ""; + int IdxDipendente = 0; + if (int.TryParse($"{idxDip}", out IdxDipendente)) + { + answ = DataProxy.DP.cognomeNomeByIdx(IdxDipendente); + } + return answ; + } + /// + /// cambia tipo di visualizzaizone + /// + /// + /// + protected void chkShowAll_CheckedChanged(object sender, EventArgs e) + { + checkFixOds(); + } + /// + /// effettua fix dell'ods + /// + private void checkFixOds() + { + if (chkShowAll.Checked) + { + ods.SelectMethod = "getNonAppr"; + } + else + { + ods.SelectMethod = "getNonApprByDip"; + } + grView.DataBind(); + } + /// + /// 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; + grView.DataBind(); + // sollevo evento + ev_reqUpdate?.Invoke(this, new EventArgs()); + } + /// + /// sistemo post eliminazione + /// + /// + /// + protected void grView_RowUpdated(object sender, GridViewUpdatedEventArgs e) + { + chkShowAll.Checked = true; + checkFixOds(); + // sollevo evento + ev_reqUpdate?.Invoke(this, new EventArgs()); + } + + protected void grView_RowDeleted(object sender, GridViewDeletedEventArgs e) + { + // sollevo evento + ev_reqUpdate?.Invoke(this, new EventArgs()); + } } - } } \ No newline at end of file diff --git a/GPW_Smart/WebUserControls/mod_sendAuthToEmail.ascx.cs b/GPW_Smart/WebUserControls/mod_sendAuthToEmail.ascx.cs index f6dfd32..26db584 100644 --- a/GPW_Smart/WebUserControls/mod_sendAuthToEmail.ascx.cs +++ b/GPW_Smart/WebUserControls/mod_sendAuthToEmail.ascx.cs @@ -37,7 +37,7 @@ namespace GPW.WebUserControls try { idxDipendente = Convert.ToInt32(ddlIdxDipendente.SelectedValue); - dipendente = DataProxy.DP.taDipendenti.getByIdx(idxDipendente)[0]; + dipendente = DataProxy.DP.getRowDip(idxDipendente); UserAuthKey = dipendente.authKey; destinatario = dipendente.email; }