refactor(tickets): prepare filtered query for exports

This commit is contained in:
2026-08-31 12:03:11 -03:00
parent 63012838a4
commit 9da92c880a

View File

@@ -5,9 +5,19 @@ namespace App\Domains\Ticket\Services;
use App\Domains\Tenant\Models\Tenant; use App\Domains\Tenant\Models\Tenant;
use App\Domains\Ticket\Models\Ticket; use App\Domains\Ticket\Models\Ticket;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Collection;
class AdminAppTicketService class AdminAppTicketService
{ {
private const RELATIONS = [
...TicketValidityResolver::RELATIONS,
...TicketPresentationResolver::RELATIONS,
'user',
'scannerUser',
'sourceCatalogItem.category',
'sourcePurchase.items',
];
/** /**
* @param array{q?: string|null, category?: string|null, product?: string|null, type?: string|null, date?: string|null, status?: string|null, page?: int, per_page?: int} $filters * @param array{q?: string|null, category?: string|null, product?: string|null, type?: string|null, date?: string|null, status?: string|null, page?: int, per_page?: int} $filters
*/ */
@@ -16,14 +26,7 @@ class AdminAppTicketService
$query = $this->baseQuery($tenant, $filters); $query = $this->baseQuery($tenant, $filters);
$tickets = (clone $query) $tickets = (clone $query)
->with([ ->with(self::RELATIONS)
...TicketValidityResolver::RELATIONS,
...TicketPresentationResolver::RELATIONS,
'user',
'scannerUser',
'sourceCatalogItem.category',
'sourcePurchase.items',
])
->orderByDesc('id') ->orderByDesc('id')
->paginateFromRequest() ->paginateFromRequest()
->withQueryString(); ->withQueryString();
@@ -35,6 +38,18 @@ class AdminAppTicketService
); );
} }
/**
* @param array{q?: string|null, category?: string|null, product?: string|null, type?: string|null, date?: string|null, status?: string|null} $filters
* @return Collection<int, Ticket>
*/
public function ticketsForExport(Tenant $tenant, array $filters = []): Collection
{
return $this->baseQuery($tenant, $filters)
->with(self::RELATIONS)
->orderByDesc('id')
->get();
}
/** /**
* @param array{q?: string|null, category?: string|null, product?: string|null, type?: string|null, date?: string|null, status?: string|null, page?: int, per_page?: int} $filters * @param array{q?: string|null, category?: string|null, product?: string|null, type?: string|null, date?: string|null, status?: string|null, page?: int, per_page?: int} $filters
* @return Builder<Ticket> * @return Builder<Ticket>