Refactor for webhooks

This commit is contained in:
David Bomba 2023-12-12 18:43:55 +11:00
parent f25af382a5
commit 1d438d14d3
15 changed files with 136 additions and 109 deletions

View File

@ -11,36 +11,37 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Events\Credit\CreditWasCreated; use App\Utils\Ninja;
use App\Events\Credit\CreditWasUpdated; use App\Models\Client;
use App\Factory\CloneCreditFactory; use App\Models\Credit;
use App\Models\Account;
use App\Models\Invoice;
use App\Models\Webhook;
use Illuminate\Http\Response;
use App\Factory\CreditFactory; use App\Factory\CreditFactory;
use App\Filters\CreditFilters; use App\Filters\CreditFilters;
use App\Http\Requests\Credit\ActionCreditRequest; use App\Jobs\Credit\ZipCredits;
use App\Utils\Traits\MakesHash;
use App\Jobs\Entity\EmailEntity;
use App\Factory\CloneCreditFactory;
use App\Services\PdfMaker\PdfMerge;
use Illuminate\Support\Facades\App;
use App\Utils\Traits\SavesDocuments;
use App\Repositories\CreditRepository;
use App\Events\Credit\CreditWasCreated;
use App\Events\Credit\CreditWasUpdated;
use App\Transformers\CreditTransformer;
use Illuminate\Support\Facades\Storage;
use App\Services\Template\TemplateAction;
use App\Http\Requests\Credit\BulkCreditRequest; use App\Http\Requests\Credit\BulkCreditRequest;
use App\Http\Requests\Credit\CreateCreditRequest;
use App\Http\Requests\Credit\DestroyCreditRequest;
use App\Http\Requests\Credit\EditCreditRequest; use App\Http\Requests\Credit\EditCreditRequest;
use App\Http\Requests\Credit\ShowCreditRequest; use App\Http\Requests\Credit\ShowCreditRequest;
use App\Http\Requests\Credit\StoreCreditRequest; use App\Http\Requests\Credit\StoreCreditRequest;
use App\Http\Requests\Credit\ActionCreditRequest;
use App\Http\Requests\Credit\CreateCreditRequest;
use App\Http\Requests\Credit\UpdateCreditRequest; use App\Http\Requests\Credit\UpdateCreditRequest;
use App\Http\Requests\Credit\UploadCreditRequest; use App\Http\Requests\Credit\UploadCreditRequest;
use App\Jobs\Credit\ZipCredits; use App\Http\Requests\Credit\DestroyCreditRequest;
use App\Jobs\Entity\EmailEntity;
use App\Models\Account;
use App\Models\Client;
use App\Models\Credit;
use App\Models\Invoice;
use App\Repositories\CreditRepository;
use App\Services\PdfMaker\PdfMerge;
use App\Services\Template\TemplateAction;
use App\Transformers\CreditTransformer;
use App\Utils\Ninja;
use App\Utils\Traits\MakesHash;
use App\Utils\Traits\SavesDocuments;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Storage;
/** /**
* Class CreditController. * Class CreditController.
@ -638,23 +639,14 @@ class CreditController extends BaseController
} }
break; break;
case 'email': case 'email':
$credit->invitations->load('contact.client.country', 'credit.client.country', 'credit.company')->each(function ($invitation) use ($credit) {
EmailEntity::dispatch($invitation, $credit->company, 'credit');
});
if (! $bulk) {
return response()->json(['message'=>'email sent'], 200);
}
break;
case 'send_email': case 'send_email':
$credit->invitations->load('contact.client.country', 'credit.client.country', 'credit.company')->each(function ($invitation) use ($credit) { $credit->invitations->load('contact.client.country', 'credit.client.country', 'credit.company')->each(function ($invitation) use ($credit) {
EmailEntity::dispatch($invitation, $credit->company, 'credit'); EmailEntity::dispatch($invitation, $credit->company, 'credit');
}); });
$credit->sendEvent(Webhook::EVENT_SENT_CREDIT, "client");
if (! $bulk) { if (! $bulk) {
return response()->json(['message'=>'email sent'], 200); return response()->json(['message'=>'email sent'], 200);
} }

View File

@ -11,25 +11,26 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Events\Credit\CreditWasEmailed; use App\Utils\Ninja;
use App\Events\Quote\QuoteWasEmailed; use App\Models\Quote;
use App\Http\Requests\Email\SendEmailRequest;
use App\Jobs\PurchaseOrder\PurchaseOrderEmail;
use App\Models\Credit; use App\Models\Credit;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\Webhook;
use App\Models\PurchaseOrder; use App\Models\PurchaseOrder;
use App\Models\Quote;
use App\Models\RecurringInvoice;
use App\Services\Email\Email; use App\Services\Email\Email;
use App\Utils\Traits\MakesHash;
use App\Models\RecurringInvoice;
use App\Services\Email\EmailObject; use App\Services\Email\EmailObject;
use App\Events\Quote\QuoteWasEmailed;
use App\Transformers\QuoteTransformer;
use Illuminate\Mail\Mailables\Address;
use App\Events\Credit\CreditWasEmailed;
use App\Transformers\CreditTransformer; use App\Transformers\CreditTransformer;
use App\Transformers\InvoiceTransformer; use App\Transformers\InvoiceTransformer;
use App\Http\Requests\Email\SendEmailRequest;
use App\Jobs\PurchaseOrder\PurchaseOrderEmail;
use App\Transformers\PurchaseOrderTransformer; use App\Transformers\PurchaseOrderTransformer;
use App\Transformers\QuoteTransformer;
use App\Transformers\RecurringInvoiceTransformer; use App\Transformers\RecurringInvoiceTransformer;
use App\Utils\Ninja;
use App\Utils\Traits\MakesHash;
use Illuminate\Mail\Mailables\Address;
class EmailController extends BaseController class EmailController extends BaseController
{ {
@ -100,6 +101,7 @@ class EmailController extends BaseController
if ($entity_obj->invitations->count() >= 1) { if ($entity_obj->invitations->count() >= 1) {
$entity_obj->entityEmailEvent($entity_obj->invitations->first(), 'invoice', $template); $entity_obj->entityEmailEvent($entity_obj->invitations->first(), 'invoice', $template);
$entity_obj->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
} }
@ -109,6 +111,8 @@ class EmailController extends BaseController
if ($entity_obj->invitations->count() >= 1) { if ($entity_obj->invitations->count() >= 1) {
event(new QuoteWasEmailed($entity_obj->invitations->first(), $entity_obj->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), 'quote')); event(new QuoteWasEmailed($entity_obj->invitations->first(), $entity_obj->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), 'quote'));
$entity_obj->sendEvent(Webhook::EVENT_SENT_QUOTE, "client");
} }
} }
@ -118,6 +122,7 @@ class EmailController extends BaseController
if ($entity_obj->invitations->count() >= 1) { if ($entity_obj->invitations->count() >= 1) {
event(new CreditWasEmailed($entity_obj->invitations->first(), $entity_obj->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), 'credit')); event(new CreditWasEmailed($entity_obj->invitations->first(), $entity_obj->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), 'credit'));
$entity_obj->sendEvent(Webhook::EVENT_SENT_CREDIT, "client");
} }
} }
@ -143,6 +148,7 @@ class EmailController extends BaseController
$data['template'] = $template; $data['template'] = $template;
PurchaseOrderEmail::dispatch($entity_obj, $entity_obj->company, $data); PurchaseOrderEmail::dispatch($entity_obj, $entity_obj->company, $data);
$entity_obj->sendEvent(Webhook::EVENT_SENT_PURCHASE_ORDER, "vendor");
return $this->itemResponse($entity_obj); return $this->itemResponse($entity_obj);
} }

View File

@ -11,14 +11,15 @@
namespace App\Jobs\Cron; namespace App\Jobs\Cron;
use App\Jobs\Entity\EmailEntity;
use App\Libraries\MultiDB;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\Webhook;
use App\Libraries\MultiDB;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use App\Jobs\Entity\EmailEntity;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class AutoBill implements ShouldQueue class AutoBill implements ShouldQueue
{ {
@ -77,6 +78,8 @@ class AutoBill implements ShouldQueue
} }
}); });
$invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
} }

View File

@ -11,13 +11,14 @@
namespace App\Jobs\Invoice; namespace App\Jobs\Invoice;
use App\Jobs\Entity\EmailEntity;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\Webhook;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use App\Jobs\Entity\EmailEntity;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class BulkInvoiceJob implements ShouldQueue class BulkInvoiceJob implements ShouldQueue
{ {
@ -50,6 +51,8 @@ class BulkInvoiceJob implements ShouldQueue
if ($this->invoice->invitations->count() >= 1) { if ($this->invoice->invitations->count() >= 1) {
$this->invoice->entityEmailEvent($this->invoice->invitations->first(), 'invoice', $this->reminder_template); $this->invoice->entityEmailEvent($this->invoice->invitations->first(), 'invoice', $this->reminder_template);
$this->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
} }
} }

View File

@ -215,6 +215,7 @@ class SendReminders implements ShouldQueue
EmailEntity::dispatch($invitation, $invitation->company, $template)->delay(10); EmailEntity::dispatch($invitation, $invitation->company, $template)->delay(10);
event(new InvoiceWasEmailed($invoice->invitations->first(), $invoice->company, Ninja::eventVars(), $template)); event(new InvoiceWasEmailed($invoice->invitations->first(), $invoice->company, Ninja::eventVars(), $template));
$invoice->sendEvent(Webhook::EVENT_REMIND_INVOICE, "client");
} }
}); });

View File

@ -11,24 +11,25 @@
namespace App\Jobs\RecurringInvoice; namespace App\Jobs\RecurringInvoice;
use App\DataMapper\Analytics\SendRecurringFailure;
use App\Events\Invoice\InvoiceWasCreated;
use App\Factory\InvoiceInvitationFactory;
use App\Factory\RecurringInvoiceToInvoiceFactory;
use App\Jobs\Cron\AutoBill;
use App\Jobs\Entity\EmailEntity;
use App\Models\Invoice;
use App\Models\RecurringInvoice;
use App\Utils\Ninja;
use App\Utils\Traits\GeneratesCounter;
use App\Utils\Traits\MakesHash;
use Carbon\Carbon; use Carbon\Carbon;
use App\Utils\Ninja;
use App\Models\Invoice;
use App\Models\Webhook;
use App\Jobs\Cron\AutoBill;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use App\Utils\Traits\MakesHash;
use Illuminate\Foundation\Bus\Dispatchable; use App\Jobs\Entity\EmailEntity;
use Illuminate\Queue\InteractsWithQueue; use App\Models\RecurringInvoice;
use App\Utils\Traits\GeneratesCounter;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Turbo124\Beacon\Facades\LightLogs; use Turbo124\Beacon\Facades\LightLogs;
use Illuminate\Queue\InteractsWithQueue;
use App\Events\Invoice\InvoiceWasCreated;
use App\Factory\InvoiceInvitationFactory;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\Factory\RecurringInvoiceToInvoiceFactory;
use App\DataMapper\Analytics\SendRecurringFailure;
class SendRecurring implements ShouldQueue class SendRecurring implements ShouldQueue
{ {
@ -117,6 +118,7 @@ class SendRecurring implements ShouldQueue
//04-08-2023 edge case to support where online payment notifications are not enabled //04-08-2023 edge case to support where online payment notifications are not enabled
if(!$invoice->client->getSetting('client_online_payment_notification')) { if(!$invoice->client->getSetting('client_online_payment_notification')) {
$this->sendRecurringEmails($invoice); $this->sendRecurringEmails($invoice);
$invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
} elseif ($invoice->auto_bill_enabled && $invoice->client->getSetting('auto_bill_date') == 'on_due_date' && $invoice->client->getSetting('auto_email_invoice') && ($invoice->due_date && Carbon::parse($invoice->due_date)->startOfDay()->lte(now()->startOfDay()))) { } elseif ($invoice->auto_bill_enabled && $invoice->client->getSetting('auto_bill_date') == 'on_due_date' && $invoice->client->getSetting('auto_email_invoice') && ($invoice->due_date && Carbon::parse($invoice->due_date)->startOfDay()->lte(now()->startOfDay()))) {
nlog("attempting to autobill {$invoice->number}"); nlog("attempting to autobill {$invoice->number}");
@ -125,10 +127,12 @@ class SendRecurring implements ShouldQueue
//04-08-2023 edge case to support where online payment notifications are not enabled //04-08-2023 edge case to support where online payment notifications are not enabled
if(!$invoice->client->getSetting('client_online_payment_notification')) { if(!$invoice->client->getSetting('client_online_payment_notification')) {
$this->sendRecurringEmails($invoice); $this->sendRecurringEmails($invoice);
$invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
} elseif ($invoice->client->getSetting('auto_email_invoice')) { } elseif ($invoice->client->getSetting('auto_email_invoice')) {
$this->sendRecurringEmails($invoice); $this->sendRecurringEmails($invoice);
$invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
} }

View File

@ -11,22 +11,23 @@
namespace App\Jobs\Util; namespace App\Jobs\Util;
use App\Utils\Ninja;
use App\Models\Invoice;
use App\Models\Webhook;
use App\Libraries\MultiDB;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Carbon;
use App\DataMapper\InvoiceItem; use App\DataMapper\InvoiceItem;
use App\Factory\InvoiceFactory; use App\Factory\InvoiceFactory;
use App\Jobs\Entity\EmailEntity; use App\Jobs\Entity\EmailEntity;
use App\Libraries\MultiDB;
use App\Models\Invoice;
use App\Utils\Ninja;
use App\Utils\Traits\MakesDates; use App\Utils\Traits\MakesDates;
use Illuminate\Support\Facades\App;
use App\Utils\Traits\MakesReminders; use App\Utils\Traits\MakesReminders;
use Illuminate\Bus\Queueable; use Illuminate\Support\Facades\Auth;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Auth;
class ReminderJob implements ShouldQueue class ReminderJob implements ShouldQueue
{ {
@ -150,6 +151,7 @@ class ReminderJob implements ShouldQueue
EmailEntity::dispatch($invitation, $invitation->company, $reminder_template); EmailEntity::dispatch($invitation, $invitation->company, $reminder_template);
nlog("Firing reminder email for invoice {$invoice->number} - {$reminder_template}"); nlog("Firing reminder email for invoice {$invoice->number} - {$reminder_template}");
$invoice->entityEmailEvent($invitation, $reminder_template); $invoice->entityEmailEvent($invitation, $reminder_template);
$invoice->sendEvent(Webhook::EVENT_REMIND_INVOICE, "client");
} }
}); });
} }
@ -220,6 +222,7 @@ class ReminderJob implements ShouldQueue
EmailEntity::dispatch($invitation, $invitation->company, $reminder_template); EmailEntity::dispatch($invitation, $invitation->company, $reminder_template);
nlog("Firing reminder email for invoice {$invoice->number} - {$reminder_template}"); nlog("Firing reminder email for invoice {$invoice->number} - {$reminder_template}");
$invoice->entityEmailEvent($invitation, $reminder_template); $invoice->entityEmailEvent($invitation, $reminder_template);
$invoice->sendEvent(Webhook::EVENT_REMIND_INVOICE, "client");
} }
}); });
} }

View File

@ -76,18 +76,18 @@ class MailSentListener implements ShouldQueue
foreach (MultiDB::$dbs as $db) { foreach (MultiDB::$dbs as $db) {
if ($invitation = InvoiceInvitation::on($db)->where('key', $key)->first()) { if ($invitation = InvoiceInvitation::on($db)->where('key', $key)->first()) {
$invitation->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client"); // $invitation->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
return $invitation; return $invitation;
} elseif ($invitation = QuoteInvitation::on($db)->where('key', $key)->first()) { } elseif ($invitation = QuoteInvitation::on($db)->where('key', $key)->first()) {
$invitation->quote->sendEvent(Webhook::EVENT_SENT_QUOTE, "client"); // $invitation->quote->sendEvent(Webhook::EVENT_SENT_QUOTE, "client");
return $invitation; return $invitation;
} elseif ($invitation = RecurringInvoiceInvitation::on($db)->where('key', $key)->first()) { } elseif ($invitation = RecurringInvoiceInvitation::on($db)->where('key', $key)->first()) {
return $invitation; return $invitation;
} elseif ($invitation = CreditInvitation::on($db)->where('key', $key)->first()) { } elseif ($invitation = CreditInvitation::on($db)->where('key', $key)->first()) {
$invitation->credit->sendEvent(Webhook::EVENT_SENT_CREDIT, "client"); // $invitation->credit->sendEvent(Webhook::EVENT_SENT_CREDIT, "client");
return $invitation; return $invitation;
} elseif ($invitation = PurchaseOrderInvitation::on($db)->where('key', $key)->first()) { } elseif ($invitation = PurchaseOrderInvitation::on($db)->where('key', $key)->first()) {
$invitation->purchase_order->sendEvent(Webhook::EVENT_SENT_PURCHASE_ORDER, "vendor"); // $invitation->purchase_order->sendEvent(Webhook::EVENT_SENT_PURCHASE_ORDER, "vendor");
return $invitation; return $invitation;
} }
} }

View File

@ -11,10 +11,11 @@
namespace App\Services\Credit; namespace App\Services\Credit;
use App\Events\Credit\CreditWasEmailed;
use App\Jobs\Entity\EmailEntity;
use App\Models\ClientContact;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Models\Webhook;
use App\Models\ClientContact;
use App\Jobs\Entity\EmailEntity;
use App\Events\Credit\CreditWasEmailed;
class SendEmail class SendEmail
{ {
@ -52,6 +53,8 @@ class SendEmail
if ($this->credit->invitations->count() >= 1) { if ($this->credit->invitations->count() >= 1) {
event(new CreditWasEmailed($this->credit->invitations->first(), $this->credit->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), 'credit')); event(new CreditWasEmailed($this->credit->invitations->first(), $this->credit->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), 'credit'));
$this->credit->sendEvent(Webhook::EVENT_SENT_CREDIT, "client");
} }
} }

View File

@ -11,13 +11,14 @@
namespace App\Services\Credit; namespace App\Services\Credit;
use App\Events\Credit\CreditWasEmailed;
use App\Jobs\Entity\EmailEntity;
use App\Models\Credit;
use App\Services\AbstractService;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Traits\GeneratesCounter; use App\Models\Credit;
use App\Models\Webhook;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Jobs\Entity\EmailEntity;
use App\Services\AbstractService;
use App\Utils\Traits\GeneratesCounter;
use App\Events\Credit\CreditWasEmailed;
class TriggeredActions extends AbstractService class TriggeredActions extends AbstractService
{ {
@ -78,6 +79,7 @@ class TriggeredActions extends AbstractService
if ($this->credit->invitations->count() > 0) { if ($this->credit->invitations->count() > 0) {
event(new CreditWasEmailed($this->credit->invitations->first(), $this->credit->company, Ninja::eventVars(), 'credit')); event(new CreditWasEmailed($this->credit->invitations->first(), $this->credit->company, Ninja::eventVars(), 'credit'));
$this->credit->sendEvent(Webhook::EVENT_SENT_CREDIT, "client");
} }
} }
} }

View File

@ -61,9 +61,8 @@ class MarkSent extends AbstractService
if ($fire_webhook) { if ($fire_webhook) {
event('eloquent.updated: App\Models\Invoice', $this->invoice); event('eloquent.updated: App\Models\Invoice', $this->invoice);
}
$this->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client"); $this->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
}
return $this->invoice->fresh(); return $this->invoice->fresh();
} }

View File

@ -11,12 +11,13 @@
namespace App\Services\Invoice; namespace App\Services\Invoice;
use App\Events\Invoice\InvoiceWasEmailed;
use App\Jobs\Entity\EmailEntity;
use App\Models\ClientContact;
use App\Models\Invoice;
use App\Services\AbstractService;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Models\Invoice;
use App\Models\Webhook;
use App\Models\ClientContact;
use App\Jobs\Entity\EmailEntity;
use App\Services\AbstractService;
use App\Events\Invoice\InvoiceWasEmailed;
class SendEmail extends AbstractService class SendEmail extends AbstractService
{ {
@ -41,6 +42,8 @@ class SendEmail extends AbstractService
if ($this->invoice->invitations->count() >= 1) { if ($this->invoice->invitations->count() >= 1) {
event(new InvoiceWasEmailed($this->invoice->invitations->first(), $this->invoice->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), $this->reminder_template ?? 'invoice')); event(new InvoiceWasEmailed($this->invoice->invitations->first(), $this->invoice->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null), $this->reminder_template ?? 'invoice'));
$this->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
} }

View File

@ -11,13 +11,14 @@
namespace App\Services\Invoice; namespace App\Services\Invoice;
use App\Events\Invoice\InvoiceWasEmailed;
use App\Jobs\Entity\EmailEntity;
use App\Models\Invoice;
use App\Services\AbstractService;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Traits\GeneratesCounter; use App\Models\Invoice;
use App\Models\Webhook;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Jobs\Entity\EmailEntity;
use App\Services\AbstractService;
use App\Utils\Traits\GeneratesCounter;
use App\Events\Invoice\InvoiceWasEmailed;
class TriggeredActions extends AbstractService class TriggeredActions extends AbstractService
{ {
@ -45,12 +46,12 @@ class TriggeredActions extends AbstractService
if ($this->request->has('mark_sent') && $this->request->input('mark_sent') == 'true' && $this->invoice->status_id == Invoice::STATUS_DRAFT) { if ($this->request->has('mark_sent') && $this->request->input('mark_sent') == 'true' && $this->invoice->status_id == Invoice::STATUS_DRAFT) {
$this->invoice = $this->invoice->service()->markSent()->save(); //update notification NOT sent $this->invoice = $this->invoice->service()->markSent()->save(); //update notification NOT sent
$this->updated = false; $this->updated = true;
} }
if ($this->request->has('amount_paid') && is_numeric($this->request->input('amount_paid'))) { if ($this->request->has('amount_paid') && is_numeric($this->request->input('amount_paid'))) {
$this->invoice = $this->invoice->service()->applyPaymentAmount($this->request->input('amount_paid'), $this->request->input('reference'))->save(); $this->invoice = $this->invoice->service()->applyPaymentAmount($this->request->input('amount_paid'), $this->request->input('reference'))->save();
$this->updated = false; // $this->updated = false;
} }
if ($this->request->has('send_email') && $this->request->input('send_email') == 'true') { if ($this->request->has('send_email') && $this->request->input('send_email') == 'true') {
@ -81,7 +82,9 @@ class TriggeredActions extends AbstractService
} }
if ($this->updated) { if ($this->updated) {
event('eloquent.updated: App\Models\Invoice', $this->invoice); // event('eloquent.updated: App\Models\Invoice', $this->invoice);
$this->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
@ -98,6 +101,7 @@ class TriggeredActions extends AbstractService
if ($this->invoice->invitations->count() > 0) { if ($this->invoice->invitations->count() > 0) {
event(new InvoiceWasEmailed($this->invoice->invitations->first(), $this->invoice->company, Ninja::eventVars(), 'invoice')); event(new InvoiceWasEmailed($this->invoice->invitations->first(), $this->invoice->company, Ninja::eventVars(), 'invoice'));
$this->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client");
} }
} }
} }

View File

@ -11,8 +11,9 @@
namespace App\Services\Quote; namespace App\Services\Quote;
use App\Jobs\Entity\EmailEntity; use App\Models\Webhook;
use App\Models\ClientContact; use App\Models\ClientContact;
use App\Jobs\Entity\EmailEntity;
class SendEmail class SendEmail
{ {
@ -50,7 +51,7 @@ class SendEmail
} }
}); });
$this->quote->sendEvent(Webhook::EVENT_SENT_QUOTE, "client");
} }
} }

View File

@ -11,13 +11,14 @@
namespace App\Services\Quote; namespace App\Services\Quote;
use App\Events\Quote\QuoteWasEmailed;
use App\Jobs\Entity\EmailEntity;
use App\Models\Quote;
use App\Services\AbstractService;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Traits\GeneratesCounter; use App\Models\Quote;
use App\Models\Webhook;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Jobs\Entity\EmailEntity;
use App\Services\AbstractService;
use App\Events\Quote\QuoteWasEmailed;
use App\Utils\Traits\GeneratesCounter;
class TriggeredActions extends AbstractService class TriggeredActions extends AbstractService
{ {
@ -86,6 +87,8 @@ class TriggeredActions extends AbstractService
if ($this->quote->invitations->count() > 0) { if ($this->quote->invitations->count() > 0) {
event(new QuoteWasEmailed($this->quote->invitations->first(), $this->quote->company, Ninja::eventVars(), 'quote')); event(new QuoteWasEmailed($this->quote->invitations->first(), $this->quote->company, Ninja::eventVars(), 'quote'));
$this->quote->sendEvent(Webhook::EVENT_SENT_QUOTE, "client");
} }
} }
} }