guard('contact')->guest()) { $this->dispatch('purchase.forward', component: Authentication::class); return; } $total = collect($this->context['products'])->sum('total_raw'); $methods = auth()->guard('contact')->user()->client->service()->getPaymentMethods( $total, ); $this->methods = $methods; } public function handleSelect(string $company_gateway_id, string $gateway_type_id) { /** @var \App\Models\ClientContact $contact */ $contact = auth()->guard('contact')->user(); $this->dispatch('purchase.context', property: 'client_id', value: $contact->client->hashed_id); $this->context['client_id'] = $contact->client->hashed_id; $invoice = $this->subscription ->calc() ->buildPurchaseInvoice($this->context) ->service() ->markSent() ->fillDefaults() ->adjustInventory() ->save(); Cache::put($this->context['hash'], [ 'subscription_id' => $this->subscription->hashed_id, 'email' => $contact->email, 'client_id' => $contact->client->hashed_id, 'invoice_id' => $invoice->hashed_id, 'context' => 'purchase', 'campaign' => $this->context['campaign'], 'bundle' => $this->context['bundle'], ], now()->addMinutes(60)); $payable_amount = $invoice->partial > 0 ? \App\Utils\Number::formatValue($invoice->partial, $invoice->client->currency()) : \App\Utils\Number::formatValue($invoice->balance, $invoice->client->currency()); $this->dispatch('purchase.context', property: 'form.company_gateway_id', value: $company_gateway_id); $this->dispatch('purchase.context', property: 'form.payment_method_id', value: $gateway_type_id); $this->dispatch('purchase.context', property: 'form.invoice_hashed_id', value: $invoice->hashed_id); $this->dispatch('purchase.context', property: 'form.payable_amount', value: $payable_amount); $this->dispatch('purchase.next'); } public function render() { return view('billing-portal.v3.payments.methods'); } }