*/ public function tickets(Tenant $tenant, User $user, ?int $eventId = null): Collection { return $this->ticketQuery($tenant, $user) ->when($eventId !== null, fn (Builder $query): Builder => $query ->where('event_id', $eventId)) ->with([...TicketValidityResolver::RELATIONS, ...TicketPresentationResolver::RELATIONS]) ->orderByDesc('id') ->get(); } /** @return Collection */ public function events(Tenant $tenant, User $user): Collection { return Event::query() ->where('tenant_code', $tenant->codigo) ->whereHas('tickets', fn (Builder $query): Builder => $query ->where('tenant_code', $tenant->codigo) ->where('user_id', $user->getKey())) ->with('attachment') ->orderByDesc('id') ->get(); } /** @return Builder */ private function ticketQuery(Tenant $tenant, User $user): Builder { return Ticket::query() ->where('tenant_code', $tenant->codigo) ->where('user_id', $user->getKey()); } }