public PassEntitiesResultModel PassEntities(EntityOrganiserViewModel model) { IEnumerable <string> _userRoles = User.Claims.Select(x => x.Value); PassEntitiesActionObject _actionObject = _orderActions.PassEntities(_userRoles, User.Identity.Name, model); if (!_actionObject.Success) { if (_actionObject.RedirectToError) { Error(_actionObject.Message); } //no need for else clause here. This method always requires redirects } PassEntitiesResultModel resultModel = new PassEntitiesResultModel() { SourceEntitiesRFC = _actionObject.Source.EntitiesRFC, TargetEntitiesInProgress = _actionObject.Target.EntitiesInProgress, TargetDepartmentStateId = _actionObject.Target.DepartmentStateId, TargetDepartmentStateStatus = _actionObject.Target.Status, StartTime = _actionObject.Target.Start.ToString("dd/MM/yy (HH:mm)") }; return(resultModel); }
public Dictionary <string, string> MarkAsReady(EntityOrganiserViewModel model) { Dictionary <string, string> result = new Dictionary <string, string>(); if (!ModelState.IsValid) { result.Add("MessageType", "Error"); result.Add("Message", "Invalid selection. Please refresh the page and try again."); return(result); } MarkAsReadyActionObject _actionObject = _depStateActions.MarkAsReady(model, User.Identity.Name); if (!User.IsInRole(_actionObject.DepartmentState.Name)) { Error("You don't have the necessary permissions to do that."); } return(_actionObject.Result); }
public PassEntitiesActionObject PassEntities(IEnumerable <string> userRoles, string userName, EntityOrganiserViewModel model) { DepartmentState sourceDepartmentState = _unitOfWork.DepartmentStateRepository.GetDepartmentStateById(model.DepartmentStateId); DepartmentState targetDepartmentState = _unitOfWork.DepartmentStateRepository.GetDepartmentStateByOrderIdAndLocNum(sourceDepartmentState.OrderId, sourceDepartmentState.LocationPosition + 1); PassEntitiesActionObject _actionObject = new PassEntitiesActionObject(); if (!userRoles.Any(x => x == targetDepartmentState.Name)) { _actionObject.Success = false; _actionObject.Message = "Something went wrong, logout and log back in to fix the issue."; _actionObject.RedirectToError = true; } if (sourceDepartmentState.EntitiesRFC >= model.EntitiesPassed) { sourceDepartmentState.EntitiesRFC -= model.EntitiesPassed; } else { _actionObject.Success = false; _actionObject.Message = "Entity count insufficient."; _actionObject.RedirectToError = true; } if (targetDepartmentState.Status == ((Enums.Statuses) 1).ToString()) { targetDepartmentState.Status = ((Enums.Statuses) 2).ToString(); targetDepartmentState.Start = DateTime.Now; } targetDepartmentState.EntitiesInProgress += model.EntitiesPassed; _unitOfWork.Update(sourceDepartmentState); _unitOfWork.Update(targetDepartmentState); _unitOfWork.Complete(); _unitOfWork.LogRepository.CreateLog( userName, "Moved " + model.EntitiesPassed.ToString() + " " + _unitOfWork.OrderRepository.Find(x => x.OrderId == sourceDepartmentState.OrderId).FirstOrDefault().EntityType + " from " + sourceDepartmentState.Name + " to " + targetDepartmentState.Name + ".", DateTime.Now, _unitOfWork.OrderRepository.Find(o => o.OrderId == sourceDepartmentState.OrderId) .Select(o => o.OrderNumber).FirstOrDefault()); _actionObject.Source = sourceDepartmentState; _actionObject.Target = targetDepartmentState; return(_actionObject); }
public MarkAsReadyActionObject MarkAsReady(EntityOrganiserViewModel model, string currentUserName) { using (_unitOfWork) { Dictionary <string, string> result = new Dictionary <string, string>(); MarkAsReadyActionObject _actionResult = new MarkAsReadyActionObject(); DepartmentState _departmentState = new DepartmentState(); _departmentState = _unitOfWork.DepartmentStateRepository.GetDepartmentStateById(model.DepartmentStateId); var order = _unitOfWork.OrderRepository.GetById(_departmentState.OrderId); string additionalMessage = ""; if (_departmentState.EntitiesInProgress < model.EntitiesPassed) { _actionResult.Result.Add("MessageType", "Error"); _actionResult.Result.Add("Message", "There are only " + _departmentState.EntitiesInProgress.ToString() + " entities in progress. Refresh the page."); return(_actionResult); } _departmentState.EntitiesRFC += model.EntitiesPassed; _departmentState.EntitiesInProgress -= model.EntitiesPassed; _departmentState.EntitiesPassed += model.EntitiesPassed; if (_departmentState.TotalEntityCount == _departmentState.EntitiesPassed) { _departmentState.Status = ((Enums.Statuses) 3).ToString(); _departmentState.Finish = DateTime.Now; } //TODO test this if statement if (_unitOfWork.DepartmentStateRepository.IsLastOrderDepartmentState(_departmentState.OrderId, _departmentState.DepartmentStateId)) { order.EntitiesCompleted += model.EntitiesPassed; if (_departmentState.EntitiesRFC == order.EntityCount) { order.FinshedAt = DateTime.Now; order.Status = ((Enums.Statuses) 3).ToString(); additionalMessage = "Order status: " + ((Enums.Statuses) 3).ToString() + "."; } _unitOfWork.Update(order); } _unitOfWork.Update(_departmentState); _unitOfWork.Complete(); result.Add("MessageType", "Success"); result.Add("Message", model.EntitiesPassed.ToString() + " entities successfully marked as ready for collection!" + additionalMessage); _unitOfWork.LogRepository.CreateLog( currentUserName, "Marked " + model.EntitiesPassed.ToString() + " " + order.EntityType + " as ready for collection.", DateTime.Now, order.OrderNumber); _actionResult.Result = result; _actionResult.DepartmentState = _departmentState; return(_actionResult); } }