feat(scanner): add scan attempt detail endpoint

This commit is contained in:
2026-09-08 08:51:19 -03:00
parent 67bcb420e4
commit 0c49bae752
4 changed files with 74 additions and 0 deletions

View File

@@ -5,8 +5,10 @@ namespace App\Domains\Ticket\Controllers\Scanner;
use App\Domains\Auth\Models\User;
use App\Domains\Ticket\Requests\ScanAttemptIndexRequest;
use App\Domains\Ticket\Resources\Scanner\ScanAttemptResource;
use App\Domains\Ticket\Resources\Scanner\ScannerScanResultResource;
use App\Domains\Ticket\Services\ScannerTicketService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
class ScanAttemptController extends Controller
@@ -22,4 +24,14 @@ class ScanAttemptController extends Controller
$this->ticketService->attemptsBy($scanner, $request->validated())
);
}
public function show(Request $request, int $scanAttempt): ScannerScanResultResource
{
/** @var User $scanner */
$scanner = $request->user();
return ScannerScanResultResource::make(
$this->ticketService->scanAttemptDetail($scanner, $scanAttempt)
);
}
}

View File

@@ -51,6 +51,19 @@ class ScannerTicketService
->withQueryString();
}
public function scanAttemptDetail(User $scanner, int $scanAttemptId): ScanAttempt
{
$scanAttempt = ScanAttempt::query()
->with('ticket')
->where('tenant_code', $scanner->tenant_codigo)
->where('scanner_user_id', $scanner->getKey())
->findOrFail($scanAttemptId);
$scanAttempt->ticket?->loadMissing($this->relations());
return $scanAttempt;
}
private function parseSearchDate(string $search): ?string
{
if (preg_match('/^(\d{4})-(\d{2})-(\d{2})$/', $search, $matches) === 1) {

View File

@@ -7,6 +7,8 @@ use Illuminate\Support\Facades\Route;
Route::middleware(['auth:sanctum', 'scanner.tenant'])
->group(function (): void {
Route::get('v1/scanner/attempts', ScanAttemptController::class);
Route::get('v1/scanner/attempts/{scanAttempt}', [ScanAttemptController::class, 'show'])
->whereNumber('scanAttempt');
Route::prefix('v1/scanner/tickets')->group(function (): void {
Route::post('scan', [TicketController::class, 'scan']);