From 7b9a4a61fc6da18549f56416b5c01779615ccabb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Wed, 14 Feb 2024 18:30:46 +0100 Subject: [PATCH] Add quantity selection for optional recurring products --- .../Cart/OptionalRecurringProducts.php | 7 ++++ .../optional-recurring-products.blade.php | 35 +++++++++++-------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/app/Livewire/BillingPortal/Cart/OptionalRecurringProducts.php b/app/Livewire/BillingPortal/Cart/OptionalRecurringProducts.php index 81c7acfbfc83..261fcdf71947 100644 --- a/app/Livewire/BillingPortal/Cart/OptionalRecurringProducts.php +++ b/app/Livewire/BillingPortal/Cart/OptionalRecurringProducts.php @@ -19,6 +19,13 @@ class OptionalRecurringProducts extends Component { public Subscription $subscription; + public array $context; + + public function quantity($id, $value): void + { + $this->dispatch('purchase.context', property: "bundle.optional_recurring_products.{$id}.quantity", value: $value); + } + public function render(): \Illuminate\View\View { return view('billing-portal.v3.cart.optional-recurring-products'); diff --git a/resources/views/billing-portal/v3/cart/optional-recurring-products.blade.php b/resources/views/billing-portal/v3/cart/optional-recurring-products.blade.php index 751814b396d0..5a4b0b129c50 100644 --- a/resources/views/billing-portal/v3/cart/optional-recurring-products.blade.php +++ b/resources/views/billing-portal/v3/cart/optional-recurring-products.blade.php @@ -1,15 +1,20 @@
- @unless(empty($subscription->optional_recurring_product_ids)) - @foreach($subscription->service()->optional_recurring_products() as $index => $product) + @isset($context['bundle']['optional_recurring_products']) + @foreach($context['bundle']['optional_recurring_products'] as $key => $entry) + + @php + $product = $entry['product']; + @endphp +
- @if(filter_var($product->product_image, FILTER_VALIDATE_URL)) + @if(filter_var($product['product_image'], FILTER_VALIDATE_URL))
@@ -17,24 +22,24 @@ @endif
-

{{ $product->product_key }}

-

{{ \App\Utils\Number::formatMoney($product->price, $subscription->company) }} / {{ App\Models\RecurringInvoice::frequencyForKey($subscription->frequency_id) }}

+

{{ $product['product_key'] }}

+

{{ \App\Utils\Number::formatMoney($product['price'], $subscription['company']) }} / {{ App\Models\RecurringInvoice::frequencyForKey($subscription->frequency_id) }}

- @if(is_numeric($product->max_quantity)) - @if($subscription->use_inventory_management && $product->in_stock_quantity == 0) + @if($subscription->per_seat_enabled) + @if($subscription->use_inventory_management && $product['in_stock_quantity'] == 0)

{{ ctrans('texts.out_of_stock') }}

@else

{{ ctrans('texts.qty') }}

@endif - - use_inventory_management && $product['in_stock_quantity'] == 0) disabled @endif> + + @for ($i = 1; $i <= ($subscription->use_inventory_management ? min($product['in_stock_quantity'], max(100,$product['max_quantity'])) : max(100,$product['max_quantity'])); $i++) + @endfor @endif @@ -43,9 +48,9 @@
- {!! $product->markdownNotes() !!} + {!! $product['notes'] !!}
@endforeach - @endunless + @endisset