public IActionResult TiltDownHead(long id) { HeadVO robotHead = _robotService.GetHead(id); int newInclinationNumber = ((int)robotHead.HeadInclination) + 1; return(ChangeRobotInclination(id, robotHead, newInclinationNumber)); }
public IActionResult RotateHeadToRight(long id) { HeadVO robotHead = _robotService.GetHead(id); int newRotationNumber = ((int)robotHead.HeadRotation) + 1; return(ChangeRobotHeadRotation(id, robotHead, newRotationNumber)); }
public bool PutHead(long id, HeadVO headMoved) { bool isHeadMoved = false; using (var client = new HttpClient()) { client.BaseAddress = new Uri(_kraftwerkAPIUrl); Task <HttpResponseMessage> putTask = client.PutAsJsonAsync <HeadVO>($"api/Robot/{id}/Head", headMoved); putTask.Wait(); HttpResponseMessage result = putTask.Result; if (result.IsSuccessStatusCode) { isHeadMoved = true; } else if (result.StatusCode == HttpStatusCode.BadRequest) { isHeadMoved = false; } } return(isHeadMoved); }
private JsonResult ChangeRobotHeadRotation(long id, HeadVO robotHead, int newRotationNumber) { HeadRotation newHeadRotation; string newHeadRotationDescription = string.Empty; bool isValidMovement = newRotationNumber.TryParseEnum(out newHeadRotation); if (isValidMovement) { robotHead.HeadRotation = newHeadRotation; newHeadRotationDescription = robotHead.HeadRotation.GetDescription(); bool isHeadMoved = _robotService.PutHead(id, robotHead); if (isHeadMoved == false) { isValidMovement = false; } } return(Json(new { isValidMovement, description = newHeadRotationDescription })); }
public HeadVO GetHead(long id) { HeadVO head = null; using (var client = new HttpClient()) { client.BaseAddress = new Uri(_kraftwerkAPIUrl); Task <HttpResponseMessage> responseTask = client.GetAsync($"api/robot/{id}/Head"); responseTask.Wait(); HttpResponseMessage result = responseTask.Result; if (result.IsSuccessStatusCode) { Task <HeadVO> readTask = result.Content.ReadAsAsync <HeadVO>(); readTask.Wait(); head = readTask.Result; } } return(head); }
public bool CanMoveHead(RobotVO robot, HeadVO headMoved) { bool isInclinationMovement = IsInclinationMovement(robot, headMoved.HeadInclination); bool isRotationMovement = IsRotationMovement(robot, headMoved.HeadRotation); // Não pode haver dois movimentos de uma vez if (isInclinationMovement && isRotationMovement) { return(false); } if (isInclinationMovement) { return(ChangeInclination(robot, headMoved.HeadInclination)); } if (isRotationMovement) { return(ChangeRotation(robot, headMoved.HeadRotation)); } //Não houve movimento return(true); }