diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index 4f9a670a..41a2d785 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 bd55d479..e2e3457a 100644 --- a/Step.Database/Controllers/NcToolManagerController.cs +++ b/Step.Database/Controllers/NcToolManagerController.cs @@ -264,7 +264,9 @@ namespace Step.Database.Controllers { DbNcToolModel tool = FindTool(toolId); + tool.Status = ((DbNcToolModel)dtoTool).Status; var shankId = tool.ShankId; + // Update db model SupportFunctions.CopyProperties(dtoTool, tool); tool.ShankId = shankId; @@ -303,6 +305,8 @@ namespace Step.Database.Controllers DbNcFamilyModel dbFamily = FindFamily(familyId); // Copy data from NewModel to DbModel SupportFunctions.CopyProperties(family, dbFamily); + // Set cooling byte + dbFamily.CoolingByte = ((DbNcFamilyModel)family).CoolingByte; dbCtx.SaveChanges(); // Connect tools data diff --git a/Step.Model/DTOModels/ToolModels/DTONcFamilyModel.cs b/Step.Model/DTOModels/ToolModels/DTONcFamilyModel.cs index 787e9b11..4697a390 100644 --- a/Step.Model/DTOModels/ToolModels/DTONcFamilyModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTONcFamilyModel.cs @@ -82,7 +82,7 @@ namespace Step.Model.DTOModels.ToolModels public static explicit operator DTONewNcFamilyModel(DbNcFamilyModel obj) { // Get bit values - BitArray coolingByte = new BitArray(obj.CoolingByte); + BitArray coolingByte = new BitArray(new byte[] { obj.CoolingByte }); bool[] bits = new bool[8]; coolingByte.CopyTo(bits, 0); @@ -121,10 +121,7 @@ namespace Step.Model.DTOModels.ToolModels { // Prepare status byte bool[] result = new bool[8] { obj.Cooling, obj.Cooling1, obj.Cooling2, obj.Cooling3, obj.Cooling4, obj.Cooling5, obj.Cooling6, obj.Cooling7 }; - byte coolingByte = 0; - // Set each bit in the byte - for (int i = 0; i < 8; i++) - result[i] = (coolingByte & (1 << i)) == 0 ? false : true; + byte coolingByte = ConvertArrayToByte(result); return new DbNcFamilyModel() { @@ -148,6 +145,15 @@ namespace Step.Model.DTOModels.ToolModels ReviveDelta = obj.ReviveDelta, }; } + + protected static byte ConvertArrayToByte(bool[] bits) + { + BitArray bitField = new BitArray(bits); //BitArray takes a bool[] + byte[] bytes = new byte[1]; + bitField.CopyTo(bytes, 0); + + return bytes[0]; + } } public class DTONcFamilyModel : DTONewNcFamilyModel @@ -167,7 +173,7 @@ namespace Step.Model.DTOModels.ToolModels } // Get bit values - BitArray coolingByte = new BitArray(obj.CoolingByte); + BitArray coolingByte = new BitArray(new byte[] { obj.CoolingByte }); bool[] bits = new bool[8]; coolingByte.CopyTo(bits, 0); @@ -207,10 +213,7 @@ namespace Step.Model.DTOModels.ToolModels { // Prepare status byte bool[] result = new bool[8] { obj.Cooling, obj.Cooling1, obj.Cooling2, obj.Cooling3, obj.Cooling4, obj.Cooling5, obj.Cooling6, obj.Cooling7 }; - byte coolingByte = 0; - // Set each bit in the byte - for (int i = 0; i < 8; i++) - result[i] = (coolingByte & (1 << i)) == 0 ? false : true; + byte coolingByte = ConvertArrayToByte(result); return new DbNcFamilyModel() { diff --git a/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs b/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs index 0f0de267..7113af09 100644 --- a/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs +++ b/Step.Model/DTOModels/ToolModels/DTONcToolModel.cs @@ -1,4 +1,5 @@ using Step.Model.DatabaseModels; +using System; using System.Collections; using System.ComponentModel.DataAnnotations; using static CMS_CORE_Library.DataStructures; @@ -64,10 +65,7 @@ namespace Step.Model.DTOModels.ToolModels { // Prepare status byte bool[] result = new bool[8] { obj.Disabled, obj.Broken, obj.Measured, obj.ClockwiseRotation, obj.CounterClockwiseRotation, false, false, false }; - byte status = 0; - // Set each bit in the byte - for (int i = 0; i < 8; i++) - result[i] = (status & (1 << i)) == 0 ? false : true; + byte status = ConvertArrayToByte(result); return new DbNcToolModel() { @@ -79,6 +77,15 @@ namespace Step.Model.DTOModels.ToolModels Status = status }; } + + protected static byte ConvertArrayToByte(bool[] bits) + { + BitArray bitField = new BitArray(bits); //BitArray takes a bool[] + byte[] bytes = new byte[1]; + bitField.CopyTo(bytes, 0); + + return bytes[0]; + } } public class DTONcToolModel : DTONcTool @@ -94,7 +101,7 @@ namespace Step.Model.DTOModels.ToolModels public static explicit operator DTONcToolModel(DbNcToolModel obj) { // Get bit values - var statusBits = new BitArray(obj.Status); + var statusBits = new BitArray(new byte[] { obj.Status }); bool[] bits = new bool[8]; statusBits.CopyTo(bits, 0); @@ -118,10 +125,7 @@ namespace Step.Model.DTOModels.ToolModels { // Prepare status byte bool[] result = new bool[8] { obj.Disabled, obj.Broken, obj.Measured, obj.ClockwiseRotation, obj.CounterClockwiseRotation, false, false, false }; - byte status = 0; - // Set each bit in the byte - for (int i = 0; i < 8; i++) - result[i] = (status & (1 << i)) == 0 ? false : true; + byte status = ConvertArrayToByte(result); return new DbNcToolModel() { @@ -174,10 +178,7 @@ namespace Step.Model.DTOModels.ToolModels { // Prepare status byte bool[] result = new bool[8] { obj.Disabled, obj.Broken, obj.Measured, obj.ClockwiseRotation, obj.CounterClockwiseRotation, false, false, false}; - byte status = 0; - // Set each bit in the byte - for (int i = 0; i < 8; i++) - result[i] = (status & (1 << i)) == 0 ? false : true; + byte status = ConvertArrayToByte(result); return new DbNcToolModel() { diff --git a/Step.Model/DatabaseModels/NcToolModel.cs b/Step.Model/DatabaseModels/NcToolModel.cs index 87f75ae8..76405821 100644 --- a/Step.Model/DatabaseModels/NcToolModel.cs +++ b/Step.Model/DatabaseModels/NcToolModel.cs @@ -54,6 +54,7 @@ namespace Step.Model.DatabaseModels FamilyId = obj.FamilyId, OffsetLength = (ushort)obj.OffsetLength, ResidualLife = (ushort)obj.ResidualLife, + Status = obj.Status, ResidualRevive = (ushort)obj.ResidualRevive, ShankId = obj.ShankId == null ? 0 : obj.ShankId.Value, OffsetId1 = obj.OffsetId1 == null ? 0 : obj.OffsetId1.Value, diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index f09dcb49..c216fe7c 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -1572,7 +1572,7 @@ namespace Step.NC { updatedStatus = new Dictionary(); updatedLives = new Dictionary(); - return numericalControl.TOOLS_RUpdatedToolsData(ref updatedStatus, ref updatedLives); + return numericalControl.TOOLS_RUpdatedToolsData(ref updatedStatus, ref updatedLives); } public CmsError CheckIfShankCanFit(int magazineId, int positionId, DbNcShankModel shankToBeLoaded)