mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-07 19:14:40 -04:00
Merge pull request #5201 from turbo124/v5-develop
Working on Google OAuth
This commit is contained in:
commit
e565355e90
@ -101,6 +101,7 @@ class CreateSingleAccount extends Command
|
||||
$company = Company::factory()->create([
|
||||
'account_id' => $account->id,
|
||||
'slack_webhook_url' => config('ninja.notification.slack'),
|
||||
'default_password_timeout' => 30*60000,
|
||||
]);
|
||||
|
||||
$account->default_company_id = $company->id;
|
||||
|
@ -35,12 +35,18 @@ class WebhookConfiguration
|
||||
*/
|
||||
public $post_purchase_body = '';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $post_purchase_rest_method = 'POST';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public static $casts = [
|
||||
'return_url' => 'string',
|
||||
'post_purchase_url' => 'string',
|
||||
'post_purchase_rest_method' => 'string',
|
||||
'post_purchase_headers' => 'array',
|
||||
'post_purchase_body' => 'object',
|
||||
];
|
||||
|
@ -104,7 +104,6 @@ class ConnectedAccountController extends BaseController
|
||||
}
|
||||
|
||||
$connected_account = [
|
||||
'password' => '',
|
||||
'email' => $google->harvestEmail($user),
|
||||
'oauth_user_id' => $google->harvestSubField($user),
|
||||
'oauth_user_token' => $token,
|
||||
@ -117,11 +116,8 @@ class ConnectedAccountController extends BaseController
|
||||
auth()->user()->email_verified_at = now();
|
||||
auth()->user()->save();
|
||||
|
||||
//$ct = CompanyUser::whereUserId(auth()->user()->id);
|
||||
//return $this->listResponse($ct);
|
||||
|
||||
return $this->itemResponse(auth()->user());
|
||||
// return $this->listResponse(auth()->user());
|
||||
|
||||
}
|
||||
|
||||
return response()
|
||||
|
@ -13,17 +13,25 @@ namespace App\Services\BillingSubscription;
|
||||
|
||||
use App\DataMapper\InvoiceItem;
|
||||
use App\Factory\InvoiceFactory;
|
||||
use App\Jobs\Util\SystemLogger;
|
||||
use App\Models\BillingSubscription;
|
||||
use App\Models\ClientSubscription;
|
||||
use App\Models\PaymentHash;
|
||||
use App\Models\Product;
|
||||
use App\Models\SystemLog;
|
||||
use App\Repositories\InvoiceRepository;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use GuzzleHttp\RequestOptions;
|
||||
|
||||
class BillingSubscriptionService
|
||||
{
|
||||
use MakesHash;
|
||||
|
||||
/** @var BillingSubscription */
|
||||
private $billing_subscription;
|
||||
|
||||
private $client_subscription;
|
||||
|
||||
public function __construct(BillingSubscription $billing_subscription)
|
||||
{
|
||||
$this->billing_subscription = $billing_subscription;
|
||||
@ -74,6 +82,10 @@ class BillingSubscriptionService
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the required line items for the invoice
|
||||
* for the billing subscription.
|
||||
*/
|
||||
private function createLineItems($data): array
|
||||
{
|
||||
$line_items = [];
|
||||
@ -108,11 +120,14 @@ class BillingSubscriptionService
|
||||
return $line_items;
|
||||
}
|
||||
|
||||
/**
|
||||
* If a coupon is entered (and is valid)
|
||||
* then we apply the coupon discount with a line item.
|
||||
*/
|
||||
private function createPromoLine($data)
|
||||
{
|
||||
|
||||
$product = $this->billing_subscription->product;
|
||||
|
||||
$discounted_amount = 0;
|
||||
$discount = 0;
|
||||
$amount = $data['quantity'] * $product->cost;
|
||||
@ -142,27 +157,79 @@ class BillingSubscriptionService
|
||||
|
||||
}
|
||||
|
||||
private function convertInvoiceToRecurring()
|
||||
private function convertInvoiceToRecurring($payment_hash)
|
||||
{
|
||||
//The first invoice is a plain invoice - the second is fired on the recurring schedule.
|
||||
}
|
||||
|
||||
public function createClientSubscription($payment_hash, $recurring_invoice_id = null)
|
||||
public function createClientSubscription($payment_hash)
|
||||
{
|
||||
//create the client sub record
|
||||
//create the client subscription record
|
||||
|
||||
//are we in a trial phase?
|
||||
//has money been paid?
|
||||
//is this a recurring or one off subscription.
|
||||
|
||||
//?trial enabled?
|
||||
$cs = new ClientSubscription();
|
||||
$cs->subscription_id = $this->billing_subscription->id;
|
||||
$cs->company_id = $this->billing_subscription->company_id;
|
||||
|
||||
// client_id
|
||||
//if is_trial
|
||||
//$cs->trial_started = time();
|
||||
//$cs->trial_duration = time() + duration period in seconds
|
||||
|
||||
//trials will not have any monies paid.
|
||||
|
||||
//if a payment has been made
|
||||
//$cs->invoice_id = xx
|
||||
|
||||
//if is_recurring
|
||||
//create recurring invoice from invoice
|
||||
$recurring_invoice = $this->convertInvoiceToRecurring($payment_hash);
|
||||
$recurring_invoice->frequency_id = $this->billing_subscription->frequency_id;
|
||||
$recurring_invoice->next_send_date = $recurring_invoice->nextDateByFrequency(now()->format('Y-m-d'));
|
||||
//$cs->recurring_invoice_id = $recurring_invoice->id;
|
||||
|
||||
//?set the recurring invoice as active - set the date here also based on the frequency?
|
||||
|
||||
//$cs->quantity = xx
|
||||
|
||||
// client_id
|
||||
//$cs->client_id = xx
|
||||
|
||||
$cs->save();
|
||||
|
||||
$this->client_subscription = $cs;
|
||||
|
||||
}
|
||||
|
||||
public function triggerWebhook($payment_hash)
|
||||
{
|
||||
//hit the webhook to after a successful onboarding
|
||||
//$client = xxxxxxx
|
||||
//todo webhook
|
||||
|
||||
$body = [
|
||||
'billing_subscription' => $this->billing_subscription,
|
||||
'client_subscription' => $this->client_subscription,
|
||||
// 'client' => $client->toArray(),
|
||||
];
|
||||
|
||||
|
||||
$client = new \GuzzleHttp\Client(['headers' => $this->billing_subscription->webhook_configuration->post_purchase_headers]);
|
||||
|
||||
$response = $client->{$this->billing_subscription->webhook_configuration->post_purchase_rest_method}($this->billing_subscription->post_purchase_url,[
|
||||
RequestOptions::JSON => ['body' => $body]
|
||||
]);
|
||||
|
||||
SystemLogger::dispatch(
|
||||
$body,
|
||||
SystemLog::CATEGORY_WEBHOOK,
|
||||
SystemLog::EVENT_WEBHOOK_RESPONSE,
|
||||
SystemLog::TYPE_WEBHOOK_RESPONSE,
|
||||
//$client,
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function fireNotifications()
|
||||
|
@ -37,6 +37,7 @@ class CompanyFactory extends Factory
|
||||
'db' => config('database.default'),
|
||||
'settings' => CompanySettings::defaults(),
|
||||
'is_large' => false,
|
||||
'default_password_timeout' => 30*60000,
|
||||
'enabled_modules' => config('ninja.enabled_modules'),
|
||||
'custom_fields' => (object) [
|
||||
//'invoice1' => 'Custom Date|date',
|
||||
|
Loading…
x
Reference in New Issue
Block a user