'use client' import { Package, UserCheck, Phone, FileText, Key, ArrowLeft, Check, Zap, Truck, Building2 } from 'lucide-react' import { useState } from 'react' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { useAuth } from '@/hooks/useAuth' import { AuthLayout } from './auth-layout' interface OrganizationData { name?: string fullName?: string address?: string isActive?: boolean } interface ApiKeyValidation { sellerId?: string sellerName?: string tradeMark?: string isValid?: boolean } interface ConfirmationStepProps { data: { phone: string cabinetType: 'fulfillment' | 'seller' | 'logist' | 'wholesale' inn?: string organizationData?: OrganizationData wbApiKey?: string wbApiValidation?: ApiKeyValidation ozonApiKey?: string ozonApiValidation?: ApiKeyValidation referralCode?: string | null partnerCode?: string | null } onConfirm: () => void onBack: () => void } export function ConfirmationStep({ data, onConfirm, onBack }: ConfirmationStepProps) { const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) const { registerFulfillmentOrganization, registerSellerOrganization } = useAuth() // Преобразование типа кабинета в тип организации const getOrganizationType = (cabinetType: string): 'FULFILLMENT' | 'LOGIST' | 'WHOLESALE' => { switch (cabinetType) { case 'fulfillment': return 'FULFILLMENT' case 'logist': return 'LOGIST' case 'wholesale': return 'WHOLESALE' default: return 'FULFILLMENT' } } const formatPhone = (phone: string) => { return phone || '+7 (___) ___-__-__' } const handleConfirm = async () => { setIsLoading(true) setError(null) if (process.env.NODE_ENV === 'development') { console.warn('📝 ConfirmationStep - Данные для регистрации:', { cabinetType: data.cabinetType, inn: data.inn, referralCode: data.referralCode, partnerCode: data.partnerCode, }) } try { let result if ( (data.cabinetType === 'fulfillment' || data.cabinetType === 'logist' || data.cabinetType === 'wholesale') && data.inn ) { if (process.env.NODE_ENV === 'development') { console.warn('📝 ConfirmationStep - Вызов registerFulfillmentOrganization с кодами:', { referralCode: data.referralCode, partnerCode: data.partnerCode, }) } result = await registerFulfillmentOrganization( data.phone.replace(/\D/g, ''), data.inn, getOrganizationType(data.cabinetType), data.referralCode, data.partnerCode, ) } else if (data.cabinetType === 'seller') { result = await registerSellerOrganization({ phone: data.phone.replace(/\D/g, ''), wbApiKey: data.wbApiKey, ozonApiKey: data.ozonApiKey, referralCode: data.referralCode, partnerCode: data.partnerCode, }) } if (result?.success) { onConfirm() } else { setError(result?.message || 'Ошибка при регистрации организации') } } catch (error: unknown) { console.error('Registration error:', error) setError('Произошла ошибка при регистрации. Попробуйте еще раз.') } finally { setIsLoading(false) } } return (
{/* Объединенная карточка с данными */}
{/* Телефон */}
Телефон:
{formatPhone(data.phone)}
{/* Тип кабинета */}
{data.cabinetType === 'fulfillment' ? ( ) : data.cabinetType === 'logist' ? ( ) : data.cabinetType === 'wholesale' ? ( ) : ( )} Кабинет:
{data.cabinetType === 'fulfillment' ? 'Фулфилмент' : data.cabinetType === 'logist' ? 'Логистика' : data.cabinetType === 'wholesale' ? 'Поставщик' : 'Селлер'} {data.cabinetType === 'fulfillment' ? ( ) : data.cabinetType === 'logist' ? ( ) : data.cabinetType === 'wholesale' ? ( ) : ( )}
{/* Данные организации */} {(data.cabinetType === 'fulfillment' || data.cabinetType === 'logist' || data.cabinetType === 'wholesale') && data.inn && ( <>
ИНН:
{data.inn}
{/* Данные организации из DaData */} {data.organizationData && ( <> {data.organizationData.name && (
Название: {data.organizationData.name}
)} {data.organizationData.fullName && data.organizationData.fullName !== data.organizationData.name && (
Полное название: {data.organizationData.fullName}
)} {data.organizationData.address && (
Адрес: {data.organizationData.address}
)}
Статус: {data.organizationData.isActive ? ( <> Активна ) : ( <> Неактивна )}
)} )} {/* API ключи для селлера */} {data.cabinetType === 'seller' && (data.wbApiKey || data.ozonApiKey) && ( <>
API ключи: Активны
{data.wbApiKey && (
Wildberries WB
{data.wbApiValidation?.tradeMark || data.wbApiValidation?.sellerName ? ( {data.wbApiValidation.tradeMark || data.wbApiValidation.sellerName} ) : ( Подключен )}
{data.wbApiValidation && ( <> {data.wbApiValidation.tradeMark && (
Торговая марка: {data.wbApiValidation.tradeMark}
)} {data.wbApiValidation.sellerName && data.wbApiValidation.sellerName !== data.wbApiValidation.tradeMark && (
Продавец: {data.wbApiValidation.sellerName}
)} {data.wbApiValidation.sellerId && (
ID продавца: {data.wbApiValidation.sellerId}
)} )}
)} {data.ozonApiKey && (
Ozon OZ
Подключен
{data.ozonApiValidation && ( <> {data.ozonApiValidation.sellerName && (
Магазин: {data.ozonApiValidation.sellerName}
)} {data.ozonApiValidation.sellerId && (
ID продавца: {data.ozonApiValidation.sellerId}
)} )}
)} )}
{error && (

{error}

)}
) }