feat(scanner): refactor ticket scanning endpoint to accept UUID in request body and add validation

This commit is contained in:
2026-09-07 16:18:16 -03:00
parent e9521e65d0
commit b607c1b673
7 changed files with 74 additions and 15 deletions

View File

@@ -4,6 +4,7 @@ namespace App\Domains\Ticket\Controllers\Scanner;
use App\Domains\Auth\Models\User;
use App\Domains\Ticket\Requests\ScannerTicketIndexRequest;
use App\Domains\Ticket\Requests\ScanTicketRequest;
use App\Domains\Ticket\Resources\Scanner\ScannedTicketResource;
use App\Domains\Ticket\Resources\TicketResource;
use App\Domains\Ticket\Services\ScannerTicketService;
@@ -35,13 +36,13 @@ class TicketController extends Controller
);
}
public function scan(Request $request, string $ticketUuid): TicketResource
public function scan(ScanTicketRequest $request): TicketResource
{
/** @var User $scanner */
$scanner = $request->user();
return TicketResource::make(
$this->ticketService->scan($scanner, $ticketUuid)
$this->ticketService->scan($scanner, $request->validated('data'))
);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Domains\Ticket\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ScanTicketRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
/** @return array<string, list<string>> */
public function rules(): array
{
return [
'data' => ['required', 'uuid'],
];
}
/** @return array<string, string> */
public function messages(): array
{
return [
'data.required' => 'El QR proporcionado es inválido.',
'data.uuid' => 'El QR proporcionado es inválido.',
];
}
}

View File

@@ -7,8 +7,7 @@ Route::prefix('v1/scanner/tickets')
->middleware(['auth:sanctum', 'scanner.tenant'])
->group(function (): void {
Route::get('/', [TicketController::class, 'index']);
Route::post('scan', [TicketController::class, 'scan']);
Route::get('{ticketUuid}', [TicketController::class, 'show'])
->whereUuid('ticketUuid');
Route::post('{ticketUuid}/scan', [TicketController::class, 'scan'])
->whereUuid('ticketUuid');
});