<?php

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

return new class extends Migration
{
    /**
     * BOM 테이블에 산출식 관련 필드 추가
     * - bom_templates: 견적시 필요한 파라미터 스키마 정의
     * - bom_template_items: 개별 아이템의 계산식 정의
     */
    public function up(): void
    {
        // BOM 템플릿에 산출식 조건 스키마 추가
        Schema::table('bom_templates', function (Blueprint $table) {
            $table->json('calculation_schema')->nullable()->comment('견적 파라미터 스키마 (JSON)');
            $table->string('company_type', 50)->default('default')->comment('업체 타입 (경동기업, 삼성물산 등)');
            $table->string('formula_version', 10)->default('v1.0')->comment('산출식 버전');
        });

        // BOM 아이템에 계산식 필드 추가
        Schema::table('bom_template_items', function (Blueprint $table) {
            $table->boolean('is_calculated')->default(false)->comment('계산식 적용 여부');
            $table->text('calculation_formula')->nullable()->comment('계산식 표현식');
            $table->json('depends_on')->nullable()->comment('의존하는 파라미터 목록 (JSON)');
            $table->json('calculation_config')->nullable()->comment('계산 설정 (JSON)');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('bom_template_items', function (Blueprint $table) {
            $table->dropColumn(['is_calculated', 'calculation_formula', 'depends_on', 'calculation_config']);
        });

        Schema::table('bom_templates', function (Blueprint $table) {
            $table->dropColumn(['calculation_schema', 'company_type', 'formula_version']);
        });
    }
};
