diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index bbaf7635..dd205339 100644 Binary files a/Libs/CMS_CORE_Library.dll and b/Libs/CMS_CORE_Library.dll differ diff --git a/Step.Database/Controllers/NcToolManagerController.cs b/Step.Database/Controllers/NcToolManagerController.cs index 1e526416..82c60d03 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -9,7 +9,7 @@ namespace Step.Database.Controllers { public class NcToolManagerController : IDisposable { - private DatabaseContext dbCtx; + public DatabaseContext dbCtx; public NcToolManagerController() { @@ -319,7 +319,6 @@ namespace Step.Database.Controllers public void DeleteShank(DbNcShankModel shank) { - dbCtx.Shanks.Attach(shank); dbCtx.Shanks.Remove(shank); dbCtx.SaveChanges(); diff --git a/Step.Database/DatabaseContext.cs b/Step.Database/DatabaseContext.cs index 7bd0c8e2..0cbc2950 100644 --- a/Step.Database/DatabaseContext.cs +++ b/Step.Database/DatabaseContext.cs @@ -28,10 +28,9 @@ namespace Step.Database public DbSet PerformedMaintenances { get; set; } public DbSet MaintenancesNotes { get; set; } public DbSet MaintenanceFiles { get; set; } - + // Tool manager public DbSet Families { get; set; } public DbSet Shanks { get; set; } - // public DbSet Offsets { get; set; } public DbSet Tools { get; set; } public DbSet MagazinePositions { get; set; } @@ -40,17 +39,6 @@ namespace Step.Database // public static string CONNECTION_STRING = "Server = " + ServerStartupConfig.DatabaseAddress + "; Database=" + DATABASE_NAME +";Uid="+ DATABASE_USER +";Pwd="+ DATABASE_PWD +";"; - //protected override void OnModelCreating(DbModelBuilder modelBuilder) - //{ - // modelBuilder.Entity() - // .HasOptional(e => e.Shank) - // .WithMany() - // .HasForeignKey(e => e.ShankId) - // .WillCascadeOnDelete(false); - - // base.OnModelCreating(modelBuilder); - //} - public DatabaseContext() : base(CONNECTION_STRING) { diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index 6eabd345..23d8e4fc 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -861,9 +861,9 @@ namespace Step.NC using (NcToolManagerController toolsManager = new NcToolManagerController()) { - List tools = toolsManager.FindToolsWithDependencies(); + List tools = toolsManager.FindToolsWithDependencies(); - foreach(DbNcToolModel tool in tools) + foreach (DbNcToolModel tool in tools) { DTONcToolModel dtoTool = (DTONcToolModel)tool; @@ -1131,21 +1131,89 @@ namespace Step.NC } } - public DTONcToolModel UpdateTool(int toolId, DTONewNcToolModel dtoTool) + public DTONcToolModel UpdateTool(int toolId, DTONewNcToolModel newTool) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { // Update Tool - DbNcToolModel ncTool = toolsManager.UpdateTool(toolId, dtoTool); + DbNcToolModel dbTool = toolsManager.UpdateTool(toolId, newTool); + + DTONcToolModel toolWithOffsets = new DTONcToolModel(); - DTONcToolModel toolWithOffset = new DTONcToolModel(); // Populate tool offset - GetToolData(ncTool, ref toolWithOffset); + GetToolData(dbTool, ref toolWithOffsets); - return toolWithOffset; + if (dbTool.ShankId != null) + { + DbNcShankModel shank = toolsManager.FindShank(dbTool.ShankId.Value); + if (shank.MagazineId != null) + { + //CmsError cmsError = StopEditData(); + //if(cmsError.IsError()) + //{ + // Console.WriteLine("Ripristino"); + //} + // Get mounted shanks + CmsError cmsError = UpdateNcTools(toolsManager); + if (cmsError.IsError()) + Console.WriteLine("Ripristino"); + else + numericalControl.TOOLS_WStopEditData(); + } + } + + return toolWithOffsets; } } + public void DeleteNcTool(DbNcToolModel tool) + { + using (NcToolManagerController toolsManager = new NcToolManagerController()) + { + using (var dbContextTransaction = toolsManager.dbCtx.Database.BeginTransaction()) + { + + toolsManager.DeleteTool(tool.ToolId); + + if (tool.ShankId != null) + { + DbNcShankModel shank = toolsManager.FindShank(tool.ShankId.Value); + if (shank.MagazineId != null) + { + // Get mounted shanks + CmsError cmsError = UpdateNcTools(toolsManager); + if (cmsError.IsError()) + Console.WriteLine("Ripristino"); + else + numericalControl.TOOLS_WStopEditData(); + } + } + + dbContextTransaction.Rollback(); + + } + } + } + + private CmsError UpdateNcTools(NcToolManagerController toolsManager) + { + List shanks = toolsManager + .FindShanks() + .Where(x => x.MagazineId != null) + .Select(x => (NcShankModel)x) + .ToList(); + + // Get tools + List tools = toolsManager + .FindTools() + .Select(x => (NcToolModel)x) + .Where(x => shanks.Any(y => y.Id == x.ShankId)) // Find only mounted tools + .ToList(); + + // Update tools + return numericalControl.TOOLS_WUpdateTools(tools); + } + public DTONcFamilyModel AddFamily(DTONewNcFamilyModel family) { using (NcToolManagerController toolsManager = new NcToolManagerController()) @@ -1158,10 +1226,59 @@ namespace Step.NC { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - return (DTONcFamilyModel)toolsManager.UpdateFamily(familyId, family); + // Update db family + DTONcFamilyModel newFamily = (DTONcFamilyModel)toolsManager.UpdateFamily(familyId, family); + // Update nc families + CmsError cmsError = UpdateNcFamily(toolsManager); + if (cmsError.IsError()) + Console.WriteLine("Ripristino"); + else + numericalControl.TOOLS_WStopEditData(); + + return newFamily; } } + public void DeleteNcFamily(DbNcFamilyModel family) + { + using (NcToolManagerController toolsManager = new NcToolManagerController()) + { + toolsManager.DeleteFamily(family); + // Update nc families + CmsError cmsError = UpdateNcFamily(toolsManager); + if (cmsError.IsError()) + Console.WriteLine("Ripristino"); + else + numericalControl.TOOLS_WStopEditData(); + } + } + + private CmsError UpdateNcFamily(NcToolManagerController toolsManager) + { + // Get mounted shanks + List shanks = toolsManager + .FindShanks() + .Where(x => x.MagazineId != null) + .Select(x => (NcShankModel)x) + .ToList(); + + // Get tools + List tools = toolsManager + .FindTools() + .Select(x => (NcToolModel)x) + .Where(x => shanks.Any(y => y.Id == x.ShankId)) // Find only mounted tools + .ToList(); + + List families = toolsManager + .FindFamilies() + .Select(x => (NcFamilyModel)x) + .Where(x => tools.Any(y => y.FamilyId == x.Id)) // Find only families of mounted tools + .ToList(); + + // Update nc families + return numericalControl.TOOLS_WUpdateFamilies(families); + } + public DTONcShankModel AddShank(DTONewNcShankModel shank) { using (NcToolManagerController toolsManager = new NcToolManagerController()) @@ -1174,39 +1291,70 @@ namespace Step.NC { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - return (DTONcShankModel)toolsManager.UpdateShank(shankId, dtoShank); + // Update db data + DTONcShankModel shank = (DTONcShankModel)toolsManager.UpdateShank(shankId, dtoShank); + if (shank.MagazineId != null) + { + // Update nc data + CmsError cmsError = UpdateNcShank(toolsManager); + if (cmsError.IsError()) + Console.WriteLine("Ripristino"); + else + numericalControl.TOOLS_WStopEditData(); + } + + return shank; } } + public void DeleteNcShank(int shankId) + { + using (NcToolManagerController toolsManager = new NcToolManagerController()) + { + // Delete database shank + toolsManager.DeleteShank(shankId); + + // Update nc data + CmsError cmsError = UpdateNcShank(toolsManager); + if (cmsError.IsError()) + Console.WriteLine("Ripristino"); + else + numericalControl.TOOLS_WStopEditData(); + } + } + + private CmsError UpdateNcShank(NcToolManagerController toolsManager) + { + // Get mounted shanks + List shanks = toolsManager + .FindShanks() + .Where(x => x.MagazineId != null) + .Select(x => (NcShankModel)x) + .ToList(); + + // Update nc data + return numericalControl.TOOLS_WUpdateShanks(shanks); + } + public DTONcMagazinePositionModel UpdateMagazinePosition(DbNcMagazinePositionModel dbPos, DTONcMagazinePositionModel dtoPos) { using (NcToolManagerController toolsManager = new NcToolManagerController()) { - return (DTONcMagazinePositionModel)toolsManager.UpdatePosition(dbPos, dtoPos); - } - } - - public void DeleteNcTool(DbNcToolModel tool) - { - using (NcToolManagerController toolsManager = new NcToolManagerController()) - { - toolsManager.DeleteTool(tool); - } - } + DTONcMagazinePositionModel magPos = (DTONcMagazinePositionModel)toolsManager.UpdatePosition(dbPos, dtoPos); - public void DeleteNcShank(DbNcShankModel shank) - { - using (NcToolManagerController toolsManager = new NcToolManagerController()) - { - toolsManager.DeleteShank(shank); - } - } + // Get magazine positions + List positions = toolsManager.FindPositions() + .Select(x => (NcMagazinePositionModel)x) + .ToList(); - public void DeleteNcFamily(DbNcFamilyModel family) - { - using (NcToolManagerController toolsManager = new NcToolManagerController()) - { - toolsManager.DeleteFamily(family); + // Update nc data + CmsError cmsError = numericalControl.TOOLS_WUpdateMagazinePositions(positions); + if (cmsError.IsError()) + Console.WriteLine("Ripristino"); + else + numericalControl.TOOLS_WStopEditData(); + + return magPos; } } @@ -1247,12 +1395,17 @@ namespace Step.NC } } - public CmsError StartEdit() + public CmsError StartEditData() { - return numericalControl.TOOLS_WStartEdit(); + return numericalControl.TOOLS_WStartEditData(); } - public CmsError StopEdit() + public CmsError StartEditTooling(int magazineId) + { + return numericalControl.TOOLS_WStartEditTooling(magazineId); + } + + public CmsError StopEditTooling() { using (NcToolManagerController toolsManager = new NcToolManagerController()) { @@ -1264,7 +1417,7 @@ namespace Step.NC .Where(x => x.MagazineId != null) .Select(x => (NcShankModel)x) .ToList(); - + CmsError cmsError = numericalControl.TOOLS_WUpdateShanks(shanks); if (cmsError.IsError()) return cmsError; @@ -1277,12 +1430,12 @@ namespace Step.NC if (cmsError.IsError()) return cmsError; - // Get tools + // Get tools List tools = toolsManager .FindTools() .Select(x => (NcToolModel)x) - .Where(x => shanks.Any(y => y.Id == x.ShankId)) // Find only mounted tools - .ToList(); + .Where(x => shanks.Any(y => y.Id == x.ShankId)) // Find only mounted tools + .ToList(); // Update tools cmsError = numericalControl.TOOLS_WUpdateTools(tools); @@ -1302,7 +1455,7 @@ namespace Step.NC Console.WriteLine(sw.ElapsedMilliseconds); } - return numericalControl.TOOLS_WStopEdit(); + return numericalControl.TOOLS_WStopEditData(); } #endregion Osai/Fanuc Tools diff --git a/Step.NC/Step.NC.csproj b/Step.NC/Step.NC.csproj index 020d964c..eec04cd2 100644 --- a/Step.NC/Step.NC.csproj +++ b/Step.NC/Step.NC.csproj @@ -36,6 +36,7 @@ False ..\Libs\CMS_CORE_Library.dll + diff --git a/Step/Controllers/WebApi/NcToolManagerController.cs b/Step/Controllers/WebApi/NcToolManagerController.cs index 11be12eb..389ead06 100644 --- a/Step/Controllers/WebApi/NcToolManagerController.cs +++ b/Step/Controllers/WebApi/NcToolManagerController.cs @@ -128,7 +128,7 @@ namespace Step.Controllers.WebApi // If option is active find & delete tool shank DbNcShankModel shank = toolsManager.FindShank(tool.ShankId.Value); - ncHandler.DeleteNcShank(shank); + ncHandler.DeleteNcShank(shank.ShankId); } ncHandler.DeleteNcTool(tool); @@ -206,7 +206,7 @@ namespace Step.Controllers.WebApi { ncHandler.Connect(); - ncHandler.DeleteNcShank(shank); + ncHandler.DeleteNcShank(shank.ShankId); return Ok(); } @@ -471,14 +471,14 @@ namespace Step.Controllers.WebApi } } - [Route("start_edit"), HttpPut] - public IHttpActionResult StartEdit() + [Route("start_edit_data"), HttpPut] + public IHttpActionResult StartEditData() { using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); - CmsError cmsError = ncHandler.StartEdit(); + CmsError cmsError = ncHandler.StartEditData(); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); @@ -487,19 +487,33 @@ namespace Step.Controllers.WebApi } } - [Route("stop_edit"), HttpPut] + [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_data"), HttpPut] public IHttpActionResult StopEdit() { using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); - CmsError cmsError = ncHandler.StopEdit(); + CmsError cmsError = ncHandler.StopEditTooling(); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); - - return Ok(); } }