<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

/**
 * Kalkış tarihlerine "kişiye özel" işareti.
 *
 * Satış kartında elle tarih girilen tur kalemleri için otomatik bir kalkış
 * üretilir. Bu kalkış kataloğa/siteye çıkmaz (is_published/is_bookable = 0),
 * yalnızca ilgili satışa aittir. Operasyon ve takvim bu bayrakla onu normal
 * kalkışlardan ayırıp "ÖZEL" rozetiyle gösterir.
 */
return new class extends Migration
{
    private const TABLES = ['cultural_tour_dates', 'international_tour_dates', 'day_tour_dates'];

    public function up(): void
    {
        foreach (self::TABLES as $tableName) {
            if (!Schema::hasTable($tableName)) {
                continue;
            }
            Schema::table($tableName, function (Blueprint $table) use ($tableName) {
                if (!Schema::hasColumn($tableName, 'is_private')) {
                    $table->boolean('is_private')->default(false)->index();
                }
                if (!Schema::hasColumn($tableName, 'private_sale_id')) {
                    $table->unsignedBigInteger('private_sale_id')->nullable()->index();
                }
            });
        }
    }

    public function down(): void
    {
        foreach (self::TABLES as $tableName) {
            if (!Schema::hasTable($tableName)) {
                continue;
            }
            Schema::table($tableName, function (Blueprint $table) use ($tableName) {
                foreach (['is_private', 'private_sale_id'] as $col) {
                    if (Schema::hasColumn($tableName, $col)) {
                        $table->dropColumn($col);
                    }
                }
            });
        }
    }
};
