Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }