Files
cms_thermo_active/Step.Database/Controllers/NcToolManagerController.cs
T
Lucio Maranta 4accaacc06 Fix shanks query
Added options config
2018-07-03 17:22:32 +02:00

284 lines
7.4 KiB
C#

using Step.Model.DatabaseModels;
using Step.Model.DTOModels.ToolModels;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
namespace Step.Database.Controllers
{
public class NcToolManagerController : IDisposable
{
private DatabaseContext dbCtx;
public NcToolManagerController()
{
// Initialize database context
dbCtx = new DatabaseContext();
}
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
public List<NcFamilyModel> GetFamilies()
{
List<NcFamilyModel> families = dbCtx.Families.ToList();
List<NcToolModel> tools = dbCtx.Tools.ToList();
//foreach (NcFamilyModel family in families)
//{
// family.Tools = tools.Where(x => x.FamilyId == family.FamilyId).ToList();
//}
return families;
}
public NcToolModel FindTool(int toolId)
{
return dbCtx.Tools
.Where(x => x.ToolId == toolId)
.FirstOrDefault();
}
public NcShankModel FindShank(int shankId)
{
return dbCtx.Shanks
.Where(x => x.ShankId == shankId)
.FirstOrDefault();
}
public NcFamilyModel FindFamily(int familyId)
{
return dbCtx
.Families
.Where(x => x.FamilyId == familyId)
.FirstOrDefault();
}
public List<NcToolModel> GetToolsWithDependencies()
{
List<NcToolModel> tools = dbCtx
.Tools
.Include("Family")
.Include("Shank")
.ToList();
return tools;
}
public List<NcToolModel> FindTools()
{
List<NcToolModel> tools = dbCtx
.Tools
.ToList();
return tools;
}
public List<NcShankModel> FindShanks()
{
List<NcShankModel> shanks = dbCtx.Shanks.Include("MagazinePosition").ToList();
return shanks;
}
public List<DTONcShankModel> GetShanks()
{
// Get shank from database
List<NcShankModel> dbShanks = dbCtx
.Shanks
.Include("Tools")
.ToList();
// Populate db shanks
List<DTONcShankModel> dtoShanks = new List<DTONcShankModel>();
foreach (var shank in dbShanks)
{
//dbCtx.Shanks.Attach(shank);
DTONcShankModel dtoShank = (DTONcShankModel)shank;
dtoShanks.Add(dtoShank);
}
return dtoShanks;
}
public List<NcMagazinePositionModel> GetPositions()
{
List<NcMagazinePositionModel> positions = dbCtx.MagazinePositions.ToList();
return positions;
}
public List<NcMagazinePositionModel> GetMagazinePositions(byte magId)
{
return dbCtx
.MagazinePositions
.Where(x => x.MagazineId == magId)
.ToList();
}
public NcMagazinePositionModel GetMagazinePosition(byte magId, byte posId)
{
NcMagazinePositionModel positions = dbCtx
.MagazinePositions
.Where(x => x.MagazineId == magId && x.PositionId == posId)
.FirstOrDefault();
return positions;
}
public List<NcOffsetModel> GetOffsets()
{
List<NcOffsetModel> offsets = dbCtx.Offsets.ToList();
return offsets;
}
public List<DTONcShankModel> GetMountedShanks(int magazineId)
{
List<DTONcShankModel> dtoShanks = GetShanks()
.Where(x => x.MagazineId != null)
.ToList();
return dtoShanks;
}
public List<DTONcShankModel> GetAvailableShanks()
{
List<DTONcShankModel> dtoShanks = GetShanks()
.Where(x => x.MagazineId == null && x.Tools.Count > 0)
.ToList();
return dtoShanks;
}
public NcToolModel AddTool(DTONcToolModel dtoTool)
{
NcToolModel tool = (NcToolModel)dtoTool;
dbCtx.Tools.Add(tool);
dbCtx.SaveChanges();
dbCtx.Entry(tool).Reference(x => x.Family).Load();
dbCtx.Entry(tool).Reference(x => x.Shank).Load();
return tool;
}
public NcToolModel UpdateTool(NcToolModel tool, DTONcToolModel dtoTool)
{
tool.FamilyId = dtoTool.FamilyId;
tool.Type = dtoTool.Type;
tool.OffsetLength = dtoTool.OffsetLength;
tool.ResidualLife = dtoTool.ResidualLife;
tool.ResidualRevive = dtoTool.ResidualRevive;
dbCtx.SaveChanges();
return tool;
}
public void DeleleTool(int toolId)
{
NcToolModel tool = FindTool(toolId);
DeleteTool(tool);
}
public void DeleteTool(NcToolModel tool)
{
dbCtx.Tools.Remove(tool);
dbCtx.SaveChanges();
}
public NcFamilyModel AddFamily(DTONcFamilyModel family)
{
NcFamilyModel familyModel = (NcFamilyModel)family;
dbCtx.Families.Add(familyModel);
dbCtx.SaveChanges();
return familyModel;
}
public NcShankModel AddShank(DTONcShankModel shank)
{
NcShankModel dbShank = (NcShankModel)shank;
dbCtx.Shanks.Add(dbShank);
dbCtx.SaveChanges();
return dbShank;
}
public NcShankModel UpdateShank(NcShankModel dbShank, DTONcShankModel dtoShank)
{
dbShank.MagazinePositionType = dtoShank.MagazinePositionType;
dbCtx.SaveChanges();
return dbShank;
}
public void DeleteShank(int shankId)
{
NcShankModel shank = FindShank(shankId);
DeleteShank(shank);
}
public void DeleteShank(NcShankModel shank)
{
dbCtx.Shanks.Attach(shank);
dbCtx.Shanks.Remove(shank);
dbCtx.SaveChanges();
}
public NcMagazinePositionModel UpdatePosition(NcMagazinePositionModel dbPos, DTONcMagazinesPositionsModel dtoPos)
{
dbPos.Type = dtoPos.Type;
dbPos.Disabled = dtoPos.Disabled;
dbCtx.SaveChanges();
return dbPos;
}
public void DeleteFamily(NcFamilyModel family)
{
dbCtx.Families.Attach(family);
dbCtx.Families.Remove(family);
dbCtx.SaveChanges();
}
public DTONcShankModel LoadShankInMagazine(byte magazineId, byte positionId, NcShankModel shank)
{
dbCtx.Shanks.Attach(shank);
shank.MagazineId = magazineId;
shank.PositionId = positionId;
dbCtx.SaveChanges();
return (DTONcShankModel)shank;
}
public DTONcShankModel UnloadShankInMagazine(byte magazineId, byte positionId, NcShankModel shank)
{
dbCtx.Shanks.Attach(shank);
shank.MagazineId = null;
shank.PositionId = null;
dbCtx.SaveChanges();
return (DTONcShankModel)shank;
}
}
}