229 lines
7.0 KiB
C#
229 lines
7.0 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
|
|
{
|
|
#region Private Fields
|
|
|
|
private DatabaseContext dbCtx;
|
|
|
|
#endregion Private Fields
|
|
|
|
#region Public Constructors
|
|
|
|
public ProdInfoController()
|
|
{
|
|
// Initialize database context
|
|
dbCtx = new DatabaseContext();
|
|
}
|
|
|
|
#endregion Public Constructors
|
|
|
|
#region Public Methods
|
|
|
|
/// <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, float MaterialTempEndWarm, float MaterialTempEndVent, float MoldTemp, float VacuumReadVal, float MouldEnergyOUT, float MouldEnergyIN, bool IsScrap, string ThermoImage)
|
|
{
|
|
// 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,
|
|
ThermoImage = ThermoImage
|
|
};
|
|
try
|
|
{
|
|
// Add to database
|
|
dbCtx.ProdInfo.AddOrUpdate(prodData);
|
|
//dbCtx.ProdInfo.Add(prodData);
|
|
// Commit changes
|
|
dbCtx.SaveChanges();
|
|
}
|
|
catch
|
|
{ }
|
|
|
|
return prodData;
|
|
}
|
|
|
|
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 (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>
|
|
/// 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>
|
|
/// 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;
|
|
}
|
|
|
|
/// <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 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;
|
|
}
|
|
|
|
#endregion Public Methods
|
|
}
|
|
} |