feat(scanner): add scanner category validation logic and related tests

This commit is contained in:
2026-08-13 11:26:13 -03:00
parent 329e0b1953
commit a2592987f5
12 changed files with 216 additions and 17 deletions

View File

@@ -69,12 +69,14 @@ class ScannerTicketService
public function detail(User $scanner, string $ticketUuid): Ticket
{
$categoryIds = $this->scannerCategoryIds($scanner);
return $this->baseQuery()
$query = $this->baseQuery()
->where('tenant_code', $scanner->tenant_codigo)
->where('ticket', $ticketUuid)
->where(function (Builder $query) use ($scanner, $categoryIds): void {
->where('ticket', $ticketUuid);
if ($scanner->tenant()->firstOrFail()->requiresScannerCategoryValidation()) {
$categoryIds = $this->scannerCategoryIds($scanner);
$query->where(function (Builder $query) use ($scanner, $categoryIds): void {
$query
->where('scanner_user_id', $scanner->getKey())
->orWhereHas(
@@ -82,8 +84,10 @@ class ScannerTicketService
fn (Builder $catalogItemQuery): Builder => $catalogItemQuery
->whereIn('category_id', $categoryIds)
);
})
->firstOrFail();
});
}
return $query->firstOrFail();
}
public function scan(User $scanner, string $ticketUuid): Ticket
@@ -153,6 +157,10 @@ class ScannerTicketService
private function scannerCanScan(User $scanner, Ticket $ticket): bool
{
if (! $scanner->tenant()->firstOrFail()->requiresScannerCategoryValidation()) {
return true;
}
$categoryId = $ticket->sourceCatalogItem?->category_id;
return $categoryId !== null