// Caminho: app/(doctor)/layout.tsx

"use client";

import type React from "react";
import { useState, useEffect } from "react";
import { useRouter } from "next/navigation";

// Nossas importações centralizadas
import { usuariosApi } from "@/services/usuariosApi";
import DashboardLayout, { UserProfile } from "@/components/layout/DashboardLayout";
import { dashboardConfig } from "@/config/dashboard.config";

interface DoctorLayoutProps {
  children: React.ReactNode;
}

export default function DoctorLayout({ children }: DoctorLayoutProps) {
  const [userProfile, setUserProfile] = useState<UserProfile | null>(null);
  const [isLoading, setIsLoading] = useState(true);
  const router = useRouter();

  useEffect(() => {
    const checkAuthentication = async () => {
      try {
        // Busca o usuário logado
        const userData = await usuariosApi.getCurrentUser();
        // Pega a configuração específica do "doctor"
        const config = dashboardConfig.doctor;
        // Formata os dados para o perfil
        setUserProfile(config.getUserProfile(userData));
      } catch (error) {
        // Se falhar, redireciona para o login
        router.push("/login");
      } finally {
        setIsLoading(false);
      }
    };

    checkAuthentication();
  }, [router]);

  // Enquanto verifica, mostra uma tela de carregamento
  if (isLoading) {
    return (
      <div className="flex h-screen w-full items-center justify-center bg-background">
        <p className="text-muted-foreground">Verificando autenticação...</p>
      </div>
    );
  }

  // Se não tiver perfil (redirect em andamento), não renderiza nada
  if (!userProfile) {
    return null;
  }

  // Pega os itens de menu da configuração
  const menuItems = dashboardConfig.doctor.menuItems;

  // Renderiza o layout genérico com as props corretas
  return (
    <DashboardLayout menuItems={menuItems} userProfile={userProfile}>
      {children}
    </DashboardLayout>
  );
}