update modelli e metodi x novi campi LockBy
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -18,6 +19,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
|
||||
public ProdController()
|
||||
{
|
||||
Log.Info("ProdController istance Started");
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
@@ -27,10 +29,11 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// <summary>
|
||||
/// Aggiunta di un PROJ ad un PROD
|
||||
/// </summary>
|
||||
/// <param name="ProdId"></param>
|
||||
/// <param name="ProjId"></param>
|
||||
/// <param name="ProdId">ID Prod</param>
|
||||
/// <param name="ProjId">ID Proj</param>
|
||||
/// <param name="UserKey">User ID / Key number</param>
|
||||
/// <returns></returns>
|
||||
public bool AddProj(int ProdId, int ProjId)
|
||||
public bool AddProj(int ProdId, int ProjId, string UserKey = "USER01")
|
||||
{
|
||||
bool done = false;
|
||||
|
||||
@@ -51,6 +54,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// lo aggiorno
|
||||
currProj.ProdDbId = currProd.ProdDbId;
|
||||
currProj.Locked = true;
|
||||
currProj.LockDate = DateTime.Now;
|
||||
currProj.LockedBy = UserKey;
|
||||
|
||||
// salvo
|
||||
localDbCtx.SaveChanges();
|
||||
@@ -190,9 +195,10 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// <summary>
|
||||
/// Fornisce nuovo indice VUOTO da usare (allocando sul DB)
|
||||
/// </summary>
|
||||
/// <param name="ProjId"></param>
|
||||
/// <param name="ProjId">ID Proj</param>
|
||||
/// <param name="UserKey">User ID / Key number</param>
|
||||
/// <returns></returns>
|
||||
public int GetNextIndex(int ProjId)
|
||||
public int GetNextIndex(int ProjId, string UserKey = "USER01")
|
||||
{
|
||||
int nextId = 0;
|
||||
|
||||
@@ -230,6 +236,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// aggiungo proj-prod
|
||||
currProj.ProdDbId = newProd.ProdDbId;
|
||||
currProj.Locked = true;
|
||||
currProj.LockDate = DateTime.Now;
|
||||
currProj.LockedBy = UserKey;
|
||||
|
||||
// Commit changes
|
||||
localDbCtx.SaveChanges();
|
||||
@@ -257,8 +265,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
return numAssigned > 0;
|
||||
}
|
||||
|
||||
/// <summary> Return Lock by ProdId (proj & prod) </summary> <param
|
||||
/// name="ProdId">ProjID</param> <returns></returns>
|
||||
/// <summary> Return Lock by ProdId (proj & prod) </summary> <param name="ProdId"></param> <returns></returns>
|
||||
public bool IsLockByProdId(int ProdId)
|
||||
{
|
||||
bool bIsLock = false;
|
||||
@@ -288,9 +295,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
return bIsLock;
|
||||
}
|
||||
|
||||
/// <summary> Manage Lock by ProdId (proj & prod) </summary> <param
|
||||
/// name="ProdId">ProjID</param> <param name="Locked">Stato Lock da impostare</param> <returns></returns>
|
||||
public ProdModel LockByProdId(int ProdId, bool Locked)
|
||||
/// <summary>
|
||||
/// Manage Lock by ProdId (proj & prod)
|
||||
/// </summary>
|
||||
/// <param name="ProdId"></param>
|
||||
/// <param name="Locked">Stato Lock da impostare</param>
|
||||
/// <param name="UserKey">User ID / Key number</param>
|
||||
/// <returns></returns>
|
||||
public ProdModel LockByProdId(int ProdId, bool Locked, string UserKey = "USER01")
|
||||
{
|
||||
ProdModel currProd;
|
||||
// seleziono il prod...
|
||||
@@ -304,6 +316,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
if (currProd != null)
|
||||
{
|
||||
currProd.Locked = Locked;
|
||||
currProd.LockDate = DateTime.Now;
|
||||
currProd.LockedBy = Locked ? UserKey : "";
|
||||
localDbCtx.Entry(currProd).State = System.Data.Entity.EntityState.Modified;
|
||||
|
||||
var currProj = localDbCtx
|
||||
@@ -315,6 +329,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
foreach (var item in currProj)
|
||||
{
|
||||
item.Locked = Locked;
|
||||
item.LockDate = DateTime.Now;
|
||||
item.LockedBy = Locked ? UserKey : "";
|
||||
localDbCtx.Entry(item).State = System.Data.Entity.EntityState.Modified;
|
||||
}
|
||||
}
|
||||
@@ -553,6 +569,40 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
return coreConv(currData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return User Code/Key that Locks by ProdId (proj & prod)
|
||||
/// </summary>
|
||||
/// <param name="ProdId"></param>
|
||||
/// <returns></returns>
|
||||
public string UserLockByProdId(int ProdId)
|
||||
{
|
||||
string LockBy = "";
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
// seleziono il prod...
|
||||
var currProd = localDbCtx
|
||||
.ProdList
|
||||
.Where(x => x.ProdId == ProdId)
|
||||
.FirstOrDefault();
|
||||
|
||||
if (currProd != null)
|
||||
{
|
||||
LockBy = currProd.LockedBy;
|
||||
|
||||
var currProj = localDbCtx
|
||||
.ProjList
|
||||
.Where(x => x.ProdDbId == currProd.ProdDbId)
|
||||
.ToList();
|
||||
|
||||
if (currProj != null && string.IsNullOrEmpty(LockBy))
|
||||
{
|
||||
LockBy = currProj.FirstOrDefault(x => !string.IsNullOrEmpty(x.LockedBy)).LockedBy;
|
||||
}
|
||||
}
|
||||
}
|
||||
return LockBy;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Methods
|
||||
@@ -603,7 +653,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// <summary>
|
||||
/// Istanza logger
|
||||
/// </summary>
|
||||
private NLog.Logger Log;
|
||||
private NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
#endregion Private Fields
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
{
|
||||
public class ProjController : IDisposable
|
||||
{
|
||||
|
||||
#region Public Constructors
|
||||
|
||||
public ProjController()
|
||||
@@ -20,7 +21,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
|
||||
/// <summary>
|
||||
/// Search for already imported BTL from FileName (only)
|
||||
/// =0 : NOT found >0 : ProjId (already rpesent) for overwrite
|
||||
/// =0 : NOT found
|
||||
/// >0 : ProjId (already present) for overwrite
|
||||
/// </summary>
|
||||
/// <param name="BTLFileName"></param>
|
||||
/// <returns></returns>
|
||||
@@ -42,7 +44,11 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Delete Proj on DB by ProjId
|
||||
/// </summary>
|
||||
/// <param name="ProjId"></param>
|
||||
/// <returns></returns>
|
||||
public bool DeleteProj(int ProjId)
|
||||
{
|
||||
bool done = false;
|
||||
@@ -302,8 +308,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// <summary>
|
||||
/// Fornisce nuovo indice VUOTO da usare (allocando sul DB)
|
||||
/// </summary>
|
||||
/// <param name="UserKey">User ID / Key number</param>
|
||||
/// <returns></returns>
|
||||
public int GetNextIndex()
|
||||
public int GetNextIndex(string UserKey = "USER01")
|
||||
{
|
||||
int nextId = 0;
|
||||
|
||||
@@ -330,7 +337,16 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// creo nuovo...
|
||||
var newRec = localDbCtx
|
||||
.ProjList
|
||||
.Add(new ProjModel() { ProjId = nextId, BTLFileName = "", IsNew = true, Locked = true, DtCreated = DateTime.Now });
|
||||
.Add(new ProjModel()
|
||||
{
|
||||
ProjId = nextId,
|
||||
BTLFileName = "",
|
||||
IsNew = true,
|
||||
Locked = true,
|
||||
LockedBy = UserKey,
|
||||
LockDate = DateTime.Now,
|
||||
DtCreated = DateTime.Now
|
||||
});
|
||||
|
||||
// Commit changes
|
||||
localDbCtx.SaveChanges();
|
||||
@@ -338,9 +354,14 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
return nextId;
|
||||
}
|
||||
|
||||
/// <summary> Manage Lock by ProjId (proj & prod) </summary> <param
|
||||
/// name="ProjId">ProjID</param> <param name="Locked">Stato Lock da impostare</param> <returns></returns>
|
||||
public Core.ProjFileM LockByProjId(int ProjId, bool Locked)
|
||||
/// <summary>
|
||||
/// Manage Lock by ProjId (proj & prod)
|
||||
/// </summary>
|
||||
/// <param name="ProjId">ID Proj</param>
|
||||
/// <param name="Locked">Stato Lock da impostare</param>
|
||||
/// <param name="UserKey">User ID / Key number</param>
|
||||
/// <returns></returns>
|
||||
public Core.ProjFileM LockByProjId(int ProjId, bool Locked, string UserKey = "USER01")
|
||||
{
|
||||
ProjModel currProj;
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
@@ -351,6 +372,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
.SingleOrDefault();
|
||||
// aggiorno stato del proj
|
||||
currProj.Locked = Locked;
|
||||
currProj.LockDate = DateTime.Now;
|
||||
currProj.LockedBy = Locked ? UserKey : "";
|
||||
localDbCtx.Entry(currProj).State = System.Data.Entity.EntityState.Modified;
|
||||
|
||||
// seleziono il prod e lo blocco...
|
||||
@@ -363,6 +386,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
{
|
||||
// blocco prod corrente
|
||||
currProd.Locked = Locked;
|
||||
currProd.LockDate = DateTime.Now;
|
||||
currProd.LockedBy = Locked ? UserKey : "";
|
||||
localDbCtx.Entry(currProd).State = System.Data.Entity.EntityState.Modified;
|
||||
|
||||
// ora blocco altri proj del prod...
|
||||
@@ -376,6 +401,8 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
{
|
||||
//item.ProdDbId = currProd.ProdDbId;
|
||||
item.Locked = Locked;
|
||||
item.LockDate = DateTime.Now;
|
||||
item.LockedBy = Locked ? UserKey : "";
|
||||
localDbCtx.Entry(item).State = System.Data.Entity.EntityState.Modified;
|
||||
}
|
||||
}
|
||||
@@ -726,5 +753,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
private NLog.Logger Log;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
}
|
||||
}
|
||||
@@ -32,11 +32,23 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
|
||||
public bool IsNew { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Stato locked (quando aperto da un dispositivo in rete)
|
||||
/// Stato locked, quando aperto da un dispositivo in rete
|
||||
/// </summary>
|
||||
[Column("Lock")]
|
||||
public bool Locked { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// ID utente che ha bloccato (NumKey), quando aperto da un dispositivo in rete
|
||||
/// </summary>
|
||||
[Column("LockedBy")]
|
||||
public string LockedBy { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// DataOra ultima operazione di Lock (o di rimozione di lock), quando aperto da un dispositivo in rete
|
||||
/// </summary>
|
||||
[Column("LockDate")]
|
||||
public DateTime LockDate { get; set; } = DateTime.MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Macchina
|
||||
/// </summary>
|
||||
|
||||
@@ -49,6 +49,18 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
|
||||
[Column("Lock")]
|
||||
public bool Locked { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// ID utente che ha bloccato (NumKey), quando aperto da un dispositivo in rete
|
||||
/// </summary>
|
||||
[Column("LockedBy")]
|
||||
public string LockedBy { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// DataOra ultima operazione di Lock (o di rimozione di lock), quando aperto da un dispositivo in rete
|
||||
/// </summary>
|
||||
[Column("LockDate")]
|
||||
public DateTime LockDate { get; set; } = DateTime.MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Macchina
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user