diff --git a/Libs/CMS_CORE_Library.dll b/Libs/CMS_CORE_Library.dll index 89938fb8..48d3a764 100644 Binary files a/Libs/CMS_CORE_Library.dll and b/Libs/CMS_CORE_Library.dll differ diff --git a/Step.Database/Controllers/UsersController.cs b/Step.Database/Controllers/UsersController.cs index 61e684bb..32bffea2 100644 --- a/Step.Database/Controllers/UsersController.cs +++ b/Step.Database/Controllers/UsersController.cs @@ -96,7 +96,7 @@ namespace Step.Database.Controllers return dbCtx.Users.Where(u => u.UserId == id).FirstOrDefault(); } - private UserModel FindByUsername(string username) + public UserModel FindByUsername(string username) { // Find user by Id with Role object included return dbCtx.Users.Where(u => u.Username == username).FirstOrDefault(); diff --git a/Step.Model/DTOModels/DTOProcessDataModel.cs b/Step.Model/DTOModels/DTOProcessDataModel.cs index f78d477f..0d542381 100644 --- a/Step.Model/DTOModels/DTOProcessDataModel.cs +++ b/Step.Model/DTOModels/DTOProcessDataModel.cs @@ -11,6 +11,8 @@ namespace Step.Model.DTOModels public byte SelectedAxis; public QUEUE_STATUS QueueStatus; public bool StartStopQueueEnabled; + public short ActiveOrigin; + public short ActiveOffsetId; public List processes; public DTOProcessesDataModel() @@ -25,11 +27,11 @@ namespace Step.Model.DTOModels // Object is not a DTOProcessDataModel instance if (item == null) return false; - + if (IsRunning != item.IsRunning) return false; - if (SelectedProcess != item.SelectedProcess) + if (SelectedProcess != item.SelectedProcess) return false; if (SelectedAxis != item.SelectedAxis) return false; @@ -37,7 +39,7 @@ namespace Step.Model.DTOModels if (item.processes.Count != processes.Count) return false; // Check list's elements - bool listAreEquals = item.processes.All(processes.Contains); + bool listAreEquals = item.processes.All(processes.Contains); if (!listAreEquals) return false; @@ -47,6 +49,12 @@ namespace Step.Model.DTOModels if (StartStopQueueEnabled != item.StartStopQueueEnabled) return false; + if (ActiveOffsetId != item.ActiveOffsetId) + return false; + + if (ActiveOrigin != item.ActiveOrigin) + return false; + return true; } diff --git a/Step.Model/DTOModels/DTOUserModel.cs b/Step.Model/DTOModels/DTOUserModel.cs index 56699d5c..56ec67cf 100644 --- a/Step.Model/DTOModels/DTOUserModel.cs +++ b/Step.Model/DTOModels/DTOUserModel.cs @@ -31,7 +31,7 @@ namespace Step.Model.DTOModels } } - public class DTOUserModel : DTOMessageUserModel + public class DTOUserModel : DTOMessageUserModel { public CultureInfo Language { get; set; } public DTORoleModel Role { get; set; } diff --git a/Step.NC/NcHandler.cs b/Step.NC/NcHandler.cs index 49f2e444..28994ec3 100644 --- a/Step.NC/NcHandler.cs +++ b/Step.NC/NcHandler.cs @@ -21,7 +21,7 @@ using System.IO; using System.Linq; using static CMS_CORE_Library.Models.DataStructures; using static Step.Config.ServerConfig; -using static Step.Database.Controllers.QueueController; +using static Step.Database.Controllers.QueueController; using static Step.Model.Constants; namespace Step.NC @@ -32,7 +32,7 @@ namespace Step.NC public NcHandler() => // Choose NC - numericalControl = SetNumericalControl(); + numericalControl = SetNumericalControl(); public void Dispose() { @@ -860,6 +860,9 @@ namespace Step.NC ProcessDataModel tmpProcPP = new ProcessDataModel(); // Get process status cmsError = numericalControl.PROC_RStatusAndData(i, ref tmpProcPP); + if (cmsError.IsError()) + return cmsError; + // if at least one process is in run, NC is running // Add to list processesData.processes.Add(new ProcessModel() @@ -888,6 +891,7 @@ namespace Step.NC status = PROC_STATUS.IDLE; } } + // Read selected axes cmsError = numericalControl.AXES_RSelectedAxis(ref processesData.SelectedAxis); if (cmsError.IsError()) @@ -899,10 +903,19 @@ namespace Step.NC if (cmsError.IsError()) return cmsError; + // Get selectedProcessData + SelectedProcessData selectedData = new SelectedProcessData(); + cmsError = numericalControl.PROC_RSelectedProcessData(processesData.SelectedProcess, ref selectedData); + if(cmsError.IsError()) + return cmsError; + // Set data processesData.QueueStatus = queueStatus.Status; processesData.StartStopQueueEnabled = queueStatus.StartStopQueueEnabled; + processesData.ActiveOrigin = selectedData.Origin; + processesData.ActiveOffsetId = selectedData.ActiveOffsetId; + return cmsError; } diff --git a/Step/Controllers/WebApi/UserController.cs b/Step/Controllers/WebApi/UserController.cs index 00a60d70..c76304ed 100644 --- a/Step/Controllers/WebApi/UserController.cs +++ b/Step/Controllers/WebApi/UserController.cs @@ -133,6 +133,9 @@ namespace Step.Controllers.WebApi { using (UsersController usersController = new UsersController()) { + if (usersController.FindByUsername(userData.Username) != null) + return BadRequest(); + // Update database with new user data var user = usersController.UpdateUserData(userId, userData); @@ -143,9 +146,15 @@ namespace Step.Controllers.WebApi [Route("manager/user"), HttpPost] public IHttpActionResult CreateUser(UserModel model) { - UsersController users = new UsersController(); - DTOUserModel user = users.Create(model.Username, model.Password, model.FirstName, model.LastName, model.Language); - return Ok(user); + using (UsersController usersController = new UsersController()) + { + if (usersController.FindByUsername(model.Username) != null) + return BadRequest(); + + DTOUserModel user = usersController.Create(model.Username, model.Password, model.FirstName, model.LastName, model.Language); + + return Ok(user); + } } [Route("manager/user/{userId:int}"), HttpDelete]