feat(scanner): refactor ticket scanning endpoint to accept UUID in request body and add validation
This commit is contained in:
@@ -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'))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
30
app/Domains/Ticket/Requests/ScanTicketRequest.php
Normal file
30
app/Domains/Ticket/Requests/ScanTicketRequest.php
Normal 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.',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -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');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user