where('tenant_code', $tenant->codigo); return [ 'scanned_tickets' => (clone $query)->whereNotNull('used_at')->count(), 'total_tickets' => $query->count(), ]; } /** * @param array{q?: string|null, page?: int, per_page?: int} $filters * @return LengthAwarePaginator */ public function list(Tenant $tenant, array $filters = []): LengthAwarePaginator { $search = trim((string) ($filters['q'] ?? '')); return Ticket::query() ->where('tenant_code', $tenant->codigo) ->when($search !== '', function (Builder $query) use ($search): void { $query->when( ctype_digit($search), fn (Builder $searchQuery): Builder => $searchQuery ->where('tickets.id', (int) $search), fn (Builder $searchQuery): Builder => $searchQuery ->where('ticket', 'like', "%{$search}%"), ); }) ->with([ ...TicketValidityResolver::RELATIONS, ...TicketPresentationResolver::RELATIONS, 'user', 'sourceCatalogItem.category', ]) ->orderByDesc('id') ->paginateFromRequest() ->withQueryString(); } }