amministratore?->id; $status = (string) $request->query('status', 'open'); $phoneQuery = trim((string) $request->query('phone', '')); $tickets = Ticket::query() ->with(['stabile', 'categoriaTicket']) ->when($adminId, function ($q) use ($adminId): void { $q->whereHas('stabile', fn($sq) => $sq->where('amministratore_id', $adminId)); }) ->when($status === 'open', function ($q): void { $q->whereIn('stato', ['Aperto', 'Preso in Carico', 'In Lavorazione']); }) ->when($status === 'urgent', function ($q): void { $q->where('priorita', 'Urgente') ->whereIn('stato', ['Aperto', 'Preso in Carico', 'In Lavorazione']); }) ->latest('data_apertura') ->limit(25) ->get(); $callerMatches = collect(); if ($phoneQuery !== '') { $digits = preg_replace('/\D+/', '', $phoneQuery) ?: ''; if ($digits !== '') { $needle = '%' . $digits . '%'; $callerMatches = RubricaUniversale::query() ->where(function ($q) use ($needle): void { $q->orWhereRaw("REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(COALESCE(telefono_cellulare, ''), ' ', ''), '+', ''), '-', ''), '(', ''), ')', '') LIKE ?", [$needle]) ->orWhereRaw("REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(COALESCE(telefono_ufficio, ''), ' ', ''), '+', ''), '-', ''), '(', ''), ')', '') LIKE ?", [$needle]) ->orWhereRaw("REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(COALESCE(telefono_casa, ''), ' ', ''), '+', ''), '-', ''), '(', ''), ')', '') LIKE ?", [$needle]); }) ->limit(12) ->get(); } } return view('admin.mobile.hub', [ 'tickets' => $tickets, 'status' => $status, 'phoneQuery' => $phoneQuery, 'callerMatches' => $callerMatches, ]); } }