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