public IActionResult GetPosition(int roverId)
        {
            var rover = RoverFactory.GetRover(roverId);

            if (rover == null)
            {
                return(NotFound());
            }
            return(Ok(new RoverMoveResponse
            {
                RoverId = rover.Id,
                RoverName = rover.Name,
                CurrentX = rover.Position.X,
                CurrentY = rover.Position.Y,
                CurrentDirection = rover.Position.Direction.ToString()
            }));
        }
        public IActionResult Move(int roverId, RoverMoveModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var rover = RoverFactory.GetRover(roverId);

            if (rover == null)
            {
                throw new RoverException("Rover doesn't exist.");
            }
            var movements = new List <Movement>();

            foreach (var inst in model.MovementInstruction.ToUpper())
            {
                switch (inst)
                {
                case 'L':
                    movements.Add(Movement.Left);
                    break;

                case 'R':
                    movements.Add(Movement.Right);
                    break;

                case 'M':
                    movements.Add(Movement.Move);
                    break;
                }
            }
            rover.Move(movements);
            return(Ok(new RoverMoveResponse
            {
                RoverId = rover.Id,
                RoverName = rover.Name,
                CurrentX = rover.Position.X,
                CurrentY = rover.Position.Y,
                CurrentDirection = rover.Position.Direction.ToString()
            }));
        }