diff --git a/Step.Database/Controllers/NcToolManagerController.cs b/Step.Database/Controllers/NcToolManagerController.cs index 54348dd3..dce0d27c 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -367,12 +367,12 @@ namespace Step.Database.Controllers dbCtx.SaveChanges(); } - public DbNcFamilyModel AddFamily(DTONewNcFamilyModel family) + public DbNcFamilyModel AddFamily(DTONcFamilyModel family) { DbNcFamilyModel dbFamily = (DbNcFamilyModel)family; - - if(dbFamily.FamilyId == 0) - // Get next id + + // Get next free id if id is 0 + if (dbFamily.FamilyId == 0) dbFamily.FamilyId = GetFirstFreeId(dbCtx.Families.Select(x => x.FamilyId).ToList()); dbCtx.Families.Add(dbFamily); diff --git a/Step.Model/Constants.cs b/Step.Model/Constants.cs index aa3ad2f3..1d60f866 100644 --- a/Step.Model/Constants.cs +++ b/Step.Model/Constants.cs @@ -231,6 +231,7 @@ namespace Step.Model public const string TOOL_IS_MOUNTED = "error_tool_mounted"; public const string OPTION_NOT_ACTIVE = "error_option_not_active"; public const string MAG_POS_DISABLED = "error_mag_pos_disabled"; + public const string ID_ALREADY_EXIST = "error_id_already_exist"; } // File paths diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index 01fc9cbd..86f06565 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -33,17 +33,17 @@ namespace Step.NC public NcHandler() => // Choose NC numericalControl = SetNumericalControl(); - + public void Dispose() { if (NcConfig.NcVendor != NC_VENDOR.SIEMENS) numericalControl.NC_Disconnect(); } - + public void Disconnect() { numericalControl.NC_Disconnect(); - } + } public CmsError Connect() { @@ -2089,7 +2089,7 @@ namespace Step.NC return numericalControl.TOOLS_WUpdateShanks(shanks); } - public DTONcFamilyModel AddFamily(DTONewNcFamilyModel family) + public DTONcFamilyModel AddFamily(DTONcFamilyModel family) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 2c27de58..40d49f21 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -56,55 +56,145 @@ namespace Step.Controllers.WebApi } } - [Route("tool"), HttpPost] - public IHttpActionResult AddTool([FromBody][Required]DTONewNcToolWithFamilyModel dtoToolWithFamily) - { - if (!ModelState.IsValid) - return BadRequest(ModelState); + //[Route("tool_old"), HttpPost] + //public IHttpActionResult AddTool([FromBody][Required]DTONewNcToolWithFamilyModel dtoToolWithFamily) + //{ + // if (!ModelState.IsValid) + // return BadRequest(ModelState); - short familyId = 0; + // 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 + // DTONcFamilyModel newFamily = new DTONcFamilyModel() { 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 + // DTONcFamilyModel newFamily = new DTONcFamilyModel(); + // 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)); + // } + //} + + public static DTONcToolWithFamilyModel DTO_TOOL_WITH_FAM = new DTONcToolWithFamilyModel() + { + Id = 0, + Name = "NewFam", + OffsetId1 = null, + OffsetId2 = null, + OffsetId3 = null, + LeftSize = 1, + RightSize = 1 + }; + + [Route("tool/{toolId:int}/{familyId:int}"), HttpPost] + public IHttpActionResult AddToolWithId(short toolId, short familyId) + { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - // Check if option is active + // Check if exists a tool with the same id + DbNcToolModel dbTool = toolsManager.FindTool(toolId); + if(dbTool != null) + return BadRequest(API_ERROR_KEYS.ID_ALREADY_EXIST); + + // Create default family + DTONcFamilyModel defaultFamily = new DTONcFamilyModel(); + // Copy data from static obj configured + SupportFunctions.CopyProperties(DTO_TOOL_WITH_FAM, defaultFamily); + + // Overwrite the custom model id + defaultFamily.Id = familyId; + + // Check if FAMILY 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); + // Check if id is already occupied + DbNcFamilyModel dbFam = toolsManager.FindFamily(familyId); + if (dbFam != null) + return BadRequest(API_ERROR_KEYS.ID_ALREADY_EXIST); - // Update return data - if (ToolManagerConfig.FamilyOpt) - { - dtoToolWithFamily.Name = fam.Name; - } - } + // Family id + // 0 : Auto set id + // N : Set id with user param + + // Add new family + dbFam = toolsManager.AddFamily(defaultFamily); + + // Set return value + DTO_TOOL_WITH_FAM.FamilyId = dbFam.FamilyId; + DTO_TOOL_WITH_FAM.Name = dbFam.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; + DbNcFamilyModel dbFam = toolsManager.AddFamily(defaultFamily); - // Set common id - familyId = dbFam.FamilyId; + // Set return value + DTO_TOOL_WITH_FAM.FamilyId = dbFam.FamilyId; + DTO_TOOL_WITH_FAM.Name = dbFam.Name; } // Check if option is active @@ -118,12 +208,12 @@ namespace Step.Controllers.WebApi }; // Create a new shank - DbNcShankModel ncShank = toolsManager.AddShank(newShank, familyId); + DbNcShankModel ncShank = toolsManager.AddShank(newShank, toolId); // Connect tool to new shank - dtoToolWithFamily.ShankId = ncShank.ShankId; + DTO_TOOL_WITH_FAM.ShankId = ncShank.ShankId; } else - dtoToolWithFamily.ShankId = null; + DTO_TOOL_WITH_FAM.ShankId = null; } using (NcHandler ncHandler = new NcHandler()) @@ -131,11 +221,11 @@ namespace Step.Controllers.WebApi ncHandler.Connect(); // Add tool - CmsError cmsError = ncHandler.AddTool(dtoToolWithFamily, out DTONcToolModel newTool, familyId); + CmsError cmsError = ncHandler.AddTool(DTO_TOOL_WITH_FAM, out DTONcToolModel newTool, toolId); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); - return Ok(CreateToolAndFamilyObj(newTool, dtoToolWithFamily)); + return Ok(CreateToolAndFamilyObj(newTool, DTO_TOOL_WITH_FAM)); } } @@ -196,6 +286,17 @@ namespace Step.Controllers.WebApi return familyTool; } + private DTONcToolWithFamilyModel CreateToolAndFamilyObj(DTONcToolModel tool, DTONcToolWithFamilyModel 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(); @@ -382,19 +483,20 @@ namespace Step.Controllers.WebApi } } - [Route("family"), HttpPost] - public IHttpActionResult AddFamily([FromBody][Required]DTONewNcFamilyModel dtoFamily) + [Route("family/{familyId:int}"), HttpPost] + public IHttpActionResult AddFamily(short familyId) { - if (!ModelState.IsValid) - return BadRequest(ModelState); + // Create default family + DTONcFamilyModel defaultFamily = new DTONcFamilyModel(); + // Copy data from static obj configured + SupportFunctions.CopyProperties(DTO_TOOL_WITH_FAM, defaultFamily); + defaultFamily.Id = familyId; using (NcHandler ncHandler = new NcHandler()) - { - CmsError cmsError = ncHandler.Connect(); - if (cmsError.IsError()) - return BadRequest(cmsError.localizationKey); - DTONcFamilyModel newFamily = ncHandler.AddFamily(dtoFamily); + + { + DTONcFamilyModel newFamily = ncHandler.AddFamily(defaultFamily); return Ok(newFamily); }