"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { GlassInput } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Alert, AlertDescription } from "@/components/ui/alert" import { AuthLayout } from "./auth-layout" import { FileText, ArrowLeft, Building, Check, AlertTriangle } from "lucide-react" import { Badge } from "@/components/ui/badge" import { useMutation } from '@apollo/client' import { VERIFY_INN } from '@/graphql/mutations' interface InnStepProps { onNext: (inn: string, organizationData?: OrganizationData) => void onBack: () => void } interface OrganizationData { name: string address: string isActive: boolean } export function InnStep({ onNext, onBack }: InnStepProps) { const [inn, setInn] = useState("") const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) const [organizationData, setOrganizationData] = useState(null) const [verifyInn] = useMutation(VERIFY_INN) const formatInn = (value: string) => { const numbers = value.replace(/\D/g, '') return numbers.slice(0, 12) // Максимум 12 цифр для ИНН } const handleInnChange = (e: React.ChangeEvent) => { const formatted = formatInn(e.target.value) setInn(formatted) setError(null) setOrganizationData(null) } const isValidInn = (inn: string) => { return inn.length === 10 || inn.length === 12 } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!isValidInn(inn)) { setError('ИНН должен содержать 10 или 12 цифр') return } setIsLoading(true) setError(null) setOrganizationData(null) try { const { data } = await verifyInn({ variables: { inn } }) if (data.verifyInn.success && data.verifyInn.organization) { const org = data.verifyInn.organization const newOrgData = { name: org.name, address: org.address, isActive: org.isActive } setOrganizationData(newOrgData) if (org.isActive) { // Автоматически переходим дальше для активных организаций setTimeout(() => { onNext(inn, newOrgData) }, 1500) } } else { setError('Организация с таким ИНН не найдена') } } catch (error: unknown) { console.error('INN verification error:', error) setError('Ошибка проверки ИНН. Попробуйте позже.') } finally { setIsLoading(false) } } const handleContinueInactive = () => { if (organizationData && !organizationData.isActive) { onNext(inn, organizationData) } } return (
Фулфилмент кабинет - склады и логистика
{organizationData && ( {organizationData.isActive ? ( <> Активна ) : ( <> Неактивна )} )}
{error && (

{error}

)}
{organizationData && (

{organizationData.name}

{organizationData.address}

{organizationData.isActive ? (
Организация активна
) : (
Организация неактивна
)}
)}
{!organizationData && ( )} {organizationData && !organizationData.isActive && ( )}
) }