<?php
declare(strict_types=1);

use Celena\Core\Database\Connection;
use Celena\Core\Database\Schema;

/**
 * Бэкфилл валюты у старых заказов: если в заказе всё ещё стоит 'KZT'
 * (наследие первоначальных дефолтов), а пользователь магазина уже переключил
 * shop.currency_code на свою (UAH/EUR/USD) — подменяем валюту в существующих
 * заказах на актуальную из настроек.
 *
 * Это разовая операция, чтобы пользователю, переключившему валюту,
 * не виднелось KZT в карточке старого заказа.
 *
 * Выполняется только если в celena_options есть shop.currency_code с не-KZT.
 */
return function (Schema $schema, Connection $conn): void {
    if (!$schema->hasTable('shop_orders') || !$schema->hasTable('celena_options')) {
        return;
    }

    try {
        $row = $conn->builder('celena_options')
            ->where('option_key', '=', 'shop.currency_code')
            ->first();
        $current = (string) ($row['option_value'] ?? '');
        if ($current === '' || strtoupper($current) === 'KZT') {
            return; // нечего бэкфилить
        }
        $conn->builder('shop_orders')
            ->where('currency', '=', 'KZT')
            ->update(['currency' => $current]);
    } catch (\Throwable) {
    }
};
