<?php

namespace App\Http\Controllers;

use App\Models\Company;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;

/**
 * Permite a los miembros del operador (Fycls) cambiar entre empresas.
 * Los usuarios normales no acceden a este controlador (validado en middleware).
 */
class CompanySwitcherController extends Controller
{
    /**
     * Cambiar a una empresa específica.
     */
    public function switch(Request $request, Company $company): RedirectResponse
    {
        $user = $request->user();

        if (!$user->isOperatorMember()) {
            abort(403, 'Solo los miembros del operador pueden cambiar de empresa.');
        }

        if (!$company->is_active) {
            return back()->with('error', 'No puedes seleccionar una empresa inactiva.');
        }

        session([
            'current_company_id' => $company->id,
            'global_view'        => false,
        ]);

        return redirect()->route('dashboard')
            ->with('success', "Ahora estás trabajando con: {$company->name}");
    }

    /**
     * Activar vista global (ver todas las empresas a la vez).
     * Solo para superadmin del operador.
     */
    public function globalView(Request $request): RedirectResponse
    {
        $user = $request->user();

        if (!$user->isOperatorMember() || !$user->hasRole(['superadmin', 'admin'])) {
            abort(403, 'Solo superadmins del operador pueden activar vista global.');
        }

        session([
            'global_view'        => true,
            'current_company_id' => null,
        ]);

        return redirect()->route('dashboard')
            ->with('success', 'Vista global activada: viendo todas las empresas');
    }
}
