diff --git a/PROJ-ETS/PROJ-ETS/WebUserControls/mod_weekPlan.ascx.cs b/PROJ-ETS/PROJ-ETS/WebUserControls/mod_weekPlan.ascx.cs index 762c379..f9aa0a0 100644 --- a/PROJ-ETS/PROJ-ETS/WebUserControls/mod_weekPlan.ascx.cs +++ b/PROJ-ETS/PROJ-ETS/WebUserControls/mod_weekPlan.ascx.cs @@ -6,6 +6,7 @@ using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using ETS_Data; +using Newtonsoft.Json; using NLog; namespace PROJ_ETS.WebUserControls @@ -55,6 +56,8 @@ namespace PROJ_ETS.WebUserControls protected ETS_Data.Type.BazaarRes[,] TabellaRisorse; + protected string userLockTable = utils.obj.redHash("LOCK:UserLockTable"); + /// /// String x veto udpate tabella (ridisegno) /// @@ -353,6 +356,7 @@ namespace PROJ_ETS.WebUserControls } // metto prima riga con indicazione valori NUMERICI delle colonne setupRigaDip(false); + // ciclo nel mio array e creo di conseguenza le celle di tabella for (int pos_y = numComm - 1; pos_y >= 0; pos_y--) { @@ -431,6 +435,7 @@ namespace PROJ_ETS.WebUserControls cell = setupCellaComm(pos_y, riga, true); tblBlocco.Rows.Add(riga); } + // metto ultima riga con indicazione valori NUMERICI del totale ore x dipendente setupRigaDip(true); } @@ -470,6 +475,9 @@ namespace PROJ_ETS.WebUserControls IdxFaseSel = Convert.ToInt32(valori[1]); // blocco dip! DataProxy_ProjEts.DP.taTLB.lockDip(IdxDipSel, user_std.UtSn.NomeCognome); + // resetto in redis tabella + utils.obj.setRSV(userLockTable, "", 1); + // continuo rigaBaz = (Ds_ProjEts.BazaarRisorseRow)tabBaz.Select(string.Format("idxDipendente={0} AND idxFase={1}", IdxDipSel, IdxFaseSel))[0]; rigaDip = (Ds_ProjEts.DipendentiRow)tabDip.Select(string.Format("idxDipendente={0}", IdxDipSel))[0]; @@ -976,7 +984,31 @@ namespace PROJ_ETS.WebUserControls /// protected bool userIsLocked(int IdxDipendente) { - return DataProxy_ProjEts.DP.taTLB.getByDip(IdxDipendente).Rows.Count > 0; + bool answ = false; + Ds_ProjEts.TLockBazRADataTable tabDati = null; + // cerco in cache + var rawData = utils.obj.getRSV(userLockTable); + if (!string.IsNullOrEmpty(rawData)) + { + tabDati = JsonConvert.DeserializeObject(rawData); + } + // sennĂ² leggo da DB + else + { + tabDati = DataProxy_ProjEts.DP.taTLB.GetData(); + rawData = JsonConvert.SerializeObject(tabDati); + utils.obj.setRSV(userLockTable, rawData, 10); + } + + if (tabDati != null && tabDati.Count > 0) + { + answ = tabDati + .Where(x => x.idxDipendente == IdxDipendente) + .Count() > 0; + } + return answ; + //cerco il lock nella tab... + //return DataProxy_ProjEts.DP.taTLB.getByDip(IdxDipendente).Rows.Count > 0; } #endregion Protected Methods @@ -991,31 +1023,14 @@ namespace PROJ_ETS.WebUserControls string rawData = utils.obj.getRSV(vetoUpdate); if (string.IsNullOrEmpty(rawData)) { - TimeSpan ts; - stopWatch.Restart(); - setBtnStatus(); - stopWatch.Stop(); - ts = stopWatch.Elapsed; - lg.Info($"doUpdate: 01-setBtnStatus in {ts.TotalMilliseconds} ms"); - - stopWatch.Restart(); - caricaDatiBlocco(); - stopWatch.Stop(); - ts = stopWatch.Elapsed; - lg.Info($"doUpdate: 02-caricaDatiBlocco in {ts.TotalMilliseconds} ms"); - - stopWatch.Restart(); disegnaTabella(); - stopWatch.Stop(); - ts = stopWatch.Elapsed; - lg.Info($"doUpdate: 03-disegnaTabella in {ts.TotalMilliseconds} ms"); - // salvo veto ridisegno x 3 sec... - utils.obj.setRSV(vetoUpdate, $"LAST disegnaTabella in {ts.TotalMilliseconds} ms", 35); + // salvo veto ridisegno x 10 sec... + utils.obj.setRSV(vetoUpdate, $"VETO doUpdate", 5); } } diff --git a/PROJ-ETS/PROJ-ETS/bin/PROJ-ETS.dll b/PROJ-ETS/PROJ-ETS/bin/PROJ-ETS.dll index 59fde3f..dcd6f98 100644 Binary files a/PROJ-ETS/PROJ-ETS/bin/PROJ-ETS.dll and b/PROJ-ETS/PROJ-ETS/bin/PROJ-ETS.dll differ