'use client'

import { redirect, useSearchParams } from 'next/navigation'
import { Suspense } from 'react'

import { AuthFlow } from '@/components/auth/auth-flow'
import { AuthGuard } from '@/components/auth-guard'

function RegisterContent() {
  console.log('🎯 RegisterContent - компонент рендерится')
  
  const searchParams = useSearchParams()
  const partnerCode = searchParams.get('partner')
  const referralCode = searchParams.get('ref')
  
  console.log('🔍 RegisterContent - URL параметры:', {
    partnerCode,
    referralCode,
    searchParams: Object.fromEntries(searchParams.entries()),
    allParams: searchParams.toString(),
    currentURL: typeof window !== 'undefined' ? window.location.href : 'server',
  })

  // Валидация: нельзя использовать оба параметра одновременно
  if (partnerCode && referralCode) {
    console.error('Попытка использовать и ref и partner одновременно')
    redirect('/register') // Редирект на чистую регистрацию
    return null
  }

  // Валидация формата кода (поддерживаем партнерские и реферальные коды)
  const isValidCode = (code: string | null): boolean => {
    if (!code) return true // null/undefined разрешены
    
    // Партнерские коды: FF_INN_TIMESTAMP или SL_PHONE_TIMESTAMP
    if (code.match(/^[A-Z]{2}_\d+_\d+$/)) return true
    
    // Реферальные коды: 10 символов из разрешенного набора
    if (code.match(/^[ABCDEFGHJKLMNPQRSTUVWXYZ23456789]{10}$/)) return true
    
    return false
  }

  if (referralCode && !isValidCode(referralCode)) {
    console.error(`Недействительный реферальный код: ${referralCode}`)
    redirect('/register')
    return null
  }

  if (partnerCode && !isValidCode(partnerCode)) {
    console.error(`Недействительный партнерский код: ${partnerCode}`)
    redirect('/register')
    return null
  }

  console.log('🚀 RegisterContent - Передача в AuthFlow:', { partnerCode, referralCode })
  
  // Если есть реферальный или партнерский код, всегда показываем AuthFlow
  // даже для авторизованных пользователей (для создания дополнительных организаций)
  if (partnerCode || referralCode) {
    console.log('🎯 RegisterContent - Принудительный показ AuthFlow из-за наличия кода')
    return <AuthFlow partnerCode={partnerCode} referralCode={referralCode} />
  }
  
  return (
    <AuthGuard fallback={<AuthFlow partnerCode={partnerCode} referralCode={referralCode} />}>
      {/* Если пользователь авторизован, перенаправляем в дашборд */}
      {redirect('/dashboard')}
    </AuthGuard>
  )
}

export default function RegisterPage() {
  console.log('🚀 RegisterPage - компонент рендерится')
  
  return (
    <Suspense fallback={<div>Загрузка...</div>}>
      <RegisterContent />
    </Suspense>
  )
}
