diff --git a/MagMan.Data.Tenant/Controllers/TenantController.cs b/MagMan.Data.Tenant/Controllers/TenantController.cs
index c51e9bb..f5cacac 100644
--- a/MagMan.Data.Tenant/Controllers/TenantController.cs
+++ b/MagMan.Data.Tenant/Controllers/TenantController.cs
@@ -62,9 +62,15 @@ namespace MagMan.Data.Tenant.Controllers
.FirstOrDefault();
if (currData != null)
{
- dbCtx
- .DbSetItems
- .Remove(currData);
+ //dbCtx
+ // .DbSetItems
+ // .Remove(currData);
+
+ // non vera eliminazione ma logica...
+ currData.IsActive = false;
+ // registro modifica RawItem
+ dbCtx.Entry(currData).State = EntityState.Modified;
+
dbCtx.SaveChanges();
done = true;
}
@@ -77,18 +83,44 @@ namespace MagMan.Data.Tenant.Controllers
return done;
}
+ ///
+ /// Converte il DTO in ItemModel
+ ///
+ /// DTO di partenza
+ /// Parametro active da impostare
+ ///
+ public RawItemModel ItemFromDto(ItemDTO origItem, bool isActive)
+ {
+ RawItemModel answ = new RawItemModel()
+ {
+ MatId = origItem.MatCloudId,
+ IsRemn = origItem.IsRemn,
+ Location = origItem.Location,
+ QtyAvail = origItem.QtyAvail,
+ HMm = origItem.HMm,
+ LMm = origItem.LMm,
+ WMm = origItem.WMm,
+ Note = origItem.Note,
+ IsActive = isActive
+ };
+
+ return answ;
+ }
+
///
/// Elenco Items gestiti a magazzino (all)
///
/// Stringa connessione (variabile x cliente)
+ /// Solo attivi (default) o anche cancellati
///
- public List ItemGetAll(string connString)
+ public List ItemGetAll(string connString, bool onlyActive = true)
{
List dbResult = new List();
using (MagManContext dbCtx = new MagManContext(connString))
{
dbResult = dbCtx
.DbSetItems
+ .Where(x => x.IsActive || !onlyActive)
.Include(c => c.MaterialNav)
.OrderBy(x => x.MatId)
.ToList();
@@ -101,17 +133,17 @@ namespace MagMan.Data.Tenant.Controllers
///
/// Stringa connessione (variabile x cliente)
/// ID del materiale x cui filtrare, 0 = tutti
+ /// Solo attivi (default) o anche cancellati
///
- public List ItemGetByMat(string connString, int matID)
+ public List ItemGetByMat(string connString, int matID, bool onlyActive = true)
{
List dbResult = new List();
using (MagManContext dbCtx = new MagManContext(connString))
{
dbResult = dbCtx
.DbSetItems
- .Where(x => matID == 0 || x.MatId == matID)
+ .Where(x => (matID == 0 || x.MatId == matID) && (x.IsActive || !onlyActive))
.Include(c => c.MaterialNav)
- //.OrderBy(x => x.MatCloudId)
.OrderBy(x => x.WMm)
.ThenBy(x => x.HMm)
.ThenBy(x => x.LMm)
@@ -146,16 +178,12 @@ namespace MagMan.Data.Tenant.Controllers
return dbResult;
}
- ///
- /// Aggiunge/Modifica un item in magazzino
- ///
- /// Stringa connessione (variabile x cliente)
- /// Record da aggiornare
- /// quantità da aggiornare (se <0 è consumo)
- /// User corrente (SE applicabile)
- /// Messaggio registrato x variazione positiva
- /// Messaggio registrato x variazione negativa
- ///
+ /// Aggiunge/Modifica un item in magazzino Stringa connessione (variabile x cliente) Record da aggiornare quantità da
+ /// aggiornare (se <0 è consumo) User corrente (SE
+ /// applicabile) Messaggio registrato x variazione
+ /// positiva Messaggio registrato x variazione negativa
public bool ItemModQty(string connString, RawItemModel rec2upd, int deltaQty, string userId, string msgAdd, string msgRem)
{
bool done = false;
@@ -206,6 +234,41 @@ namespace MagMan.Data.Tenant.Controllers
return done;
}
+ ///
+ /// Converte lista ItemModel in DTO
+ ///
+ /// Elenco ItemModel di partenza
+ ///
+ public List ItemsToDto(List origItem)
+ {
+ List answ = answ = origItem.Select(x => ItemToDto(x)).ToList();
+ return answ;
+ }
+
+ ///
+ /// Converte ItemModel in DTO
+ ///
+ /// ItemModel di partenza
+ ///
+ public ItemDTO ItemToDto(RawItemModel origItem)
+ {
+ ItemDTO answ = new ItemDTO()
+ {
+ MatCloudId = origItem.MatId,
+ RawItemCloudId = origItem.RawItemId,
+ IsRemn = origItem.IsRemn,
+ Location = origItem.Location,
+ QtyAvail = origItem.QtyAvail,
+ HMm = origItem.HMm,
+ LMm = origItem.LMm,
+ WMm = origItem.WMm,
+ Note = origItem.Note,
+ ItemDtmx = origItem.ItemDtmx
+ };
+
+ return answ;
+ }
+
///
/// Aggiunge/Modifica un item in magazzino
///
@@ -261,6 +324,9 @@ namespace MagMan.Data.Tenant.Controllers
}
else
{
+ // levo il matNav...
+ dbCtx.Entry(rec2upd.MaterialNav).State = EntityState.Unchanged;
+ //rec2upd.MaterialNav = new MaterialModel();
dbCtx
.DbSetItems
.Add(rec2upd);
@@ -346,8 +412,8 @@ namespace MagMan.Data.Tenant.Controllers
HMm = x.HMm,
LMm = x.LMm,
WMm = x.WMm,
- SizeNum = x.RawItemList == null ? 0 : x.RawItemList.Count,
- QtyTot = x.RawItemList == null ? 0 : x.RawItemList.Sum(r => r.QtyAvail),
+ SizeNum = x.RawItemList == null ? 0 : x.RawItemList.Where(x => x.IsActive).Count(),
+ QtyTot = x.RawItemList == null ? 0 : x.RawItemList.Where(x => x.IsActive).Sum(r => r.QtyAvail),
MatDtmx = x.MatDtmx,
IsBeam = x.IsBeam,
IsWall = x.IsWall,
@@ -406,64 +472,6 @@ namespace MagMan.Data.Tenant.Controllers
return dbResult;
}
- ///
- /// Converte il DTO in ItemModel
- ///
- /// DTO di partenza
- /// Parametro active da impostare
- ///
- public RawItemModel ItemFromDto(ItemDTO origItem, bool isActive)
- {
- RawItemModel answ = new RawItemModel()
- {
- MatId = origItem.MatCloudId,
- IsRemn = origItem.IsRemn,
- Location = origItem.Location,
- QtyAvail = origItem.QtyAvail,
- HMm = origItem.HMm,
- LMm = origItem.LMm,
- WMm = origItem.WMm,
- Note = origItem.Note,
- IsActive = isActive
- };
-
- return answ;
- }
-
- ///
- /// Converte ItemModel in DTO
- ///
- /// ItemModel di partenza
- ///
- public ItemDTO ItemToDto(RawItemModel origItem)
- {
- ItemDTO answ = new ItemDTO()
- {
- MatCloudId = origItem.MatId,
- RawItemCloudId = origItem.RawItemId,
- IsRemn = origItem.IsRemn,
- Location = origItem.Location,
- QtyAvail = origItem.QtyAvail,
- HMm = origItem.HMm,
- LMm = origItem.LMm,
- WMm = origItem.WMm,
- Note = origItem.Note,
- ItemDtmx = origItem.ItemDtmx
- };
-
- return answ;
- }
- ///
- /// Converte lista ItemModel in DTO
- ///
- /// Elenco ItemModel di partenza
- ///
- public List ItemsToDto(List origItem)
- {
- List answ = answ = origItem.Select(x => ItemToDto(x)).ToList();
- return answ;
- }
-
///
/// Elenco Materiali gestiti a magazzino
///
diff --git a/MagMan.Data.Tenant/DbModels/RawItemModel.cs b/MagMan.Data.Tenant/DbModels/RawItemModel.cs
index 9063b23..685ec13 100644
--- a/MagMan.Data.Tenant/DbModels/RawItemModel.cs
+++ b/MagMan.Data.Tenant/DbModels/RawItemModel.cs
@@ -32,7 +32,7 @@ namespace MagMan.Data.Tenant.DbModels
public int QtyAvail { get; set; } = 0;
///
- /// Check if is a Remnant
+ /// Active, for logical delete...
///
public bool IsActive { get; set; } = false;
diff --git a/MagMan.Data.Tenant/Services/TenantService.cs b/MagMan.Data.Tenant/Services/TenantService.cs
index 8365b71..912b8c3 100644
--- a/MagMan.Data.Tenant/Services/TenantService.cs
+++ b/MagMan.Data.Tenant/Services/TenantService.cs
@@ -160,15 +160,17 @@ namespace MagMan.Data.Tenant.Services
///
/// Key di riferimento
/// ID del materiale x cui filtrare, 0 = tutti
+ /// Solo attivi (default) o anche cancellati
///
- public async Task> ItemGetByMat(int nKey, int matID)
+ public async Task> ItemGetByMat(int nKey, int matID, bool onlyActive)
{
string source = "DB";
string cString = ConnString(nKey);
List? dbResult = new List();
try
{
- string currKey = $"{Const.rKeyConfig}:{nKey}:ItemList:{matID}";
+ string keyAct = onlyActive ? "ACT" : "ALL";
+ string currKey = $"{Const.rKeyConfig}:{nKey}:ItemList:{matID}:{keyAct}";
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
string? rawData = await redisDb.StringGetAsync(currKey);
@@ -187,7 +189,7 @@ namespace MagMan.Data.Tenant.Services
}
else
{
- dbResult = dbController.ItemGetByMat(cString, matID);
+ dbResult = dbController.ItemGetByMat(cString, matID, onlyActive);
rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
await redisDb.StringSetAsync(currKey, rawData, LongCache);
}
diff --git a/MagMan.UI/Components/ItemMan.razor b/MagMan.UI/Components/ItemMan.razor
index d5e11cd..c72bb81 100644
--- a/MagMan.UI/Components/ItemMan.razor
+++ b/MagMan.UI/Components/ItemMan.razor
@@ -1,10 +1,20 @@