fix proj con ProdId calcolato, bozza update PROD (MachGroup)

This commit is contained in:
Samuele E. Locatelli
2021-03-05 18:26:58 +01:00
parent 132267b118
commit b60ab0a7d2
6 changed files with 355 additions and 232 deletions
@@ -8,141 +8,89 @@ namespace EgtBEAMWALL.DataLayer.Controllers
{
public class BTLPartController : IDisposable
{
#region Private Fields
private DatabaseContext dbCtx;
#endregion Private Fields
#region Public Constructors
public BTLPartController()
{
// Initialize database context
dbCtx = new DatabaseContext();
}
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
/// <summary>
/// Get record by DBId
/// </summary>
/// <param name="PartDbId"></param>
/// <returns></returns>
public BTLPartModel FindByDbId(int PartDbId)
{
return dbCtx
.BTLPartList
.Where(x => x.PartDbId == PartDbId)
.SingleOrDefault();
}
/// <summary>
/// Get record by ExtId
/// </summary>
/// <param name="PartId"></param>
/// <returns></returns>
public BTLPartModel FindByPartId(int PartId)
{
return dbCtx
.BTLPartList
.Where(x => x.PartId == PartId)
.SingleOrDefault();
}
/// <summary>
/// Get paginated data from DB (ASC ordered)
/// </summary>
/// <param name="PartDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<BTLPartModel> GetPaginatedAsc(int PartDbIdStart, int numRecord)
{
int numEnd = PartDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.BTLPartList
.Where(x => x.PartDbId <= PartDbIdStart)
.OrderBy(x => x.PartDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Get paginated data from DB (DESC ordered)
/// </summary>
/// <param name="PartDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<BTLPartModel> GetPaginatedDesc(int PartDbIdStart, int numRecord)
{
int numEnd = PartDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.BTLPartList
.Where(x => x.PartDbId <= PartDbIdStart)
.OrderByDescending(x => x.PartDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Get filtered data by ProjectId (ASC ordered)
/// </summary>
/// <param name="ProjDbId"></param>
/// <returns></returns>
public List<BTLPartModel> GetByProjectAsc(int ProjDbId)
{
// retrieve
return dbCtx
.BTLPartList
.Where(x => x.ProjDbId == ProjDbId)
.OrderBy(x => x.PartDbId)
.ToList();
}
/// <summary>
/// Get filtered data by ProjectId (DESC ordered)
/// </summary>
/// <param name="ProjDbId"></param>
/// <returns></returns>
public List<BTLPartModel> GetByProjectDesc(int ProjDbId)
{
// retrieve
return dbCtx
.BTLPartList
.Where(x => x.ProjDbId == ProjDbId)
.OrderByDescending(x => x.PartDbId)
.ToList();
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Create multiple (empty) BTLPart record associated to Project
/// Conversion of base class to DB model class
/// </summary>
/// <param name="ProjDbId"></param>
/// <param name="rawListData"></param>
/// <param name="corePart"></param>
/// <param name="currProjDbId"></param>
/// <returns></returns>
public List<BTLPartModel> CreateBaseObj(int ProjDbId, List<int> rawListData)
public static BTLPartModel ConvertFromCore(Core.BTLPart corePart, int currProjDbId)
{
List<BTLPartModel> partData = new List<BTLPartModel>();
foreach (var item in rawListData)
BTLPartModel answ = new BTLPartModel();
if (corePart != null)
{
BTLPartModel newItem = new BTLPartModel() { ProjDbId = ProjDbId, PartId = item };
partData.Add(newItem);
answ = new BTLPartModel()
{
PartId = corePart.nPartId,
PDN = corePart.nPDN,
DO = corePart.bDO,
NAM = corePart.sNAM,
W = corePart.dW,
L = corePart.dL,
H = corePart.dH,
MAT = corePart.sMATERIAL,
CNT = corePart.nCNT,
TBP = corePart.nTBP,
DON = corePart.nDON,
ROT = corePart.nROT,
GRP = corePart.sGRP,
UNT = corePart.nUNT,
CALC_State = (int)corePart.nState,
ProjDbId = currProjDbId
};
}
try
{
// Add to database
dbCtx.BTLPartList.AddRange(partData);
// Commit changes
dbCtx.SaveChanges();
}
catch
{ }
return partData;
return answ;
}
/// <summary>
/// Conversion of base class to DB model class
/// </summary>
/// <param name="corePart"></param>
/// <returns></returns>
public BTLPartModel Convert(Core.BTLPart corePart)
{
BTLPartModel answ = new BTLPartModel();
if (corePart != null)
{
answ = new BTLPartModel()
{
PartId = corePart.nPartId,
PDN = corePart.nPDN,
DO = corePart.bDO,
NAM = corePart.sNAM,
W = corePart.dW,
L = corePart.dL,
H = corePart.dH,
MAT = corePart.sMATERIAL,
CNT = corePart.nCNT,
TBP = corePart.nTBP,
DON = corePart.nDON,
ROT = corePart.nROT,
GRP = corePart.sGRP,
UNT = corePart.nUNT,
CALC_State = (int)corePart.nState
};
}
return answ;
}
/// <summary>
/// Create multiple BTLPart record associated to Project
@@ -179,7 +127,189 @@ namespace EgtBEAMWALL.DataLayer.Controllers
}
/// <summary>
/// Update single BTLPart
/// Create multiple (empty) BTLPart record associated to Project
/// </summary>
/// <param name="ProjDbId"></param>
/// <param name="rawListData"></param>
/// <returns></returns>
public List<BTLPartModel> CreateBaseObj(int ProjDbId, List<int> rawListData)
{
List<BTLPartModel> partData = new List<BTLPartModel>();
foreach (var item in rawListData)
{
BTLPartModel newItem = new BTLPartModel() { ProjDbId = ProjDbId, PartId = item };
partData.Add(newItem);
}
try
{
// Add to database
dbCtx.BTLPartList.AddRange(partData);
// Commit changes
dbCtx.SaveChanges();
}
catch
{ }
return partData;
}
/// <summary>
/// Delete single BTLPart
/// </summary>
/// <param name="PartDbId"></param>
/// <returns></returns>
public bool Delete(int PartDbId)
{
bool done = false;
var item2del = dbCtx
.BTLPartList
.Where(x => x.PartDbId == PartDbId)
.SingleOrDefault();
try
{
// Add to database
dbCtx.BTLPartList.Remove(item2del);
// Commit changes
dbCtx.SaveChanges();
done = true;
}
catch
{ }
return done;
}
/// <summary>
/// Delete BTLPart by project
/// </summary>
/// <param name="ProjDbId"></param>
/// <returns></returns>
public bool DeleteByProject(int ProjDbId)
{
bool done = false;
var items2del = dbCtx
.BTLPartList
.Where(x => x.ProjDbId == ProjDbId);
try
{
// Add to database
dbCtx.BTLPartList.RemoveRange(items2del);
// Commit changes
dbCtx.SaveChanges();
done = true;
}
catch
{ }
return done;
}
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
/// <summary>
/// Get record by DBId
/// </summary>
/// <param name="PartDbId"></param>
/// <returns></returns>
public BTLPartModel FindByDbId(int PartDbId)
{
return dbCtx
.BTLPartList
.Where(x => x.PartDbId == PartDbId)
.SingleOrDefault();
}
/// <summary>
/// Get record by ExtId
/// </summary>
/// <param name="PartId"></param>
/// <returns></returns>
public BTLPartModel FindByPartId(int PartId)
{
return dbCtx
.BTLPartList
.Where(x => x.PartId == PartId)
.SingleOrDefault();
}
/// <summary>
/// Get filtered data by ProjectId (ASC ordered)
/// </summary>
/// <param name="ProjDbId"></param>
/// <returns></returns>
public List<BTLPartModel> GetByProjectAsc(int ProjDbId)
{
// retrieve
return dbCtx
.BTLPartList
.Where(x => x.ProjDbId == ProjDbId)
.OrderBy(x => x.PartDbId)
.ToList();
}
/// <summary>
/// Get filtered data by ProjectId (DESC ordered)
/// </summary>
/// <param name="ProjDbId"></param>
/// <returns></returns>
public List<BTLPartModel> GetByProjectDesc(int ProjDbId)
{
// retrieve
return dbCtx
.BTLPartList
.Where(x => x.ProjDbId == ProjDbId)
.OrderByDescending(x => x.PartDbId)
.ToList();
}
/// <summary>
/// Get paginated data from DB (ASC ordered)
/// </summary>
/// <param name="PartDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<BTLPartModel> GetPaginatedAsc(int PartDbIdStart, int numRecord)
{
int numEnd = PartDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.BTLPartList
.Where(x => x.PartDbId <= PartDbIdStart)
.OrderBy(x => x.PartDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Get paginated data from DB (DESC ordered)
/// </summary>
/// <param name="PartDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<BTLPartModel> GetPaginatedDesc(int PartDbIdStart, int numRecord)
{
int numEnd = PartDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.BTLPartList
.Where(x => x.PartDbId <= PartDbIdStart)
.OrderByDescending(x => x.PartDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Update single BTLPart
/// </summary>
/// <param name="updItem"></param>
/// <returns></returns>
@@ -208,116 +338,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return done;
}
/// <summary>
/// Delete single BTLPart
/// </summary>
/// <param name="PartDbId"></param>
/// <returns></returns>
public bool Delete(int PartDbId)
{
bool done = false;
var item2del = dbCtx
.BTLPartList
.Where(x => x.PartDbId == PartDbId)
.SingleOrDefault();
try
{
// Add to database
dbCtx.BTLPartList.Remove(item2del);
// Commit changes
dbCtx.SaveChanges();
done = true;
}
catch
{ }
return done;
}
/// <summary>
/// Delete BTLPart by project
/// </summary>
/// <param name="ProjDbId"></param>
/// <returns></returns>
public bool DeleteByProject(int ProjDbId)
{
bool done = false;
var items2del = dbCtx
.BTLPartList
.Where(x => x.ProjDbId == ProjDbId);
try
{
// Add to database
dbCtx.BTLPartList.RemoveRange(items2del);
// Commit changes
dbCtx.SaveChanges();
done = true;
}
catch
{ }
return done;
}
/// <summary>
/// Conversion of base class to DB model class
/// </summary>
/// <param name="corePart"></param>
/// <returns></returns>
public BTLPartModel Convert(Core.BTLPart corePart)
{
BTLPartModel answ = new BTLPartModel();
if (corePart != null)
{
answ = new BTLPartModel()
{
PartId = corePart.nPartId,
PDN = corePart.nPDN,
DO = corePart.bDO,
NAM = corePart.sNAM,
W = corePart.dW,
L = corePart.dL,
H = corePart.dH,
MAT = corePart.sMATERIAL,
CNT = corePart.nCNT,
TBP = corePart.nTBP,
DON = corePart.nDON,
ROT = corePart.nROT,
GRP = corePart.sGRP,
UNT = corePart.nUNT,
CALC_State = (int)corePart.nState
};
}
return answ;
}
/// <summary>
/// Conversion of base class to DB model class
/// </summary>
/// <param name="corePart"></param>
/// <returns></returns>
public static BTLPartModel ConvertFromCore(Core.BTLPart corePart, int currProjDbId)
{
BTLPartModel answ = new BTLPartModel();
if (corePart != null)
{
answ = new BTLPartModel()
{
PartId = corePart.nPartId,
PDN = corePart.nPDN,
DO = corePart.bDO,
NAM = corePart.sNAM,
W = corePart.dW,
L = corePart.dL,
H = corePart.dH,
MAT = corePart.sMATERIAL,
CNT = corePart.nCNT,
TBP = corePart.nTBP,
DON = corePart.nDON,
ROT = corePart.nROT,
GRP = corePart.sGRP,
UNT = corePart.nUNT,
CALC_State = (int)corePart.nState,
ProjDbId = currProjDbId
};
}
return answ;
}
#endregion Public Methods
}
}
}
@@ -26,6 +26,40 @@ namespace EgtBEAMWALL.DataLayer.Controllers
#region Public Methods
/// <summary>
/// Conversion of base class to DB model class
/// </summary>
/// <param name="coreMachGroup"></param>
/// <param name="currProdDbId"></param>
/// <returns></returns>
public static MachGroupModel ConvertFromCore(Core.MyMachGroup coreMachGroup, int currProdDbId)
{
MachGroupModel answ = new MachGroupModel();
//if (coreMachGroup != null)
//{
// answ = new MachGroupModel()
// {
// PartId = coreMachGroup.nPartId,
// PDN = coreMachGroup.nPDN,
// DO = coreMachGroup.bDO,
// NAM = coreMachGroup.sNAM,
// W = coreMachGroup.dW,
// L = coreMachGroup.dL,
// H = coreMachGroup.dH,
// MAT = coreMachGroup.sMATERIAL,
// CNT = coreMachGroup.nCNT,
// TBP = coreMachGroup.nTBP,
// DON = coreMachGroup.nDON,
// ROT = coreMachGroup.nROT,
// GRP = coreMachGroup.sGRP,
// UNT = coreMachGroup.nUNT,
// CALC_State = (int)coreMachGroup.nState,
// ProjDbId = currProjDbId
// };
//}
return answ;
}
/// <summary>
/// Create record on DB
/// </summary>
@@ -347,6 +347,43 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return currProd;
}
/// <summary>
/// Update record su DB x elenco MachGroup
/// </summary>
/// <param name="ProdId">Id del Prod</param>
/// <param name="MachGroupList">Elenco MachGroup da associare</param>
/// <returns></returns>
public ProdModel UpdateMachGroup(int ProdId, List<Core.MyMachGroup> MachGroupList)
{
var currData = FindByProdId(ProdId);
// sel delle BTLParts da proj
var items2del = dbCtx
.MachGroupList
.Where(x => x.ProdDbId == currData.ProdDbId);
// converto le MachGroup
var items2add = MachGroupList.Select(x => MachGroupController.ConvertFromCore(x, currData.ProdDbId)).ToList();
try
{
// elimino dal DB
dbCtx.MachGroupList.RemoveRange(items2del);
// aggiungo le nuove
dbCtx.MachGroupList.AddRange(items2add);
}
catch
{ }
// aggiorno valore isNew a false
currData.IsNew = false;
// Commit changes
dbCtx.SaveChanges();
return currData;
}
#endregion Public Methods
}
}
@@ -46,6 +46,30 @@ namespace EgtBEAMWALL.DataLayer.Controllers
.ToList();
}
/// <summary>
/// Get ProdId by ProdDbId, 0 se non trovato
/// </summary>
/// <param name="ProdDbId"></param>
/// <returns></returns>
protected int ProdIdByProdDbId(int? ProdDbId)
{
int answ = 0;
if (ProdDbId != null)
{
var prodRecord = dbCtx
.ProdList
.Where(x => x.ProdDbId == ProdDbId)
.SingleOrDefault();
if (prodRecord != null)
{
answ = prodRecord.ProdId;
}
}
return answ;
}
#endregion Protected Methods
#region Public Methods
@@ -194,7 +218,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
var dbResult = GetLastDbModelDesc(numRecord);
// conversione
result = dbResult.Select(x => new Core.ProjectFile(Core.ConstBeam.ProjectType.PROJ, x.ProjId, x.ProdDbId == null ? 0 : (int)x.ProdDbId, x.BTLFileName)).ToList();
result = dbResult.Select(x => new Core.ProjectFile(Core.ConstBeam.ProjectType.PROJ, x.ProjId, ProdIdByProdDbId(x.ProdDbId), x.BTLFileName)).ToList();
return result;
}
@@ -18,6 +18,12 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Column("Prod_Description")]
public string Description { get; set; } = "";
/// <summary>
/// Stato NEW = creato ma NON salvato
/// </summary>
[Column("Prod_IsNew")]
public bool IsNew { get; set; } = true;
/// <summary>
/// Stato locked (quando aperto da un dispositivo in rete)
/// </summary>
@@ -33,6 +33,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="EgtWPFLib5, Version=2.3.1.1, Culture=neutral, PublicKeyToken=null" />
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
@@ -68,6 +69,7 @@
<Compile Include="DatabaseModels\ProdModel.cs" />
<Compile Include="DatabaseModels\ProjModel.cs" />
<Compile Include="DatabaseModels\MachGroupModel.cs" />
<Compile Include="DbManager.cs" />
<Compile Include="Enums.cs" />
<Compile Include="Migrations\202103031811160_InitDb.cs" />
<Compile Include="Migrations\202103031811160_InitDb.Designer.cs">