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); }
public async Task <IActionResult> PutElbow(string id, [FromBody] ElbowCommand command) { command.RobotId = id; var result = await _mediator.Send(command); return(HandleCommand(result)); }
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))); }