293 lines
8.0 KiB
C#
293 lines
8.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
|
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
|
{
|
|
public class BTLPartController : IDisposable
|
|
{
|
|
private DatabaseContext dbCtx;
|
|
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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>
|
|
/// Create multiple BTLPart record associated to Project
|
|
/// </summary>
|
|
/// <param name="ProjID"></param>
|
|
/// <param name="partData"></param>
|
|
/// <returns></returns>
|
|
public List<BTLPartModel> Create(int ProjID, List<BTLPartModel> partData)
|
|
{
|
|
// se è adv mode --> uso TUTTI i dati
|
|
if (DbManager.AdvDataModel)
|
|
{
|
|
try
|
|
{
|
|
// Add to database
|
|
dbCtx.BTLPartList.AddRange(partData);
|
|
// Commit changes
|
|
dbCtx.SaveChanges();
|
|
}
|
|
catch
|
|
{ }
|
|
return partData;
|
|
}
|
|
// se non adv --> faccio solo copia degli id...
|
|
else
|
|
{
|
|
List<int> partIdList = new List<int>();
|
|
foreach (var item in partData)
|
|
{
|
|
partIdList.Add(item.PartId);
|
|
}
|
|
return CreateBaseObj(ProjID, partIdList);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Update single BTLPart
|
|
/// </summary>
|
|
/// <param name="updItem"></param>
|
|
/// <returns></returns>
|
|
public bool Update(BTLPartModel updItem)
|
|
{
|
|
bool done = false;
|
|
var item2update = dbCtx
|
|
.BTLPartList
|
|
.Where(x => x.PartDbId == updItem.PartDbId)
|
|
.SingleOrDefault();
|
|
try
|
|
{
|
|
// update, vers 1...
|
|
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
|
|
|
|
//// update, vers 2
|
|
//dbCtx.BTLPartList.Remove(item2del);
|
|
//dbCtx.BTLPartList.Add(updItem);
|
|
|
|
// Commit changes
|
|
dbCtx.SaveChanges();
|
|
done = true;
|
|
}
|
|
catch
|
|
{ }
|
|
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;
|
|
}
|
|
|
|
}
|
|
}
|