<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * 현장설명회 참석완료 시 견적 자동등록 기능을 위한 스키마 변경
     * - quotes에 site_briefing_id FK 추가
     * - product_category nullable로 변경
     * - status에 'pending' (견적대기) 추가
     */
    public function up(): void
    {
        Schema::table('quotes', function (Blueprint $table) {
            // 현장설명회 연결
            $table->foreignId('site_briefing_id')
                ->nullable()
                ->after('order_id')
                ->comment('현장설명회 ID (자동생성 시)');

            // 인덱스 추가
            $table->index('site_briefing_id', 'idx_quotes_site_briefing_id');
        });

        // product_category를 nullable enum으로 변경
        // MySQL에서 enum 변경은 raw SQL 필요
        DB::statement("ALTER TABLE quotes MODIFY product_category ENUM('SCREEN', 'STEEL') NULL COMMENT '제품 카테고리'");

        // status에 'pending' 추가
        DB::statement("ALTER TABLE quotes MODIFY status ENUM('pending', 'draft', 'sent', 'approved', 'rejected', 'finalized', 'converted') DEFAULT 'draft' COMMENT '상태'");
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('quotes', function (Blueprint $table) {
            $table->dropIndex('idx_quotes_site_briefing_id');
            $table->dropColumn('site_briefing_id');
        });

        // product_category를 NOT NULL로 복원
        DB::statement("ALTER TABLE quotes MODIFY product_category ENUM('SCREEN', 'STEEL') NOT NULL COMMENT '제품 카테고리'");

        // status에서 'pending' 제거
        DB::statement("ALTER TABLE quotes MODIFY status ENUM('draft', 'sent', 'approved', 'rejected', 'finalized', 'converted') DEFAULT 'draft' COMMENT '상태'");
    }
};
