public string ValidateInput(string inputCommands) { ToyRobotOutputViewModel outputModel = new ToyRobotOutputViewModel(); List <ToyRobotOutputModel> finalCoordinates = new List <ToyRobotOutputModel>(); ToyRobotControlModel controlModel = new ToyRobotControlModel(); string validationError = string.Empty; string[] commandSeparator = new string[] { "PLACE" }; string[] inputs = inputCommands.Split(commandSeparator, StringSplitOptions.None); string[] stringSeparators = new string[] { "\r\n" }; foreach (string commands in inputs) { ToyRobotInputModel inputModel = new ToyRobotInputModel(); if (!string.IsNullOrEmpty(commands)) { var command = commands.Split(stringSeparators, StringSplitOptions.None); if (command.Length > 1) { string[] startingCoordinate = command[0].Split(','); if (startingCoordinate.Length > 2) { inputModel.Position.PositionX = Convert.ToInt32(startingCoordinate[0]); inputModel.Position.PositionY = Convert.ToInt32(startingCoordinate[1]); inputModel.Position.Heading = startingCoordinate[2]; } for (int i = 1; i < command.Length; i++) { if (!string.IsNullOrEmpty(command[i])) { inputModel.InstructionSet.Add(command[i]); } } } else { validationError = "First "; } controlModel.RobotInputs.Add(inputModel); } } if (!inputCommands.Contains("PLACE")) { validationError = "At least one PLACE command should be present"; } if (!inputCommands.Contains("REPORT")) { validationError += Environment.NewLine + "At least one REPORT command should be present"; } return(validationError); }
public ActionResult Index(string robotInputModel) { ToyRobotOutputViewModel outputModel = new ToyRobotOutputViewModel(); List <ToyRobotOutputModel> finalCoordinates = new List <ToyRobotOutputModel>(); ToyRobotControlModel controlModel = new ToyRobotControlModel(); string[] commandSeparator = new string[] { "PLACE" }; string[] inputs = robotInputModel.Split(commandSeparator, StringSplitOptions.None); string[] stringSeparators = new string[] { "\r\n" }; //Validates the inputs outputModel.ErrorMessage = ValidateInput(robotInputModel); if (string.IsNullOrEmpty(outputModel.ErrorMessage)) { foreach (string commands in inputs) { ToyRobotInputModel inputModel = new ToyRobotInputModel(); if (!string.IsNullOrEmpty(commands)) { var command = commands.Split(stringSeparators, StringSplitOptions.None); if (command.Length > 1) { string[] startingCoordinate = command[0].Split(','); if (startingCoordinate.Length > 2) { inputModel.Position.PositionX = Convert.ToInt32(startingCoordinate[0]); inputModel.Position.PositionY = Convert.ToInt32(startingCoordinate[1]); inputModel.Position.Heading = startingCoordinate[2]; } for (int i = 1; i < command.Length; i++) { if (!string.IsNullOrEmpty(command[i])) { inputModel.InstructionSet.Add(command[i]); } } } controlModel.RobotInputs.Add(inputModel); } } } finalCoordinates = robotMovementServices.ExecuteRobotNavigation(controlModel); outputModel.ToyRobotOutputs = finalCoordinates; //outputModel.ErrorMessage = robotInputModel; return(View(outputModel)); }