Files
egtbeamwall/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs
T
Samuele E. Locatelli f812ff66c2 initial commit
2021-03-04 19:48:48 +01:00

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;
}
}
}