211 lines
5.7 KiB
C#
211 lines
5.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data.Entity.Migrations;
|
|
using System.Linq;
|
|
using Thermo.Active.Model.DatabaseModels;
|
|
|
|
namespace Thermo.Active.Database.Controllers
|
|
{
|
|
public class ProdInfoController : IDisposable
|
|
{
|
|
private DatabaseContext dbCtx;
|
|
|
|
public ProdInfoController()
|
|
{
|
|
// Initialize database context
|
|
dbCtx = new DatabaseContext();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
// Clear database context
|
|
dbCtx.Dispose();
|
|
}
|
|
/// <summary>
|
|
/// Get record by NumDone
|
|
/// </summary>
|
|
/// <param name="num"></param>
|
|
/// <returns></returns>
|
|
public ProdInfoModel FindByNumDone(int num)
|
|
{
|
|
return dbCtx
|
|
.ProdInfo
|
|
.Where(x => x.NumDone == num)
|
|
.SingleOrDefault();
|
|
}
|
|
/// <summary>
|
|
/// Get historical paginated data from DB (DESC ordered)
|
|
/// </summary>
|
|
/// <param name="numStart"></param>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<ProdInfoModel> GetPaginatedDesc(int numStart, int numRecord)
|
|
{
|
|
int numEnd = numStart - numRecord;
|
|
// check numEnd
|
|
if (numEnd < 0)
|
|
numEnd = 0;
|
|
// retrieve
|
|
return dbCtx
|
|
.ProdInfo
|
|
.Where(x => x.NumDone <= numStart)
|
|
//.Where(x => x.NumDone <= numStart && x.NumDone > numEnd)
|
|
.OrderByDescending(x => x.DtEvent)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
}
|
|
/// <summary>
|
|
/// Get historical paginated data from DB (ASC ordered)
|
|
/// </summary>
|
|
/// <param name="numStart"></param>
|
|
/// <param name="numRecord"></param>
|
|
/// <returns></returns>
|
|
public List<ProdInfoModel> GetPaginatedAsc(int numStart, int numRecord)
|
|
{
|
|
int numEnd = numStart + numRecord;
|
|
// retrieve
|
|
return dbCtx
|
|
.ProdInfo
|
|
.Where(x => x.NumDone >= numStart)
|
|
.OrderBy(x => x.DtEvent)
|
|
.Take(numRecord)
|
|
.ToList();
|
|
}
|
|
/// <summary>
|
|
/// Create new prodInfo record on DB
|
|
/// </summary>
|
|
/// <param name="NumTarget"></param>
|
|
/// <param name="NumDone"></param>
|
|
/// <param name="TimeWarm"></param>
|
|
/// <param name="TimeVent"></param>
|
|
/// <param name="TimeVacuum"></param>
|
|
/// <param name="TimeCycleGross"></param>
|
|
/// <param name="TimeCycleNet"></param>
|
|
/// <param name="MaterialTempEndWarm"></param>
|
|
/// <param name="MaterialTempEndVent"></param>
|
|
/// <param name="MoldTemp"></param>
|
|
/// <param name="VacuumReadVal"></param>
|
|
/// <param name="MouldEnergyOUT"></param>
|
|
/// <param name="MouldEnergyIN"></param>
|
|
/// <param name="IsScrap"></param>
|
|
/// <returns></returns>
|
|
public ProdInfoModel Create(short NumTarget, short NumDone, int TimeWarm, int TimeVent, int TimeVacuum, int TimeCycleGross, int TimeCycleNet, double MaterialTempEndWarm, double MaterialTempEndVent, double MoldTemp, double VacuumReadVal, double MouldEnergyOUT, double MouldEnergyIN, bool IsScrap)
|
|
{
|
|
// Create database machine model
|
|
ProdInfoModel prodData = new ProdInfoModel()
|
|
{
|
|
DtEvent = DateTime.Now,
|
|
NumTarget = NumTarget,
|
|
NumDone = NumDone,
|
|
TimeWarm = TimeWarm,
|
|
TimeVent = TimeVent,
|
|
TimeVacuum = TimeVacuum,
|
|
TimeCycleGross = TimeCycleGross,
|
|
TimeCycleNet = TimeCycleNet,
|
|
MaterialTempEndWarm = MaterialTempEndWarm,
|
|
MaterialTempEndVent = MaterialTempEndVent,
|
|
MoldTemp = MoldTemp,
|
|
VacuumReadVal = VacuumReadVal,
|
|
MouldEnergyOUT = MouldEnergyOUT,
|
|
MouldEnergyIN = MouldEnergyIN,
|
|
IsScrap = IsScrap
|
|
};
|
|
try
|
|
{
|
|
// Add to database
|
|
dbCtx.ProdInfo.AddOrUpdate(prodData);
|
|
//dbCtx.ProdInfo.Add(prodData);
|
|
// Commit changes
|
|
dbCtx.SaveChanges();
|
|
}
|
|
catch
|
|
{ }
|
|
|
|
return prodData;
|
|
}
|
|
/// <summary>
|
|
/// Process table and set as scrap by num value
|
|
/// </summary>
|
|
/// <param name="maxKeep"></param>
|
|
/// <returns></returns>
|
|
public bool SetScrap(int num, bool isScrap)
|
|
{
|
|
bool answ = false;
|
|
|
|
var currRecord = dbCtx
|
|
.ProdInfo
|
|
.Where(x => x.NumDone == num)
|
|
.SingleOrDefault();
|
|
try
|
|
{
|
|
if (currRecord != null)
|
|
{
|
|
currRecord.IsScrap = isScrap;
|
|
}
|
|
// save!
|
|
dbCtx.SaveChanges();
|
|
answ = true;
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Process table and keep only maxKeep most recent ones
|
|
/// </summary>
|
|
/// <param name="maxKeep"></param>
|
|
/// <returns></returns>
|
|
public bool PurgeOldest(int maxKeep)
|
|
{
|
|
bool answ = false;
|
|
|
|
// check if purge needed
|
|
int numRec = dbCtx.ProdInfo.Count();
|
|
if (numRec > maxKeep)
|
|
{
|
|
ProdInfoModel firstToDelete = (ProdInfoModel)(from p in dbCtx.ProdInfo
|
|
orderby p.DtEvent descending
|
|
select p).Skip(maxKeep).Take(1);
|
|
|
|
// call deletion
|
|
dbCtx
|
|
.ProdInfo
|
|
.RemoveRange(
|
|
dbCtx
|
|
.ProdInfo
|
|
.Where(x => x.DtEvent <= firstToDelete.DtEvent)
|
|
);
|
|
|
|
try
|
|
{
|
|
// save!
|
|
dbCtx.SaveChanges();
|
|
answ = true;
|
|
}
|
|
catch
|
|
{ }
|
|
}
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Process table and delete all record (truncate)
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool PurgeAll()
|
|
{
|
|
bool answ = false;
|
|
|
|
try
|
|
{
|
|
dbCtx
|
|
.Database
|
|
.ExecuteSqlCommand("TRUNCATE TABLE prodInfo");
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
}
|
|
} |