import { Injectable } from '@angular/core';
import { environment } from '../../../environments/environment';

@Injectable({
  providedIn: 'root'
})
export class ApiRouterService {

  constructor() { }

  /**
   * Détermine quelle API utiliser selon le domaine/module
   * @param domaine Le domaine (parametre, etc.)
   * @param modulename Le nom du module
   * @returns Configuration API (baseUrl, apiKey)
   */
  getApiConfig(domaine: string, modulename: string): { baseUrl: string; apiKey: string } {
    // Modules de configuration → Chaps
    const chapsModules = [
      'metadatas', 'modules', 'ctas', 'domaines', 'menus', 
      'blocs', 'picklists', 'badges', 'colors', 'campagnes'
    ];
    
    // Modules métier → Estair  
    const estairModules = [
      'projets', 'projects', 'presales', 'transactions', 
      'comptes', 'factures', 'details', 'accounts', 'vendors'
    ];
    
    const moduleNameLower = modulename.toLowerCase();
    
    // Si c'est explicitement un domaine paramètre ou un module Chaps
    if (domaine === 'parametre' || chapsModules.includes(moduleNameLower)) {
      return {
        baseUrl: environment.API_URL, // Chaps
        apiKey: environment.X_APY_KEY
      };
    } 
    // Si c'est explicitement un module Estair ou par défaut
    else {
      return {
        baseUrl: environment.DATA_URL, // Estair
        apiKey: environment.DATA_APY_KEY
      };
    }
  }

  /**
   * Vérifie si un module utilise l'API Chaps
   */
  isChapsModule(domaine: string, modulename: string): boolean {
    const config = this.getApiConfig(domaine, modulename);
    return config.baseUrl === environment.API_URL;
  }

  /**
   * Vérifie si un module utilise l'API Estair
   */
  isEstairModule(domaine: string, modulename: string): boolean {
    const config = this.getApiConfig(domaine, modulename);
    return config.baseUrl === environment.DATA_URL;
  }
}