<script setup lang="ts">
/**
 * Диалог перегрузки лимита (Billing v2 Spec C §6.2, Task 1.10).
 *
 * Открывается, когда POST/PATCH /api/projects вернул 409 `balance_insufficient`.
 * Показывает дефицит и предлагает три исхода:
 *  - «Сохранить и приостановить» → save-blocked (родитель пере-сабмитит с
 *    force_save_blocked=true → проект создаётся с preflight_blocked_at);
 *  - «Поставить лимит 0»          → set-zero (родитель ставит daily_limit_target=0);
 *  - «Отмена»                     → закрытие без сохранения.
 */
export interface OverloadPayload {
    current_balance_rub: string;
    current_capacity_leads: number;
    would_be_required_leads: number;
    deficit_leads: number;
}

defineProps<{
    modelValue: boolean;
    payload: OverloadPayload | null;
}>();

defineEmits<{
    'update:modelValue': [value: boolean];
    'save-blocked': [];
    'set-zero': [];
}>();
</script>

<template>
    <v-dialog :model-value="modelValue" max-width="520" @update:model-value="$emit('update:modelValue', $event)">
        <v-card v-if="payload" data-testid="overload-dialog">
            <v-card-title>Лимит превышает баланс</v-card-title>
            <v-card-text>
                <p>
                    У тебя {{ payload.current_balance_rub }}₽ = {{ payload.current_capacity_leads }} лидов по текущему
                    тарифу.
                </p>
                <p>После сохранения нужно {{ payload.would_be_required_leads }} лидов.</p>
                <p class="font-weight-medium">Не хватает: {{ payload.deficit_leads }} лидов.</p>
                <p class="text-medium-emphasis mt-2">
                    Чтобы проект начал работать — пополни счёт, поставь его лимит 0 или уменьши лимиты других проектов.
                </p>
            </v-card-text>
            <v-card-actions>
                <v-spacer />
                <v-btn variant="text" data-testid="overload-cancel" @click="$emit('update:modelValue', false)">
                    Отмена
                </v-btn>
                <v-btn variant="text" data-testid="overload-set-zero" @click="$emit('set-zero')">
                    Поставить лимит 0
                </v-btn>
                <v-btn
                    color="primary"
                    variant="flat"
                    data-testid="overload-save-blocked"
                    @click="$emit('save-blocked')"
                >
                    Сохранить и приостановить
                </v-btn>
            </v-card-actions>
        </v-card>
    </v-dialog>
</template>
