Fix comportamento lock creando prod

This commit is contained in:
Samuele Locatelli
2021-05-13 11:24:08 +02:00
parent 5b29302b93
commit e5695049fe
@@ -30,133 +30,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
#endregion Public Constructors
#if false
/// <summary>
/// Create record on DB
/// </summary>
/// <param name="newProdId"></param>
/// <param name="Description"></param>
/// <returns></returns>
public ProdModel Create(int newProdId, string Description)
{
ProdModel newProd = new ProdModel() { ProdId = newProdId, Description = Description };
try
{
// Add to database
dbCtx.ProdList.Add(newProd);
// Commit changes
dbCtx.SaveChanges();
}
catch
{ }
return newProd;
}
/// <summary>
/// Get paginated data from DB (ASC ordered)
/// </summary>
/// <param name="ProdDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<ProdModel> GetPaginatedAsc(int ProdDbIdStart, int numRecord)
{
int numEnd = ProdDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.ProdList
.Where(x => x.ProdDbId <= ProdDbIdStart)
.OrderBy(x => x.ProdDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Get paginated data from DB (DESC ordered)
/// </summary>
/// <param name="PartDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<ProdModel> GetPaginatedDesc(int PartDbIdStart, int numRecord)
{
int numEnd = PartDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.ProdList
.Where(x => x.ProdDbId <= PartDbIdStart)
.OrderByDescending(x => x.ProdDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Get filtered data by ProdectId (ASC ordered)
/// </summary>
/// <param name="ProdDbId"></param>
/// <returns></returns>
public List<ProdModel> GetByProdAsc(int ProdDbId)
{
// retrieve
return dbCtx
.ProdList
.Where(x => x.ProdDbId == ProdDbId)
.OrderBy(x => x.ProdDbId)
.ToList();
}
/// <summary>
/// Get filtered data by ProdectId (DESC ordered)
/// </summary>
/// <param name="ProdDbId"></param>
/// <returns></returns>
public List<ProdModel> GetByProdDesc(int ProdDbId)
{
// retrieve
return dbCtx
.ProdList
.Where(x => x.ProdDbId == ProdDbId)
.OrderByDescending(x => x.ProdDbId)
.ToList();
}
/// <summary>
/// Get record by RawPartDbId
/// </summary>
/// <param name="RawPartDbId"></param>
/// <returns></returns>
public ProdModel FindByRawPartDbId(int RawPartDbId)
{
var rawPart = dbCtx
.RawPartList
.Where(x => x.RawPartDbId == RawPartDbId)
.SingleOrDefault();
return FindByProdDbId(rawPart.ProdDbId);
}
/// <summary>
/// Get record by RawPartId
/// </summary>
/// <param name="RawPartId "></param>
/// <returns></returns>
public ProdModel FindByRawPartId(int RawPartId)
{
var rawPart = dbCtx
.RawPartList
.Where(x => x.RawPartId == RawPartId)
.SingleOrDefault();
return FindByProdDbId(rawPart.ProdDbId);
}
#endif
#region Protected Methods
/// <summary>
@@ -212,6 +85,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
// lo aggiorno
currProj.ProjDbId = currProd.ProdDbId;
currProj.Locked = true;
// salvo
dbCtx.SaveChanges();
@@ -344,6 +218,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
// aggiungo proj-prod
currProj.ProdDbId = newProd.ProdDbId;
currProj.Locked = true;
// Commit changes
dbCtx.SaveChanges();
@@ -522,72 +397,5 @@ namespace EgtBEAMWALL.DataLayer.Controllers
}
#endregion Public Methods
#if false
/// <summary>
/// Update record su DB x elenco MachGroupDB
/// </summary>
/// <param name="ProdId">Id del Prod</param>
/// <param name="MachGroupList">Elenco MachGroup da associare</param>
/// <returns></returns>
public ProdModel UpdateMachGroupDB(int ProdId, List<MachGroupModel> itemsMG2add, List<PartModel> PartList2Add)
{
// qui salvo i valori da eliminare
List<PartModel> PartList2Del = new List<PartModel>();
// Recupero il PROD
ProdModel currData = FindByProdId(ProdId);
// sel delle BTLParts da proj
var itemsMG2del = dbCtx
.MachGroupList
.Where(x => x.ProdDbId == currData.ProdDbId).ToList();
try
{
// per ogni itemsMG2del rimuovo Part
foreach (var item in itemsMG2del)
{
var items2del = dbCtx
.PartList
.Where(x => x.MachGroupDbId == item.MachGroupDbId);
PartList2Del.AddRange(items2del);
}
if (PartList2Del.Count > 0)
{
// remove from database
dbCtx.PartList.RemoveRange(PartList2Del);
// Commit changes
dbCtx.SaveChanges();
}
// elimino dal DB i MG
dbCtx.MachGroupList.RemoveRange(itemsMG2del);
// Commit changes
dbCtx.SaveChanges();
// aggiungo le nuove
dbCtx.MachGroupList.AddRange(itemsMG2add);
// Commit changes
dbCtx.SaveChanges();
// aggiungo Parts
dbCtx.PartList.AddRange(PartList2Add);
// aggiorno valore isNew a false
currData.IsNew = false;
// Commit changes
dbCtx.SaveChanges();
}
catch (Exception exc)
{
Console.WriteLine($"EXCEPTION on UpdateMachGroup: {exc}");
}
return currData;
}
#endif
}
}