<template>
  <Section variant="plain">
    <Stack gap="6">
        <Stack gap="2">
          <Stack direction="row" gap="2" align="center">
            <IconCircle tone="primary">🇷🇺</IconCircle>
            <Heading :level="1">Верификация для России</Heading>
          </Stack>
          <Text tone="muted" size="base">
            Заполните данные вашей организации. Все поля будут заполнены автоматически через поиск по ИНН.
          </Text>
        </Stack>

        <Card v-if="submitting" tone="muted" padding="lg">
          <Stack align="center" justify="center" gap="3">
            <Spinner />
            <Text tone="muted">Отправляем заявку на верификацию...</Text>
          </Stack>
        </Card>

        <Alert v-else-if="submitError" variant="error">
          <Stack gap="2">
            <Heading :level="4" weight="semibold">Ошибка отправки</Heading>
            <Text tone="muted">{{ submitError }}</Text>
          </Stack>
        </Alert>

        <Card v-else-if="submitSuccess" tone="muted" padding="lg">
          <Stack gap="2">
            <Heading :level="3" weight="semibold">Заявка успешно отправлена</Heading>
            <Text tone="muted">
              Ваша заявка на верификацию принята. Результат будет готов в течение 1-2 рабочих дней.
            </Text>
            <Button :as="'NuxtLink'" to="/dashboard/kyc" variant="outline">
              Посмотреть статус заявки →
            </Button>
          </Stack>
        </Card>

        <Card v-else padding="lg">
          <KYCFormRussia @submit="handleSubmit" />
        </Card>
      </Stack>
  </Section>
</template>

<script setup lang="ts">
import { CreateKycRequestRussiaDocument } from '~/composables/graphql/team/kyc-generated'

definePageMeta({
  middleware: ['auth-oidc']
})

const { execute } = useGraphQL()
const { getIdTokenClaims } = useAuth()

const submitting = ref(false)
const submitError = ref<string | null>(null)
const submitSuccess = ref(false)

const handleSubmit = async (formData: any) => {
  try {
    submitting.value = true
    submitError.value = null

    const userClaims = await getIdTokenClaims()
    const userId = userClaims?.sub

    if (!userId) throw new Error('Пользователь не аутентифицирован')

    const teamUuid = 'team-' + userId

    const submitData = {
      userId,
      teamUuid,
      companyName: formData.company_name,
      companyFullName: formData.company_full_name,
      inn: formData.inn,
      kpp: formData.kpp || '',
      ogrn: formData.ogrn || '',
      address: formData.address,
      bankName: formData.bank_name,
      bik: formData.bik,
      correspondentAccount: formData.correspondent_account || '',
      contactPerson: formData.contact_person,
      contactEmail: formData.contact_email,
      contactPhone: formData.contact_phone,
    }

    const result = await execute(CreateKycRequestRussiaDocument, { input: submitData }, 'team', 'kyc')

    if (result.createKycRequestRussia?.success) {
      submitSuccess.value = true
      setTimeout(() => navigateTo('/dashboard/kyc'), 3000)
    } else {
      throw new Error('Не удалось создать заявку')
    }
  } catch (err: any) {
    submitError.value = err.message || 'Произошла ошибка при отправке заявки'
  } finally {
    submitting.value = false
  }
}
</script>
