<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        // 1. Casos: Missing tracking and calculation fields
        Schema::table('casos', function (Blueprint $table) {
            if (! Schema::hasColumn('casos', 'pago_estado')) {
                $table->enum('pago_estado', ['pendiente', 'pagado_aseguradora', 'no_registra'])->default('pendiente')->after('estado_actual');
            }
            if (! Schema::hasColumn('casos', 'broker_ejecutivo')) {
                $table->string('broker_ejecutivo')->nullable()->after('broker_id');
            }
            if (! Schema::hasColumn('casos', 'taller_ruc')) {
                $table->string('taller_ruc')->nullable()->after('taller_id');
            }
            if (! Schema::hasColumn('casos', 'taller_ejecutivo')) {
                $table->string('taller_ejecutivo')->nullable()->after('taller_ruc');
            }
            if (! Schema::hasColumn('casos', 'taller_email')) {
                $table->string('taller_email')->nullable()->after('taller_ejecutivo');
            }
            if (! Schema::hasColumn('casos', 'taller_telefono')) {
                $table->string('taller_telefono')->nullable()->after('taller_email');
            }
            if (! Schema::hasColumn('casos', 'honorario_perito')) {
                $table->decimal('honorario_perito', 12, 2)->nullable()->after('tarifa_ajustador_valor');
            }
            if (! Schema::hasColumn('casos', 'estado_coordinacion')) {
                $table->string('estado_coordinacion')->nullable()->after('pago_estado');
            }
        });

        // 2. Tenants: Billing parameters
        Schema::table('tenants', function (Blueprint $table) {
            if (! Schema::hasColumn('tenants', 'corte_facturacion_dia')) {
                $table->integer('corte_facturacion_dia')->default(30)->after('email');
            }
            if (! Schema::hasColumn('tenants', 'cruce_facturacion_dia')) {
                $table->integer('cruce_facturacion_dia')->default(5)->after('corte_facturacion_dia');
            }
        });

        // 3. Ajustadores: Default tariffs
        Schema::table('ajustadores', function (Blueprint $table) {
            if (! Schema::hasColumn('ajustadores', 'tarifa_dp')) {
                $table->decimal('tarifa_dp', 12, 2)->default(0)->after('tipo');
            }
            if (! Schema::hasColumn('ajustadores', 'tarifa_rc')) {
                $table->decimal('tarifa_rc', 12, 2)->default(0)->after('tarifa_dp');
            }
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('casos', function (Blueprint $table) {
            $table->dropColumn([
                'pago_estado',
                'broker_ejecutivo',
                'taller_ruc',
                'taller_ejecutivo',
                'taller_email',
                'taller_telefono',
                'honorario_perito',
                'estado_coordinacion',
            ]);
        });

        Schema::table('tenants', function (Blueprint $table) {
            $table->dropColumn(['corte_facturacion_dia', 'cruce_facturacion_dia']);
        });

        Schema::table('ajustadores', function (Blueprint $table) {
            $table->dropColumn(['tarifa_dp', 'tarifa_rc']);
        });
    }
};
