getConflicts method

List<String> getConflicts(
  1. TechnologyCompatibility compatibility
)

Implementation

List<String> getConflicts(TechnologyCompatibility compatibility) {
  final conflicts = <String>[];

  final state = compatibility.stateManagement.trim();
  final routing = compatibility.routing.trim();
  final session = compatibility.sessionStrategy.trim();
  final env = compatibility.environmentStrategy.trim();
  final scale = compatibility.projectScale.trim();

  final normalizedState = state.toLowerCase();
  final normalizedRouting = routing.toLowerCase();

  // 1. State management / routing compatibility check
  if (normalizedState == 'riverpod') {
    if (normalizedRouting != 'navigation 2.0' && normalizedRouting != 'go router') {
      conflicts.add('Riverpod is only compatible with Navigation 2.0 or Go Router.');
    }
  } else if (normalizedState == 'bloc') {
    if (normalizedRouting != 'navigation 2.0' && normalizedRouting != 'go router') {
      conflicts.add('Bloc is only compatible with Navigation 2.0 or Go Router.');
    }
  } else {
    if (normalizedState.isNotEmpty) {
      conflicts.add('Unsupported state management: $state. Only Riverpod and Bloc are supported.');
    }
  }

  // 2. Persistent Session compatibility check
  final normalizedSession = session.toLowerCase();
  if (normalizedSession == 'persistent session' || normalizedSession == 'persistent session architecture') {
    if (normalizedState != 'riverpod' && normalizedState != 'bloc') {
      conflicts.add('Persistent Session is only compatible with Riverpod or Bloc.');
    }
  }

  // 3. Environment Configuration compatibility check
  final normalizedEnv = env.toLowerCase();
  if (normalizedEnv == 'environment configuration' || normalizedEnv == 'environment configuration setup') {
    final normalizedScale = scale.toLowerCase();
    final validScales = ['small', 'medium', 'enterprise', 'simple app', 'medium scale app', 'enterprise app'];
    if (!validScales.contains(normalizedScale)) {
      conflicts.add('Environment Configuration is only compatible with Small, Medium, or Enterprise scales.');
    }
  }

  return conflicts;
}