using CMS_CORE_Library.Models; using Step.Model.DatabaseModels; using Step.Model.DTOModels.ToolModels; using Step.NC; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web.Http; namespace Step.Controllers.WebApi { [RoutePrefix("api/tool_manager")] public class SiemensToolManagerController : ApiController { [Route("tools"), HttpGet] public IHttpActionResult GetToolTable() { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.GetToolTableData(out List tools); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(tools); } } [Route("siemens/tool"), HttpPost] public IHttpActionResult AddTool([FromBody][Required]DTOSiemensToolModel tool) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { // Convert from DTOModel to library model SiemensToolModel siemensModel = (SiemensToolModel)tool; ; ncAdapter.Connect(); CmsError libraryError = ncAdapter.AddTool(ref siemensModel); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(siemensModel); } } [Route("siemens/tool/{id}"), HttpPut] public IHttpActionResult UpdateTool(int id, [FromBody][Required]DTOSiemensToolModel tool) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { // Convert from DTOModel to library model SiemensToolModel siemensModel = (SiemensToolModel)tool; siemensModel.Id = id; ncAdapter.Connect(); CmsError libraryError = ncAdapter.UpdateTool(ref siemensModel); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(siemensModel); } } [Route("tool/{id:int}"), HttpDelete] public IHttpActionResult DeleteTool(int id) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); // Call delete library function CmsError libraryError = ncAdapter.DeleteTool(id); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("families"), HttpGet] public IHttpActionResult GetFamilies() { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.GetFamiliesData(out List families); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(families); } } [Route("family"), HttpPost] public IHttpActionResult AddFamily([FromBody] DTOFamilyModel family) { if (String.IsNullOrEmpty(family.Name)) return BadRequest(); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.AddFamily(family.Name, out FamilyModel newFamily); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(newFamily); } } [Route("family/{oldName}"), HttpPut] public IHttpActionResult PutFamily(string oldName, [FromBody]DTOFamilyModel family) { if (string.IsNullOrEmpty(family.Name)) return BadRequest(); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.UpdateFamilyName(oldName, family.Name); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(family); } } [Route("family/{name}"), HttpDelete] public IHttpActionResult DeleteFamily(string name) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); // Call delete library function CmsError libraryError = ncAdapter.DeleteFamily(name); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("magazines_positions"), HttpGet] public IHttpActionResult GetMagazinesPositions() { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.GetMagazinesPositionsData(out List magazines); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(magazines); } } [Route("magazine/{magazineId:int}/positions"), HttpGet] public IHttpActionResult GetMagazinePositions(int magazineId) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.GetMagazinesPositionsData(out List magazines); // Filter by magazine id magazines = magazines.Where(x => x.MagazineId == magazineId).ToList(); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(magazines); } } [Route("magazine/{magazineId}/position/{positionId}"), HttpPut] public IHttpActionResult PutMagazinePosition([Required]int magazineId, [Required]int positionId, [FromBody]DTOMagazinesPositionsModel magazinesPos) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); // Create Library model PositionModel pos = new PositionModel() { PositionId = positionId, MagazineId = magazineId, Disabled = magazinesPos.Disabled }; // Update CmsError libraryError = ncAdapter.UpdateMagazinePosition(pos); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("shanks"), HttpGet] public IHttpActionResult GetShanks() { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.GetShanksData(out List shanks); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(shanks); } } [Route("shank"), HttpPost] public IHttpActionResult AddShank([FromBody][Required] DTOShankModel dtoShank) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ShankModel shank = (ShankModel)dtoShank; ncAdapter.Connect(); CmsError libraryError = ncAdapter.AddShank(ref shank); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(shank); } } [Route("shank/{shankId:int}"), HttpPut] public IHttpActionResult UpdateShank(int shankId, [FromBody][Required] DTOShankModel dtoShank) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ShankModel shank = (ShankModel)dtoShank; shank.Id = shankId; ncAdapter.Connect(); CmsError libraryError = ncAdapter.UpdateShank(ref shank); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(shank); } } [Route("shank/{id:int}"), HttpDelete] public IHttpActionResult DeleteShank(int id) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); // Call delete library function CmsError libraryError = ncAdapter.DeleteShank(id); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("tool/{toolId:int}/edge"), HttpPost] public IHttpActionResult AddEdge(int toolId, [FromBody][Required]DTOEdgeModel dtoEdge) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter siemensHandler = new SiemensToolTableAdapter()) { siemensHandler.Connect(); EdgeModel edge = (EdgeModel)dtoEdge; // Call library add methods CmsError libraryError = siemensHandler.AddEdge(toolId, ref edge); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(edge); } } [Route("tool/{toolId:int}/edge/{edgeId:int}"), HttpPut] public IHttpActionResult UpdateEdge(int toolId, int edgeId, [FromBody][Required]DTOEdgeModel dtoEdge) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); EdgeModel edge = (EdgeModel)dtoEdge; edge.Id = edgeId; // Call library add methods CmsError libraryError = ncAdapter.UpdateEdge(toolId, ref edge); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(edge); } } [Route("tool/{toolId:int}/edge/{edgeId:int}"), HttpDelete] public IHttpActionResult DeleteEdge(int toolId, int edgeId) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); // Call delete library function CmsError libraryError = ncAdapter.DeleteEdge(toolId, edgeId); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("magazine/{magazineId:int}/mounted_tools"), HttpGet] public IHttpActionResult GetMagazineTools(int magazineId) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); // Call delete library function CmsError libraryError = ncAdapter.GetMagazinePositionsAndTools(magazineId, out List magazinePos); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(magazinePos); } } [Route("magazine/available_tools"), HttpGet] public IHttpActionResult GetAvailableTools() { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); // Call delete library function CmsError libraryError = ncAdapter.GetNotInMagazinesTools(out List multiTools, out List tools); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(new { MultiTools = multiTools, Tools = tools }); } } [Route("magazine/{magazineId:int}/load/position/{positionId:int}"), HttpPut] public IHttpActionResult LoadToolInToMagazine(int magazineId, int positionId, [FromBody][Required] DTOSiemensUpdateMagazineModel toolId) { if (!ModelState.IsValid) return BadRequest(ModelState); if (toolId.ToolId == 0) return BadRequest("error_incorrect_parameters"); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); NewToolInMagazineModel libraryMag = new NewToolInMagazineModel { PositionId = positionId, ToolId = toolId.ToolId }; // Call delete library function CmsError libraryError = ncAdapter.LoadToolInMagazine(magazineId, libraryMag, out MountedToolModel mounted); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(mounted); } } [Route("magazine/{magazineId:int}/unload/position/{positionId:int}"), HttpPut] public IHttpActionResult UnloadToolFromMagazine(int magazineId, int positionId) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); // Call delete library function CmsError libraryError = ncAdapter.UnloadToolInMagazine(magazineId, positionId); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(new { magazineId, positionId, toolId = 0 }); } } [Route("shank/{shankId:int}/load/{positionId:int}/tool/{toolId:int}"), HttpPut] public IHttpActionResult LoadToolIntoShank(int shankId, int positionId, int toolId) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.LoadTooolIntoShank(shankId, positionId, toolId); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("shank/{shankId:int}/unload/{positionId:int}"), HttpPut] public IHttpActionResult UnloadToolFromShank(int shankId, int positionId) { if (!ModelState.IsValid) return BadRequest(ModelState); using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.UnloadTooolFromShank(shankId, positionId); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("magazine/{magazineId:int}/position/{positionId:int}/load/balluf"), HttpPut] public IHttpActionResult BallufLoad(ushort magazineId, ushort positionId) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.TDILoad(magazineId, positionId); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("magazine/{magazineId:int}/position/{positionId:int}/unload/{toolId:int}/balluf"), HttpPut] public IHttpActionResult BallufUnload(ushort magazineId, ushort positionId, ushort toolId) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.TDIUnload(magazineId, positionId, toolId); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("balluf"), HttpPost] public IHttpActionResult WriteEmptyBalluf([FromBody]DTOTDISiemensToolModel tool) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.WriteEmptyBalluf((SiemensToolModel)tool); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("abort_balluf"), HttpPost] public IHttpActionResult AbortEmptyBalluf() { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.AbortEmptyBalluf(); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } [Route("delete_balluf/magazine/{magazineId:int}/position/{positionId:int}/unload/{toolId:int}/balluf"), HttpPut] public IHttpActionResult DeleteBalluf(ushort magazineId, ushort positionId, ushort toolId) { using (SiemensToolTableAdapter ncAdapter = new SiemensToolTableAdapter()) { ncAdapter.Connect(); CmsError libraryError = ncAdapter.ClearBallufTablet(magazineId, positionId, toolId); if (libraryError.IsError()) return BadRequest(libraryError.localizationKey); return Ok(); } } } }