777 lines
29 KiB
C#
777 lines
29 KiB
C#
using CMS_CORE_Library.Models;
|
|
using Step.Database.Controllers;
|
|
using Step.Model.DatabaseModels;
|
|
using Step.Model.DTOModels.ToolModels;
|
|
using Step.NC;
|
|
using Step.Utils;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Web.Http;
|
|
using static Step.Config.ServerConfig;
|
|
using static Step.Model.Constants;
|
|
using static Step.Listeners.SignalRStaticObjects;
|
|
using Step.Model.DTOModels;
|
|
|
|
namespace Step.Controllers.WebApi
|
|
{
|
|
[RoutePrefix("api/tool_manager/nc")]
|
|
public class NcToolManagerApiController : ApiController
|
|
{
|
|
#region Tools
|
|
|
|
[Route("tools"), HttpGet]
|
|
public IHttpActionResult GetNcToolTable()
|
|
{
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
CmsError cmsError = ncHandler.GetToolsData(out List<DTONcToolModel> tools);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
// If option is active, add family data to tools
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Get families
|
|
List<DTONcFamilyModel> families = toolsManager.GetFamilies();
|
|
|
|
List<DTONcToolWithFamilyModel> toolsWithFamilies = new List<DTONcToolWithFamilyModel>();
|
|
// Create tool&family return objecs
|
|
foreach (var tool in tools)
|
|
{
|
|
toolsWithFamilies.Add
|
|
(
|
|
CreateToolAndFamilyObj( // Create return model with family data & tool data
|
|
tool,
|
|
families.Where(x => x.Id == tool.FamilyId).FirstOrDefault() // Find matching family
|
|
)
|
|
);
|
|
}
|
|
|
|
return Ok(toolsWithFamilies);
|
|
}
|
|
}
|
|
}
|
|
|
|
[Route("tool"), HttpPost]
|
|
public IHttpActionResult AddTool([FromBody][Required]DTONewNcToolWithFamilyModel dtoToolWithFamily)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
short familyId = 0;
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if option is active
|
|
if (ToolManagerConfig.FamilyOpt)
|
|
{
|
|
if (dtoToolWithFamily.FamilyId == 0)
|
|
{
|
|
// If param equal to 0 create a new family
|
|
DTONewNcFamilyModel newFamily = new DTONewNcFamilyModel() { Name = "NewFamily", LeftSize = 1, RightSize = 1 };
|
|
// Add new family & update family id
|
|
DbNcFamilyModel newFam = toolsManager.AddFamily(newFamily);
|
|
dtoToolWithFamily.FamilyId = newFam.FamilyId;
|
|
dtoToolWithFamily.Name = newFam.Name;
|
|
}
|
|
else
|
|
{
|
|
// Check if family exists
|
|
DbNcFamilyModel fam = toolsManager.FindFamily(dtoToolWithFamily.FamilyId);
|
|
if (fam == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
// Update return data
|
|
if (ToolManagerConfig.FamilyOpt)
|
|
{
|
|
dtoToolWithFamily.Name = fam.Name;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Copy only family data from tool&fam model
|
|
DTONewNcFamilyModel newFamily = new DTONewNcFamilyModel();
|
|
SupportFunctions.CopyProperties(dtoToolWithFamily, newFamily);
|
|
|
|
// Add new family
|
|
DbNcFamilyModel dbFam = toolsManager.AddFamily(newFamily);
|
|
if (dbFam == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
dtoToolWithFamily.FamilyId = dbFam.FamilyId;
|
|
|
|
// Set common id
|
|
familyId = dbFam.FamilyId;
|
|
}
|
|
|
|
// Check if option is active
|
|
if (!ToolManagerConfig.ShankOpt)
|
|
{
|
|
// If option is not active create a shank
|
|
DTONewNcShankModel newShank = new DTONewNcShankModel()
|
|
{
|
|
Balluf = 0,
|
|
MagazinePositionType = 0
|
|
};
|
|
|
|
// Create a new shank
|
|
DbNcShankModel ncShank = toolsManager.AddShank(newShank, familyId);
|
|
// Connect tool to new shank
|
|
dtoToolWithFamily.ShankId = ncShank.ShankId;
|
|
}
|
|
else
|
|
dtoToolWithFamily.ShankId = null;
|
|
}
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
// Add tool
|
|
CmsError cmsError = ncHandler.AddTool(dtoToolWithFamily, out DTONcToolModel newTool, familyId);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok(CreateToolAndFamilyObj(newTool, dtoToolWithFamily));
|
|
}
|
|
}
|
|
|
|
[Route("tool/{toolId:int}"), HttpPut]
|
|
public IHttpActionResult PutTool(int toolId, [FromBody][Required]DTONewNcToolWithFamilyModel dtoToolWithFamily)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
DbNcToolModel tool = null;
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if tool exists
|
|
tool = toolsManager.FindTool(toolId);
|
|
if (tool == null)
|
|
return NotFound();
|
|
|
|
// Check if tool is mounted in spindle
|
|
if (ToolIsInSpindle(toolId))
|
|
return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED);
|
|
|
|
if (tool.FamilyId != dtoToolWithFamily.FamilyId)
|
|
{
|
|
// Check if family exists
|
|
DbNcFamilyModel fam = toolsManager.FindFamily(dtoToolWithFamily.FamilyId);
|
|
if (fam == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
// Change return fam data
|
|
if (ToolManagerConfig.FamilyOpt)
|
|
{
|
|
dtoToolWithFamily.Name = fam.Name;
|
|
}
|
|
}
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
// Update
|
|
CmsError cmsError = ncHandler.UpdateTool(toolId, dtoToolWithFamily, out DTONcToolModel newTool, dtoToolWithFamily);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok(CreateToolAndFamilyObj(newTool, dtoToolWithFamily));
|
|
}
|
|
}
|
|
}
|
|
|
|
private DTONcToolWithFamilyModel CreateToolAndFamilyObj(DTONcToolModel tool, DTONewNcToolWithFamilyModel familyData)
|
|
{
|
|
DTONcToolWithFamilyModel familyTool = new DTONcToolWithFamilyModel();
|
|
// Copy family fields
|
|
SupportFunctions.CopyProperties(familyData, familyTool);
|
|
// Copy tool fields
|
|
SupportFunctions.CopyProperties(tool, familyTool);
|
|
|
|
return familyTool;
|
|
}
|
|
|
|
private DTONcToolWithFamilyModel CreateToolAndFamilyObj(DTONcToolModel tool, DTONcFamilyModel familyData)
|
|
{
|
|
DTONcToolWithFamilyModel familyTool = new DTONcToolWithFamilyModel();
|
|
// Copy family fields
|
|
SupportFunctions.CopyProperties(familyData, familyTool);
|
|
// Copy tool fields
|
|
SupportFunctions.CopyProperties(tool, familyTool);
|
|
|
|
return familyTool;
|
|
}
|
|
|
|
[Route("tool/{toolId:int}"), HttpDelete]
|
|
public IHttpActionResult DeleteTool(int toolId)
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
DbNcToolModel tool = toolsManager.FindTool(toolId);
|
|
if (tool == null)
|
|
return NotFound();
|
|
|
|
// Check if tool is mounted in spindle
|
|
if (ToolIsInSpindle(toolId))
|
|
return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED);
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
CmsError cmsError;
|
|
cmsError = ncHandler.DeleteNcTool(tool);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion Tools
|
|
|
|
#region Offsets
|
|
|
|
[Route("offset/{offsetId:int}"), HttpPut]
|
|
public IHttpActionResult UpdateOffset(short offsetId, OffsetModel offsetData)
|
|
{
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
CmsError cmsError = ncHandler.UpdateOffset(offsetId, offsetData);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
offsetData.Id = offsetId;
|
|
return Ok(offsetData);
|
|
}
|
|
}
|
|
|
|
[Route("tool/{toolId:int}/position/{positionId:int}/offset/{offsetId:int}"), HttpPut]
|
|
public IHttpActionResult UpdateToolOffset(int toolId, int positionId, short offsetId)
|
|
{
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
CmsError cmsError = ncHandler.UpdateToolOffsetId(toolId, positionId, offsetId, out DTONcToolModel tool);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok(tool);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Shanks
|
|
|
|
[Route("shanks"), HttpGet]
|
|
public IHttpActionResult GetShanks()
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
return Ok(toolsManager.GetShanks());
|
|
}
|
|
}
|
|
|
|
[Route("shank"), HttpPost]
|
|
public IHttpActionResult AddShank([FromBody][Required] DTONewNcShankModel dtoShank)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
if (!ToolManagerConfig.ShankOpt)
|
|
return BadRequest(API_ERROR_KEYS.OPTION_NOT_ACTIVE);
|
|
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
DTONcShankModel shank = (DTONcShankModel)toolsManager.AddShank(dtoShank);
|
|
|
|
return Ok(shank);
|
|
}
|
|
}
|
|
|
|
[Route("shank/{shankId:int}"), HttpPut]
|
|
public IHttpActionResult PutShank(int shankId, [FromBody][Required]DTONewNcShankModel dtoShank)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if shank exists
|
|
DbNcShankModel shank = toolsManager.FindShankWithTools(shankId);
|
|
if (shank == null)
|
|
return NotFound();
|
|
|
|
// Check if tools are mounted in spindle
|
|
foreach (var tool in shank.Tools)
|
|
{
|
|
if (ToolIsInSpindle(tool.ToolId))
|
|
return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED);
|
|
}
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
CmsError cmsError = ncHandler.Connect();
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
// Update shank
|
|
cmsError = ncHandler.UpdateShank(shankId, dtoShank, out DTONcShankModel newShank);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok(newShank);
|
|
}
|
|
}
|
|
}
|
|
|
|
[Route("shank/{shankId:int}"), HttpDelete]
|
|
public IHttpActionResult DeleteShank(int shankId)
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if shank exists
|
|
DbNcShankModel shank = toolsManager.FindShankWithTools(shankId);
|
|
if (shank == null)
|
|
return NotFound();
|
|
|
|
// Check if tools are mounted in spindle
|
|
foreach (var tool in shank.Tools)
|
|
{
|
|
if (ToolIsInSpindle(tool.ToolId))
|
|
return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED);
|
|
}
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
CmsError cmsError = ncHandler.Connect();
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
cmsError = ncHandler.DeleteNcShank(shank.ShankId);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion Shanks
|
|
|
|
#region Families
|
|
|
|
[Route("families"), HttpGet]
|
|
public IHttpActionResult GetFamilies()
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
List<DTONcFamilyModel> families = toolsManager.GetFamilies();
|
|
|
|
return Ok(families);
|
|
}
|
|
}
|
|
|
|
[Route("family"), HttpPost]
|
|
public IHttpActionResult AddFamily([FromBody][Required]DTONewNcFamilyModel dtoFamily)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
CmsError cmsError = ncHandler.Connect();
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
DTONcFamilyModel newFamily = ncHandler.AddFamily(dtoFamily);
|
|
|
|
return Ok(newFamily);
|
|
}
|
|
}
|
|
|
|
[Route("family/{familyId:int}"), HttpPut]
|
|
public IHttpActionResult PutFamily(int familyId, [FromBody][Required]DTONewNcFamilyModel dtoFamily)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if family exists
|
|
DbNcFamilyModel family = toolsManager.FindFamily(familyId);
|
|
if (family == null)
|
|
return NotFound();
|
|
|
|
// Check if tools are mounted in spindle
|
|
foreach (var tool in family.Tools)
|
|
{
|
|
if (ToolIsInSpindle(tool.ToolId))
|
|
return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED);
|
|
}
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
CmsError cmsError = ncHandler.Connect();
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
// Update into db and NC
|
|
cmsError = ncHandler.UpdateFamily(familyId, dtoFamily, out DTONcFamilyModel newFamily);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok(newFamily);
|
|
}
|
|
}
|
|
}
|
|
|
|
[Route("family/{familyId:int}"), HttpDelete]
|
|
public IHttpActionResult DeleteFamily(int familyId)
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Find if exists
|
|
DbNcFamilyModel family = toolsManager.FindFamily(familyId);
|
|
if (family == null)
|
|
return NotFound();
|
|
|
|
// Check if tools are mounted in spindle
|
|
foreach (var tool in family.Tools)
|
|
{
|
|
if (ToolIsInSpindle(tool.ToolId))
|
|
return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED);
|
|
}
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
CmsError cmsError = ncHandler.Connect();
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
//Delete
|
|
cmsError = ncHandler.DeleteNcFamily(familyId);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion Families
|
|
|
|
#region Magazine positions
|
|
|
|
[Route("magazines_positions"), HttpGet]
|
|
public IHttpActionResult GetMagazinesPositions()
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
List<DbNcMagazinePositionModel> magazines = toolsManager.FindMagazinesPositions();
|
|
|
|
return Ok(magazines);
|
|
}
|
|
}
|
|
|
|
[Route("magazine/{magazineId:int}/positions"), HttpGet]
|
|
public IHttpActionResult GetMagazinesPositions(byte magazineId)
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
List<DTONcMagazinePositionModel> magazine = toolsManager.GetMagazinePositions(magazineId);
|
|
|
|
return Ok(magazine);
|
|
}
|
|
}
|
|
|
|
[Route("magazine/{magazineId}/position/{positionId}"), HttpPut]
|
|
public IHttpActionResult PutMagazinePosition([Required]byte magazineId, [Required]byte positionId, [FromBody]DTONcMagazinePositionModel dtoPos)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if magazine&position exists
|
|
DbNcMagazinePositionModel pos = toolsManager.FindMagazinePosition(magazineId, positionId);
|
|
if (pos == null)
|
|
return NotFound();
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
CmsError cmsError = ncHandler.UpdateMagazinePosition(pos, dtoPos, out DTONcMagazinePositionModel newPos);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok(newPos);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion Magazine positions
|
|
|
|
[Route("magazine/{magazineId:int}/mounted_shanks"), HttpGet]
|
|
public IHttpActionResult GetMagazineTools(byte magazineId)
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if magazine exists
|
|
List<DbNcMagazinePositionModel> pos = toolsManager.FindMagazinePositions(magazineId);
|
|
if (pos.Count <= 0)
|
|
return NotFound();
|
|
|
|
List<DTONcShankModel> mountedShank = toolsManager.GetMountedShanks(magazineId);
|
|
|
|
return Ok(mountedShank);
|
|
}
|
|
}
|
|
|
|
[Route("magazine/available_shanks"), HttpGet]
|
|
public IHttpActionResult GetAvailableShanks()
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
List<DTONcShankModel> shanks = new List<DTONcShankModel>();
|
|
|
|
shanks = toolsManager.GetAvailableShanksWithChilds();
|
|
|
|
return Ok(shanks);
|
|
}
|
|
}
|
|
|
|
[Route("magazine/available_tools"), HttpGet]
|
|
public IHttpActionResult GetAvailableTools()
|
|
{
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
List<DTONcToolModel> tools = toolsManager.GetAvailableTools();
|
|
|
|
return Ok(tools);
|
|
}
|
|
}
|
|
|
|
[Route("magazine/{magazineId:int}/load/position/{positionId:int}"), HttpPut]
|
|
public IHttpActionResult LoadToolInToMagazine(byte magazineId, byte positionId, [FromBody][Required] DTONcUpdateMagazineModel shankId)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
if (shankId.ShankId == 0)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
DTONcShankModel dtoShank = new DTONcShankModel();
|
|
|
|
// Check data
|
|
DbNcShankModel shank;
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if shank exists
|
|
shank = toolsManager.FindShankWithTools(shankId.ShankId);
|
|
if (shank == null)
|
|
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
// Check if shank is already loaded somewhere
|
|
if (shank.MagazineId != null)
|
|
return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED);
|
|
|
|
// Check if magazine position exists
|
|
DbNcMagazinePositionModel magPos = toolsManager.FindMagazinePosition(magazineId, positionId);
|
|
if (magPos == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
// Check if the mag pos is disabled
|
|
if (magPos.Disabled == true)
|
|
return BadRequest(API_ERROR_KEYS.MAG_POS_DISABLED);
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
// Get Configuration
|
|
ncHandler.Connect();
|
|
|
|
// Check if shank can fit
|
|
CmsError cmsError = ncHandler.CheckIfShankCanFit(
|
|
magazineId,
|
|
positionId,
|
|
shank // Get mounted tools
|
|
);
|
|
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
|
|
dtoShank = toolsManager.GetShank(shank.ShankId);
|
|
}
|
|
|
|
// Update shank data
|
|
DTONcMagazinePositionModel magazinePos = (DTONcMagazinePositionModel)toolsManager.LoadShankInMagazine(magazineId, positionId, shank);
|
|
// Set shankId
|
|
magazinePos.ShankId = shank.ShankId;
|
|
|
|
dtoShank.MagazineId = magazineId;
|
|
dtoShank.PositionId = positionId;
|
|
|
|
return Ok(dtoShank);
|
|
}
|
|
}
|
|
|
|
[Route("magazine/{magazineId:int}/unload/position/{positionId:int}"), HttpPut]
|
|
public IHttpActionResult UnloadToolInToMagazine(byte magazineId, byte positionId, [FromBody][Required] DTONcUpdateMagazineModel shankId)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
if (shankId.ShankId == 0)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
// Check data
|
|
DbNcShankModel shank;
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if shank exists
|
|
shank = toolsManager.FindShankWithTools(shankId.ShankId);
|
|
if (shank == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
// Check if tools are mounted in spindle
|
|
foreach (var tool in shank.Tools)
|
|
{
|
|
if (ToolIsInSpindle(tool.ToolId))
|
|
return BadRequest(API_ERROR_KEYS.TOOL_IS_MOUNTED);
|
|
}
|
|
|
|
// Check if magazine position exists
|
|
DbNcMagazinePositionModel magPos = toolsManager.FindMagazinePosition(magazineId, positionId);
|
|
if (magPos == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
//// Check if the mag pos is disabled
|
|
//if (magPos.Disabled == true)
|
|
// return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
// Check if magazine position is not occupied
|
|
DbNcShankModel shankMounted = toolsManager.FindShanksByPositions(magazineId, positionId);
|
|
if (shankMounted == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
DTONcMagazinePositionModel magazinePos = (DTONcMagazinePositionModel)toolsManager.UnloadShankInMagazine(magazineId, positionId, shank);
|
|
|
|
return Ok(magazinePos);
|
|
}
|
|
}
|
|
|
|
[Route("shank/{shankId:int}/load/tool/{toolId:int}"), HttpPut]
|
|
public IHttpActionResult LoadToolIntoShank(short shankId, int toolId)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
DbNcToolModel tool;
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if shank exists
|
|
DbNcShankModel shank = toolsManager.FindShankWithTools(shankId);
|
|
if (shank == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
tool = toolsManager.FindTool(toolId);
|
|
if (tool == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
}
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
DTONcShankModel shank = ncHandler.LoadIntoShank(tool, shankId);
|
|
|
|
return Ok(shank);
|
|
}
|
|
}
|
|
|
|
[Route("shank/{shankId:int}/unload/tool/{toolId:int}"), HttpPut]
|
|
public IHttpActionResult UnloadToolIntoShank(int shankId, int toolId)
|
|
{
|
|
if (!ModelState.IsValid)
|
|
return BadRequest(ModelState);
|
|
|
|
DbNcToolModel tool;
|
|
using (NcToolManagerController toolsManager = new NcToolManagerController())
|
|
{
|
|
// Check if shank exists
|
|
DbNcShankModel shank = toolsManager.FindShankWithTools(shankId);
|
|
if (shank == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
|
|
tool = toolsManager.FindTool(toolId);
|
|
if (tool == null)
|
|
return BadRequest(API_ERROR_KEYS.INCORRECT_PARAMETERS);
|
|
}
|
|
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
DTONcShankModel shank = ncHandler.UnloadFromShank(tool);
|
|
|
|
return Ok(shank);
|
|
}
|
|
}
|
|
|
|
[Route("start_edit_tooling/{magazineId:int}"), HttpPut]
|
|
public IHttpActionResult StartEditTooling(int magazineId)
|
|
{
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
CmsError cmsError = ncHandler.StartEditTooling(magazineId);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok();
|
|
}
|
|
}
|
|
|
|
[Route("stop_edit_tooling/{magazineId:int}"), HttpPut]
|
|
public IHttpActionResult StopEditTooling(int magazineId)
|
|
{
|
|
using (NcHandler ncHandler = new NcHandler())
|
|
{
|
|
ncHandler.Connect();
|
|
|
|
Stopwatch st = new Stopwatch();
|
|
st.Restart();
|
|
CmsError cmsError = ncHandler.StopEditTooling(magazineId);
|
|
Console.WriteLine("TOOL TABLE WRITE TIME "+ st.ElapsedMilliseconds);
|
|
if (cmsError.IsError())
|
|
return BadRequest(cmsError.localizationKey);
|
|
|
|
return Ok();
|
|
}
|
|
}
|
|
|
|
|
|
private bool ToolIsInSpindle(int toolId)
|
|
{
|
|
foreach(var head in LastHeadsData.ToList())
|
|
{
|
|
if(head is DTOSpindleModel)
|
|
{
|
|
var spindle = head as DTOSpindleModel;
|
|
if (spindle.MountedTool == toolId)
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
} |