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