From f1ece9ab6b733cc0836e36b8722a5d69333b8f2a Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 29 Mar 2021 21:43:42 +1100 Subject: [PATCH] Subscriptions --- .../Subscription/StoreSubscriptionRequest.php | 13 +++++++++++++ app/Services/Subscription/SubscriptionService.php | 5 +++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/Http/Requests/Subscription/StoreSubscriptionRequest.php b/app/Http/Requests/Subscription/StoreSubscriptionRequest.php index f3a8c280b3e6..fe8de051fcd2 100644 --- a/app/Http/Requests/Subscription/StoreSubscriptionRequest.php +++ b/app/Http/Requests/Subscription/StoreSubscriptionRequest.php @@ -57,4 +57,17 @@ class StoreSubscriptionRequest extends Request 'name' => Rule::unique('subscriptions')->where('company_id', auth()->user()->company()->id) ]; } + + protected function prepareForValidation() + { + $input = $this->all(); + + if(array_key_exists('webhook_configuration', $input) && (!is_object(json_decode($input['webhook_configuration'])))) + $input['webhook_configuration'] = new \stdClass; + + if(!array_key_exists('webhook_configuration', $input)) + $input['webhook_configuration'] = new \stdClass; + + $this->replace($input); + } } diff --git a/app/Services/Subscription/SubscriptionService.php b/app/Services/Subscription/SubscriptionService.php index ac4981a210fd..5979fa33342b 100644 --- a/app/Services/Subscription/SubscriptionService.php +++ b/app/Services/Subscription/SubscriptionService.php @@ -21,6 +21,7 @@ use App\Models\ClientSubscription; use App\Models\Invoice; use App\Models\PaymentHash; use App\Models\Product; +use App\Models\RecurringInvoice; use App\Models\Subscription; use App\Models\SystemLog; use App\Repositories\InvoiceRepository; @@ -80,7 +81,7 @@ class SubscriptionService $recurring_invoice->client_id = $client_contact->client_id; $recurring_invoice->line_items = $subscription_repo->generateLineItems($this->subscription, true); $recurring_invoice->subscription_id = $this->subscription->id; - $recurring_invoice->frequency_id = $this->subscription->frequency_id; + $recurring_invoice->frequency_id = $this->subscription->frequency_id ?: RecurringInvoice::FREQUENCY_MONTHLY; $recurring_invoice->date = now(); $recurring_invoice->next_send_date = now()->addSeconds($this->subscription->trial_duration); $recurring_invoice->remaining_cycles = -1; @@ -102,7 +103,7 @@ class SubscriptionService //execute any webhooks $this->triggerWebhook(); - if(strlen($this->subscription->webhook_configuration->post_purchase_url) >=1) + if(property_exists($this->subscription->webhook_configuration, 'post_purchase_url') && strlen($this->subscription->webhook_configuration->post_purchase_url) >=1) return redirect($this->subscription->webhook_configuration->post_purchase_url); return redirect('/client/recurring_invoices/'.$recurring_invoice->hashed_id);