private ResponseModel LastStateOfRover(RoverRequest roverRequest, Position position) { var response = new ResponseModel(); string existFacing = roverRequest.CurrentFacing.ToUpper(); foreach (var direct in roverRequest.Direction.ToUpper().ToCharArray()) { if (direct.ToString() == "L" || direct.ToString() == "R") { var cardinalDirectionEnumId = EnumExtensions.GetValues <CardinalDirectionEnum>().FirstOrDefault(x => x.Label == existFacing)?.Id; var turnPositionEnumId = EnumExtensions.GetValues <TurnPositionEnum>().FirstOrDefault(x => x.Label == direct.ToString())?.Id; existFacing = _directionEnum.SetDirection((CardinalDirectionEnum)cardinalDirectionEnumId, (TurnPositionEnum)turnPositionEnumId); position.Face = existFacing; } if (direct.ToString() == "M") { response = Pointer.GetCurrentPosition(roverRequest.TopPositionX, roverRequest.TopPositionY, position, roverRequest.SecondRoverX, roverRequest.SecondRoverY); position = response.Position; if (response.IsError) { break; } } } return(response); }