59 lines
2.2 KiB
PHP
59 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Domains\Purchase\Services\Checkout;
|
|
|
|
use App\Domains\Purchase\Models\Purchase;
|
|
|
|
class PurchaseResponseLoader
|
|
{
|
|
public function load(Purchase $purchase): Purchase
|
|
{
|
|
$purchase->load(['tenant', 'items.imageAttachment']);
|
|
|
|
if (
|
|
$purchase->cart_id !== null
|
|
&& (
|
|
in_array($purchase->status, [
|
|
Purchase::STATUS_CREATED,
|
|
Purchase::STATUS_PENDING_PAYMENT,
|
|
], true)
|
|
|| $purchase->items->isEmpty()
|
|
)
|
|
) {
|
|
$purchase->load([
|
|
'cart.items.catalogItem.inventory',
|
|
'cart.items.catalogItem.attachments',
|
|
'cart.items.variant.inventory',
|
|
'cart.items.variant.attachments',
|
|
'cart.items.variant.catalogItem',
|
|
'cart.items.variant.definitions.itemAttribute.attribute',
|
|
'cart.items.variant.eventDates',
|
|
'cart.items.variant.eventDate',
|
|
]);
|
|
}
|
|
|
|
if (! $purchase->tenant->checkout_editing_policy->allowsVariantChanges()) {
|
|
return $purchase;
|
|
}
|
|
|
|
$purchase->load([
|
|
'items.sourceCatalogItem.itemAttributes.attribute',
|
|
'items.sourceCatalogItem.variants' => fn ($query) => $query->orderBy('id'),
|
|
'items.sourceCatalogItem.variants.inventory',
|
|
'items.sourceCatalogItem.variants.definitions' => fn ($query) => $query->orderBy('id'),
|
|
'items.sourceCatalogItem.variants.definitions.itemAttribute.attribute.options',
|
|
'items.sourceCatalogItem.variants.eventDates',
|
|
'items.sourceCatalogItem.variants.eventDate',
|
|
'cart.items.catalogItem.itemAttributes.attribute',
|
|
'cart.items.catalogItem.variants' => fn ($query) => $query->orderBy('id'),
|
|
'cart.items.catalogItem.variants.inventory',
|
|
'cart.items.catalogItem.variants.definitions' => fn ($query) => $query->orderBy('id'),
|
|
'cart.items.catalogItem.variants.definitions.itemAttribute.attribute.options',
|
|
'cart.items.catalogItem.variants.eventDates',
|
|
'cart.items.catalogItem.variants.eventDate',
|
|
]);
|
|
|
|
return $purchase;
|
|
}
|
|
}
|