示例#1
0
        private Result <Exception, int> ProcessElbowAction(ElbowCommand command, RobotAgreggate robot)
        {
            Result <Exception, int> actionCallback;

            switch (command.ElbowSide.ToLower())
            {
            case "left":
                actionCallback = ExecuteActionInLeftElbow(robot, command.ElbowAction);
                break;

            case "right":
                actionCallback = ExecuteActionInRightElbow(robot, command.ElbowAction);
                break;

            default:
                return(new BussinessException(ErrorCodes.BadRequest, "ElbowSide possui comando inválido."));
            }

            if (actionCallback.IsSuccess)
            {
                return(PersistRobotState(robot, actionCallback.Success));
            }

            return(actionCallback.Failure);
        }
示例#2
0
        public async Task <IActionResult> PutElbow(string id, [FromBody] ElbowCommand command)
        {
            command.RobotId = id;

            var result = await _mediator.Send(command);

            return(HandleCommand(result));
        }
示例#3
0
        public Task <Result <Exception, int> > Handle(ElbowCommand command, CancellationToken cancellationToken)
        {
            var findRobotCallback = _repository.Get(command.RobotId);

            if (!findRobotCallback.IsSuccess)
            {
                return(Task.FromResult(findRobotCallback.Failure.Run <int>()));
            }

            return(Task.FromResult(ProcessElbowAction(command, findRobotCallback.Success)));
        }