feat(scanner): implement scan attempt tracking with new request and resource classes

This commit is contained in:
2026-09-07 16:55:52 -03:00
parent 193e10dc48
commit 8a65d358a4
6 changed files with 87 additions and 78 deletions

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Domains\Ticket\Resources\Scanner;
use App\Domains\Ticket\Enums\ScanAttemptResult;
use App\Domains\Ticket\Models\ScanAttempt;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
/** @mixin ScanAttempt */
class ScanAttemptResource extends JsonResource
{
/** @return array<string, mixed> */
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'data' => $this->data,
'ticket' => $this->ticket?->ticket,
'attempted_at' => $this->created_at,
'result' => $this->result->value,
'can_view_ticket' => $this->ticket !== null
&& $this->result !== ScanAttemptResult::CategoryForbidden,
];
}
}

View File

@@ -1,24 +0,0 @@
<?php
namespace App\Domains\Ticket\Resources\Scanner;
use App\Domains\Ticket\Models\Ticket;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
/** @mixin Ticket */
class ScannedTicketResource extends JsonResource
{
/** @return array<string, mixed> */
public function toArray(Request $request): array
{
return [
'product' => $this->name,
'id' => $this->id,
'ticket' => $this->ticket,
'used_at' => $this->used_at,
'expires_at' => $this->getEffectiveExpiresAt(),
'status' => $this->status,
];
}
}