<?php

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

/**
 * Quita los flags de plan que NO se hacen cumplir en código (auditoría R4/#168):
 * `has_api_access`, `has_advanced_reports`, `has_multi_branch`, `has_custom_branding`,
 * `has_priority_support`. Sus accesores (`hasApiAccess`/`hasCustomBranding`) nunca se
 * invocaban para gatear nada, no hay API de cliente ni modelo de sucursales, y la marca
 * (color+logo) está disponible para todas las empresas. Se mantiene `has_pwa_access`
 * (referenciado en el setup de tests y representa el acceso a la PWA, real para todos).
 *
 * Reversible: `down()` los recrea con sus defaults/comentarios originales.
 */
return new class extends Migration
{
    private const FLAGS = [
        'has_api_access',
        'has_advanced_reports',
        'has_multi_branch',
        'has_custom_branding',
        'has_priority_support',
    ];

    public function up(): void
    {
        $existing = array_values(array_filter(
            self::FLAGS,
            fn (string $flag): bool => Schema::hasColumn('plans', $flag)
        ));

        if ($existing !== []) {
            Schema::table('plans', fn (Blueprint $table) => $table->dropColumn($existing));
        }
    }

    public function down(): void
    {
        Schema::table('plans', function (Blueprint $table) {
            $table->boolean('has_api_access')->default(false)->after('has_pwa_access')
                ->comment('Can use external API');
            $table->boolean('has_advanced_reports')->default(false)->after('has_api_access')
                ->comment('Access to advanced reporting');
            $table->boolean('has_multi_branch')->default(false)->after('has_advanced_reports')
                ->comment('Can create multiple branches');
            $table->boolean('has_custom_branding')->default(false)->after('has_multi_branch')
                ->comment('Can customize logo and colors');
            $table->boolean('has_priority_support')->default(false)->after('has_custom_branding')
                ->comment('Priority support access');
        });
    }
};
