/// <summary> /// /// </summary> /// <param name="RoverControlModel"></param> /// <returns></returns> public List <RoverOutputModel> ExecuteRoverNavigation(RoverControlModel RoverControlModel) { GridTopX = RoverControlModel.GridTopX; GridTopY = RoverControlModel.GridTopY; List <RoverOutputModel> FinalRoverCoordinates = new List <RoverOutputModel>(); foreach (RoverInputModel input in RoverControlModel.RoverInputs) { FinalRoverCoordinates.Add(ExecuteCommand(input)); } return(FinalRoverCoordinates); }
/// <summary> /// Calls the Api endpoint to get the final coordinates /// </summary> /// <param name="RoverInputModel"></param> /// <returns></returns> public List <Rover.Model.RoverOutputModel> GetRoverCoordinates(string RoverInputModel) { string[] stringSeparators = new string[] { "\r\n" }; var commands = RoverInputModel.TrimEnd().Split(stringSeparators, StringSplitOptions.None); List <RoverInputModel> inputModels = new List <RoverInputModel>(); var gridDimensions = commands[0].Split(' '); // First line sets the plateaus dimensoins RoverControlModel RoverControlModel = new RoverControlModel(); RoverControlModel.GridTopX = int.Parse(gridDimensions[0]); RoverControlModel.GridTopY = int.Parse(gridDimensions[1]); for (int i = 1; i < commands.Length; i += 2) { RoverInputModel model = new RoverInputModel(); var postion = commands[i].Split(' '); model.Position.PositionX = int.Parse(postion[0]); model.Position.PositionY = int.Parse(postion[1]); model.Position.Heading = postion[2]; model.Instructions = commands[i + 1]; RoverControlModel.RoverInputs.Add(model); } string inputJson = JsonConvert.SerializeObject(RoverControlModel); List <RoverOutputModel> FinalRoverCoordinates = new List <RoverOutputModel>(); try { FinalRoverCoordinates = ExecuteRoverNavigation(RoverControlModel); } catch (Exception ex) { //Log Exception Console.WriteLine(ex.Message); throw new Exception("Error occured while accessing the service API"); } return(FinalRoverCoordinates); }