feat(ticket): add source IDs to tickets and update related services and tests

This commit is contained in:
2026-07-21 12:27:26 -03:00
parent c0978033c1
commit 38f74739da
6 changed files with 63 additions and 6 deletions

View File

@@ -42,6 +42,7 @@ class GenerateTicketsForPaidPurchase
$catalogItem,
$user,
$purchaseItem->cantidad,
$purchaseItem->source_variant_id,
);
}
}

View File

@@ -14,6 +14,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
'ticket',
'name',
'description',
'source_catalog_item_id',
'source_variant_id',
'starts_at',
'expires_at',
'used_at',
@@ -34,6 +36,8 @@ class Ticket extends Model
protected function casts(): array
{
return [
'source_catalog_item_id' => 'integer',
'source_variant_id' => 'integer',
'starts_at' => 'datetime',
'expires_at' => 'datetime',
'used_at' => 'datetime',

View File

@@ -16,15 +16,19 @@ class TicketGeneratorService
/**
* @return Collection<int, Ticket>
*/
public function generate(CatalogItem $catalogItem, User $user, int $quantity = 1): Collection
{
public function generate(
CatalogItem $catalogItem,
User $user,
int $quantity = 1,
?int $sourceVariantId = null,
): Collection {
if ($quantity < 1) {
throw TicketGenerationException::invalidQuantity();
}
$now = now();
return DB::transaction(function () use ($catalogItem, $user, $quantity, $now): Collection {
return DB::transaction(function () use ($catalogItem, $user, $quantity, $sourceVariantId, $now): Collection {
$catalogItems = $this->resolveCatalogItems($catalogItem, $quantity, $now);
return $catalogItems->map(fn (CatalogItem $item): Ticket => Ticket::query()->create([
@@ -32,6 +36,8 @@ class TicketGeneratorService
'ticket' => (string) Str::uuid(),
'name' => $item->nombre,
'description' => (string) ($item->descripcion ?? ''),
'source_catalog_item_id' => $catalogItem->getKey(),
'source_variant_id' => $sourceVariantId,
'starts_at' => $item->minimum_use_date,
'expires_at' => $item->maximum_use_date,
'used_at' => null,