171 lines
4.7 KiB
C#
171 lines
4.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using EgtBEAMWALL.DataLayer.DatabaseModels;
|
|
|
|
namespace EgtBEAMWALL.DataLayer.Controllers
|
|
{
|
|
public class ProdController : IDisposable
|
|
{
|
|
private DatabaseContext dbCtx;
|
|
|
|
public ProdController()
|
|
{
|
|
// Initialize database context
|
|
dbCtx = new DatabaseContext();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
// Clear database context
|
|
dbCtx.Dispose();
|
|
}
|
|
/// <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);
|
|
}
|
|
/// <summary>
|
|
/// Get record by ProdDbId
|
|
/// </summary>
|
|
/// <param name="ProdDbId"></param>
|
|
/// <returns></returns>
|
|
public ProdModel FindByProdDbId(int ProdDbId)
|
|
{
|
|
return dbCtx
|
|
.ProdList
|
|
.Where(x => x.ProdDbId == ProdDbId)
|
|
.SingleOrDefault();
|
|
}
|
|
/// <summary>
|
|
/// Get record by ProdId
|
|
/// </summary>
|
|
/// <param name="ProdId"></param>
|
|
/// <returns></returns>
|
|
public ProdModel FindByProdId(int ProdId)
|
|
{
|
|
return dbCtx
|
|
.ProdList
|
|
.Where(x => x.ProdId == ProdId)
|
|
.SingleOrDefault();
|
|
}
|
|
/// <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>
|
|
/// 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;
|
|
}
|
|
|
|
|
|
}
|
|
}
|