1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-21 08:51:34 +02:00
invoiceninja/app/Http/Livewire/SubscriptionPlanSwitch.php
Benjamin Beganović ec1d4e05c1 - Rename: $target_subscription to $target and all references
- Ability to pay for the upgrade
2021-04-08 16:53:54 +02:00

106 lines
2.3 KiB
PHP

<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Http\Livewire;
use App\Models\ClientContact;
use App\Models\Subscription;
use Illuminate\Support\Str;
use Livewire\Component;
class SubscriptionPlanSwitch extends Component
{
/**
* @var Subscription
*/
public $subscription;
/**
* @var Subscription
*/
public $target;
/**
* @var ClientContact
*/
public $contact;
/**
* @var array
*/
public $methods = [];
/**
* @var string
*/
public $total;
/**
* @var array
*/
public $state = [
'payment_initialised' => false,
'show_loading_bar' => false,
'invoice' => null,
'company_gateway_id' => null,
'payment_method_id' => null,
];
/**
* @var mixed|string
*/
public $hash;
public function mount()
{
$this->total = $this->subscription->service()->getPriceBetweenSubscriptions($this->subscription, $this->target);
$this->methods = $this->contact->client->service()->getPaymentMethods(100);
$this->hash = Str::uuid()->toString();
}
public function handleBeforePaymentEvents(): void
{
$this->state['show_loading_bar'] = true;
$this->state['invoice'] = $this->subscription->service()->createChangePlanInvoice([
'subscription' => $this->subscription,
'target' => $this->target,
]);
$this->state['payment_initialised'] = true;
$this->emit('beforePaymentEventsCompleted');
}
/**
* Middle method between selecting payment method &
* submitting the from to the backend.
*
* @param $company_gateway_id
* @param $gateway_type_id
*/
public function handleMethodSelectingEvent($company_gateway_id, $gateway_type_id)
{
$this->state['company_gateway_id'] = $company_gateway_id;
$this->state['payment_method_id'] = $gateway_type_id;
$this->handleBeforePaymentEvents();
}
public function render()
{
return render('components.livewire.subscription-plan-switch');
}
}