<?php

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

/**
 * La baja de un cliente, con motivo y con quién la hizo.
 *
 * Hasta ahora la baja era **una casilla `actived` en el formulario del cliente**, guardada
 * como cualquier otro campo. Desmarcarla corta el servicio a todos los Moodles de ese
 * cliente —el middleware devuelve «Cliente inactivo»— y no quedaba **ningún rastro**: ni
 * quién, ni cuándo, ni por qué. Alguien desmarcaba una casilla y veinte sitios dejaban de
 * recibir contenido.
 *
 * `actived` se queda como es: es el interruptor que lee el middleware. Lo que se añade es
 * el contexto de la decisión.
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::table('clients', function (Blueprint $table) {
            // Cuándo se dio de baja. Nulo = está de alta.
            $table->timestamp('deactivated_at')->nullable()->after('actived');

            // Quién. `nullOnDelete` y no cascade: si el usuario que dio la baja se borra,
            // la baja no desaparece —lo que importa es que ocurrió—.
            $table->foreignId('deactivated_by')
                ->nullable()
                ->after('deactivated_at')
                ->constrained('users')
                ->nullOnDelete();

            // Por qué. Lo pide Comercial para el CRM, y es lo que responde «¿este cliente
            // se fue o está en una renegociación?» seis meses después.
            $table->string('deactivation_reason', 500)->nullable()->after('deactivated_by');
        });
    }

    public function down(): void
    {
        Schema::table('clients', function (Blueprint $table) {
            $table->dropConstrainedForeignId('deactivated_by');
            $table->dropColumn(['deactivated_at', 'deactivation_reason']);
        });
    }
};
