Working on white label licensing

This commit is contained in:
David Bomba 2023-03-10 09:22:16 +11:00
parent 39eb75c440
commit a32a9a0015
3 changed files with 45 additions and 18 deletions

View File

@ -11,22 +11,23 @@
namespace App\Http\Livewire; namespace App\Http\Livewire;
use App\DataMapper\ClientSettings; use App\Utils\Ninja;
use App\Models\Client;
use App\Models\Invoice;
use Livewire\Component;
use App\Libraries\MultiDB;
use Illuminate\Support\Str;
use App\Models\Subscription;
use App\Models\ClientContact;
use App\Factory\ClientFactory; use App\Factory\ClientFactory;
use App\Jobs\Mail\NinjaMailerJob; use App\Jobs\Mail\NinjaMailerJob;
use App\DataMapper\ClientSettings;
use App\Jobs\Mail\NinjaMailerObject; use App\Jobs\Mail\NinjaMailerObject;
use App\Libraries\MultiDB;
use App\Mail\ContactPasswordlessLogin;
use App\Models\Client;
use App\Models\ClientContact;
use App\Models\Invoice;
use App\Models\Subscription;
use App\Repositories\ClientContactRepository;
use App\Repositories\ClientRepository;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Str; use App\Mail\ContactPasswordlessLogin;
use Livewire\Component; use App\Repositories\ClientRepository;
use App\Repositories\ClientContactRepository;
class BillingPortalPurchase extends Component class BillingPortalPurchase extends Component
{ {
@ -168,7 +169,7 @@ class BillingPortalPurchase extends Component
/** /**
* Instance of company. * Instance of company.
* *
* @var Company * @var \App\Models\Company
*/ */
public $company; public $company;
@ -396,12 +397,19 @@ class BillingPortalPurchase extends Component
->adjustInventory() ->adjustInventory()
->save(); ->save();
$context = 'purchase';
// if(Ninja::isHosted() && $this->subscription->service()->recurring_products()->first()->product_key == 'whitelabel') {
if($this->subscription->service()->recurring_products()->first()?->product_key == 'whitelabel') {
$context = 'whitelabel';
}
Cache::put($this->hash, [ Cache::put($this->hash, [
'subscription_id' => $this->subscription->hashed_id, 'subscription_id' => $this->subscription->hashed_id,
'email' => $this->email ?? $this->contact->email, 'email' => $this->email ?? $this->contact->email,
'client_id' => $this->contact->client->hashed_id, 'client_id' => $this->contact->client->hashed_id,
'invoice_id' => $this->invoice->hashed_id, 'invoice_id' => $this->invoice->hashed_id,
'context' => 'purchase', 'context' => $context,
'campaign' => $this->campaign, 'campaign' => $this->campaign,
], now()->addMinutes(60)); ], now()->addMinutes(60));

View File

@ -169,9 +169,24 @@ class SubscriptionService
//send license to the user. //send license to the user.
$invoice = $payment_hash->fee_invoice; $invoice = $payment_hash->fee_invoice;
$license_key = Str::uuid()->toString(); $license_key = Str::uuid()->toString();
$invoice->public_notes = $license_key; $invoice->footer = ctrans('texts.white_label_body',['license_key' => $license_key]);
$invoice->save();
$recurring_invoice = $this->convertInvoiceToRecurring($payment_hash->payment->client_id);
$recurring_invoice_repo = new RecurringInvoiceRepository();
$recurring_invoice = $recurring_invoice_repo->save([], $recurring_invoice);
$recurring_invoice->auto_bill = $this->subscription->auto_bill;
/* Start the recurring service */
$recurring_invoice->service()
->start()
->save();
//update the invoice and attach to the recurring invoice!!!!!
$invoice->recurring_id = $recurring_invoice->id;
$invoice->is_proforma = false;
$invoice->service()->touchPdf(); $invoice->service()->touchPdf();
$invoice->save();
$contact = $invoice->client->contacts()->whereNotNull('email')->first(); $contact = $invoice->client->contacts()->whereNotNull('email')->first();
@ -183,16 +198,20 @@ class SubscriptionService
$license->is_claimed = 1; $license->is_claimed = 1;
$license->transaction_reference = $payment_hash?->payment?->transaction_reference ?: ' '; $license->transaction_reference = $payment_hash?->payment?->transaction_reference ?: ' ';
$license->product_id = self::WHITE_LABEL; $license->product_id = self::WHITE_LABEL;
$license->recurring_invoice_id = $recurring_invoice->id;
$license->save(); $license->save();
$invitation = $invoice->invitations()->first();
$email_object = new EmailObject; $email_object = new EmailObject;
$email_object->to = $contact->email; $email_object->to = [$contact->email];
$email_object->subject = ctrans('texts.white_label_link') . " " .ctrans('texts.payment_subject'); $email_object->subject = ctrans('texts.white_label_link') . " " .ctrans('texts.payment_subject');
$email_object->body = ctrans('texts.white_label_body',['license_key' => $license_key]); $email_object->body = ctrans('texts.white_label_body',['license_key' => $license_key]);
$email_object->client_id = $invoice->client_id; $email_object->client_id = $invoice->client_id;
$email_object->client_contact_id = $contact->id; $email_object->client_contact_id = $contact->id;
$email_object->invitation_key = $invoice->invitations()->first()->invitation_key; $email_object->invitation_key = $invitation->invitation_key;
$email_object->invitation_id = $invitation->id;
$email_object->entity_id = $invoice->id; $email_object->entity_id = $invoice->id;
$email_object->entity_class = Invoice::class; $email_object->entity_class = Invoice::class;
$email_object->user_id = $invoice->user_id; $email_object->user_id = $invoice->user_id;

View File

@ -5014,7 +5014,7 @@ $LANG = array(
'no_assigned_tasks' => 'No billable tasks for this project', 'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action', 'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.', 'authorization_sms_failure' => 'Please verify your account to send emails.',
'white_label_body' => 'Thank you for purchasing a white label license. Your license key is :license_key.', 'white_label_body' => 'Thank you for purchasing a white label license. \n\n Your license key is: \n\n :license_key',
); );