feat(ticket): add source IDs to tickets and update related services and tests
This commit is contained in:
@@ -42,6 +42,7 @@ class GenerateTicketsForPaidPurchase
|
||||
$catalogItem,
|
||||
$user,
|
||||
$purchaseItem->cantidad,
|
||||
$purchaseItem->source_variant_id,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user