// POST public IHttpActionResult Post([FromBody] UpdateRoverRequestObject requestObject) { UpdateRoverResponseObject responseObject = new UpdateRoverResponseObject(); try { responseObject = business.UpdateRover(requestObject); } catch (Exception e) { responseObject.Message = "Something unexpected happened: " + e.Message; } return(Ok(responseObject)); }
public UpdateRoverResponseObject UpdateRover(UpdateRoverRequestObject requestObject) { UpdateRoverResponseObject responseObject = new UpdateRoverResponseObject(); Position startPoint = new Position(); Position endPoint = new Position(); Rover rover = roverRepository.SingleOrDefault(m => m.Id == requestObject.RoverId); if (!requestObject.IsValid()) { responseObject.Message = "The request body was invalid"; return(responseObject); } if (rover != null) { startPoint.Orientation = (Orientation)rover.Orientation; startPoint.PosX = rover.PosX; startPoint.PosY = rover.PosY; endPoint = ProcessMovementInstruction(startPoint, requestObject.MovementInstruction); rover.Orientation = (int)endPoint.Orientation; rover.PosX = endPoint.PosX; rover.PosY = endPoint.PosY; roverRepository.Update(rover); responseObject.CurrentPosition = endPoint.getResponseString(); responseObject.Message = "A rover with this RoverId was found. Its position has been updated"; } else { rover = new Rover(); rover.Id = requestObject.RoverId; startPoint.Orientation = (Orientation)rover.Orientation; startPoint.PosX = rover.PosX; startPoint.PosY = rover.PosY; endPoint = ProcessMovementInstruction(startPoint, requestObject.MovementInstruction); rover.Orientation = (int)endPoint.Orientation; rover.PosX = endPoint.PosX; rover.PosY = endPoint.PosY; roverRepository.Insert(rover); responseObject.CurrentPosition = endPoint.getResponseString(); responseObject.Message = "A rover with this RoverId was not found, a new rover has been created with RoverId:" + requestObject.RoverId; } return(responseObject); }