'use client'

import { redirect } from 'next/navigation'
import { useEffect } from 'react'

import { useAuthContext } from '@/contexts/AuthContext'

type UserRole = 'SELLER' | 'FULFILLMENT' | 'WHOLESALE' | 'LOGIST'

/**
 * Хук для защиты ролевых страниц
 * Автоматически перенаправляет пользователя в свой кабинет, если он зашел на чужую страницу
 * 
 * @param requiredRole - Роль, которая должна иметь доступ к странице
 * @example
 * ```tsx
 * export default function LogisticsHomePage() {
 *   useRoleGuard('LOGIST') // Защита страницы логистики
 *   
 *   return <LogistHomePage />
 * }
 * ```
 */
export function useRoleGuard(requiredRole: UserRole) {
  const { user } = useAuthContext()

  useEffect(() => {
    // Ждем загрузки данных пользователя
    if (!user) return

    const userRole = user.organization?.type

    // Если роль пользователя не совпадает с требуемой
    if (userRole !== requiredRole) {
      // Умный редирект в домашнюю страницу своего кабинета
      const homeUrl = getRoleHomeUrl(userRole)
      redirect(homeUrl)
    }
  }, [user, requiredRole])
}

/**
 * Получить URL домашней страницы для роли пользователя
 */
function getRoleHomeUrl(role?: string): string {
  switch (role) {
    case 'SELLER':
      return '/seller/home'
    case 'FULFILLMENT': 
      return '/fulfillment/home'
    case 'WHOLESALE':
      return '/wholesale/home'
    case 'LOGIST':
      return '/logistics/home'
    default:
      return '/login' // Если роль неизвестна - на логин
  }
}