import { CommonModule } from "@angular/common";
import { NgModule } from "@angular/core";
import { ReactiveFormsModule } from "@angular/forms";
import { MatCardModule } from "@angular/material/card";
import { MatIconModule } from "@angular/material/icon";
import { MatSnackBarModule } from "@angular/material/snack-bar";
import { MatTabsModule } from "@angular/material/tabs";
import { MatToolbarModule } from "@angular/material/toolbar";
import { RouterModule, Routes } from "@angular/router";
import { HeaderModule } from "src/app/components/header/header.module";
import { ProjectsPageComponent } from "./projects.page";

// Fonction pour obtenir le module par défaut de manière sécurisée
function getDefaultModule(): string {
  try {
    // Essayer de récupérer le module depuis le localStorage
    const domaineData = localStorage.getItem('__domaineDD');
    if (domaineData) {
      const parsedData = JSON.parse(domaineData);
      if (parsedData.modulename) {
        console.log('🎯 Module par défaut depuis localStorage:', parsedData.modulename);
        return parsedData.modulename;
      }
    }

    // Essayer de récupérer depuis les menus réels
    const menusData = localStorage.getItem('__menus');
    if (menusData) {
      const parsedMenus = JSON.parse(menusData);
      if (parsedMenus && Array.isArray(parsedMenus) && parsedMenus.length > 0) {
        const firstMenu = parsedMenus[0];
        if (firstMenu.submenu && firstMenu.submenu.length > 0) {
          const firstSubModule = firstMenu.submenu[0];
          console.log('🎯 Module par défaut depuis menus:', firstSubModule.module);
          return firstSubModule.module;
        }
      }
    }

    // Liste de modules préférés (éviter 'test')
    const preferredModules = ['pnr', 'accounts', 'clients', 'billets', 'factures'];
    
    // Retourner le premier module préféré
    console.log('🎯 Module par défaut générique:', preferredModules[0]);
    return preferredModules[0];
  } catch (error) {
    console.warn("Erreur lors de la récupération du module par défaut:", error);
  }
  return "pnr"; // Fallback vers 'pnr' au lieu de 'test'
}

const routes: Routes = [
  {
    path: "",
    component: ProjectsPageComponent,
    children: [
      {
        path: "",
        redirectTo: "banques", // Direct redirect instead of function call
        pathMatch: "full",
      },
      {
        path: ":name",
        children: [
          {
            path: "",
            loadChildren: () =>
              import(
                "src/app/pages/home-section/projects/home-projects.module"
              ).then((m) => m.HomeProjectsPageModule),
          }
        ]
      }
    ],
  },
];

@NgModule({
  imports: [
    CommonModule,
    MatSnackBarModule,
    ReactiveFormsModule,
    MatToolbarModule,
    MatIconModule,
    MatTabsModule,
    MatCardModule,
    HeaderModule,
    RouterModule.forChild(routes),
    ReactiveFormsModule,
  ],

  declarations: [ProjectsPageComponent],
  providers: [],
})
export class ProjectsPageModule {}