feat: add display_cart_item_images feature to tenants and update related resources

This commit is contained in:
2026-08-18 16:46:45 -03:00
parent 817d0de6d2
commit 8e26611097
13 changed files with 136 additions and 5 deletions

View File

@@ -4,6 +4,7 @@ namespace App\Domains\Cart\Resources;
use App\Domains\Cart\Models\CartItem;
use App\Domains\Catalog\Enums\InventoryPolicy;
use App\Domains\Tenant\Models\Tenant;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
@@ -19,12 +20,14 @@ class CartItemResource extends JsonResource
{
$selectedItem = $this->selectedItem();
$imageUrl = null;
$tenant = $request->route('tenant');
$displayImage = ! $tenant instanceof Tenant || $tenant->display_cart_item_images;
if ($selectedItem?->relationLoaded('attachments')) {
if ($displayImage && $selectedItem?->relationLoaded('attachments')) {
$imageUrl = $selectedItem->attachments->first()?->getTemporaryUrl(1440);
}
if ($imageUrl === null && $this->catalogItem?->relationLoaded('attachments')) {
if ($displayImage && $imageUrl === null && $this->catalogItem?->relationLoaded('attachments')) {
$imageUrl = $this->catalogItem->attachments->first()?->getTemporaryUrl(1440);
}

View File

@@ -6,6 +6,7 @@ use App\Domains\Cart\Models\CartItem;
use App\Domains\Catalog\Models\CatalogItem;
use App\Domains\Catalog\Models\Variant;
use App\Domains\Purchase\Models\PurchaseItem;
use App\Domains\Tenant\Models\Tenant;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
@@ -15,8 +16,13 @@ class PurchaseItemResource extends JsonResource
/** @return array<string, mixed> */
public function toArray(Request $request): array
{
$tenant = $request->route('tenant');
$displayImage = ! $tenant instanceof Tenant || $tenant->display_cart_item_images;
if ($this->resource instanceof PurchaseItem) {
$imageUrl = $this->imageAttachment?->getTemporaryUrl(1440);
$imageUrl = $displayImage
? $this->imageAttachment?->getTemporaryUrl(1440)
: null;
$attributes = $this->variant_attributes ?? [];
return [
@@ -42,7 +48,9 @@ class PurchaseItemResource extends JsonResource
$quantity = (int) ($this->cantidad ?? 0);
$unitPrice = $this->resolveUnitPrice($selectedItem);
$lineTotal = $unitPrice * $quantity;
$imageUrl = $this->resolveImageUrl($selectedItem, $catalogItem);
$imageUrl = $displayImage
? $this->resolveImageUrl($selectedItem, $catalogItem)
: null;
return [
'id' => $this->id,

View File

@@ -44,6 +44,7 @@ use Illuminate\Support\Facades\Schema;
'display_seach_bar',
'display_cart',
'cart_editing_enabled',
'display_cart_item_images',
'scanner_category_validation_enabled',
'event_title',
'event_location',
@@ -61,6 +62,7 @@ class Tenant extends Model
'display_seach_bar' => true,
'display_cart' => true,
'cart_editing_enabled' => true,
'display_cart_item_images' => true,
'scanner_category_validation_enabled' => true,
];
@@ -111,6 +113,7 @@ class Tenant extends Model
'display_seach_bar' => 'boolean',
'display_cart' => 'boolean',
'cart_editing_enabled' => 'boolean',
'display_cart_item_images' => 'boolean',
'scanner_category_validation_enabled' => 'boolean',
];
}

View File

@@ -84,6 +84,7 @@ class StoreTenantRequest extends FormRequest
'display_seach_bar' => ['sometimes', 'boolean'],
'display_cart' => ['sometimes', 'boolean'],
'cart_editing_enabled' => ['sometimes', 'boolean'],
'display_cart_item_images' => ['sometimes', 'boolean'],
'scanner_category_validation_enabled' => ['sometimes', 'boolean'],
'website_type_code' => [
'required_with:extras',

View File

@@ -94,6 +94,7 @@ class UpdateTenantRequest extends FormRequest
'display_seach_bar' => ['sometimes', 'boolean'],
'display_cart' => ['sometimes', 'boolean'],
'cart_editing_enabled' => ['sometimes', 'boolean'],
'display_cart_item_images' => ['sometimes', 'boolean'],
'scanner_category_validation_enabled' => ['sometimes', 'boolean'],
];
}

View File

@@ -75,6 +75,7 @@ class TenantResource extends JsonResource
'display_seach_bar' => $this->display_seach_bar,
'display_cart' => $this->display_cart,
'cart_editing_enabled' => $this->cart_editing_enabled,
'display_cart_item_images' => $this->display_cart_item_images,
'scanner_category_validation_enabled' => $this->scanner_category_validation_enabled,
'social_media' => $this->whenLoaded(
'socialMedia',