diff --git a/app/Models/Webhook.php b/app/Models/Webhook.php index ef16150a3479..43de857cd669 100644 --- a/app/Models/Webhook.php +++ b/app/Models/Webhook.php @@ -79,25 +79,25 @@ class Webhook extends BaseModel const EVENT_PROJECT_DELETE = 30; const EVENT_UPDATE_PAYMENT = 31; - + const EVENT_ARCHIVE_PAYMENT = 32; - + const EVENT_ARCHIVE_INVOICE = 33; - + const EVENT_ARCHIVE_QUOTE = 34; - + const EVENT_ARCHIVE_CREDIT = 35; - + const EVENT_ARCHIVE_TASK = 36; - + const EVENT_ARCHIVE_CLIENT = 37; - + const EVENT_ARCHIVE_PROJECT = 38; - + const EVENT_ARCHIVE_EXPENSE = 39; - - - + + + public static $valid_events = [ @@ -138,9 +138,9 @@ class Webhook extends BaseModel self::EVENT_ARCHIVE_TASK, self::EVENT_ARCHIVE_CREDIT, self::EVENT_ARCHIVE_QUOTE, - self::VENT_ARCHIVE_INVOICE, + self::EVENT_ARCHIVE_INVOICE, self::EVENT_ARCHIVE_PAYMENT - + ]; protected $fillable = [ diff --git a/app/Observers/ClientObserver.php b/app/Observers/ClientObserver.php index 273b2e6c002c..97f3bcf99c53 100644 --- a/app/Observers/ClientObserver.php +++ b/app/Observers/ClientObserver.php @@ -89,4 +89,15 @@ class ClientObserver { // } + + public function archived(Client $client) + { + $subscriptions = Webhook::where('company_id', $client->company->id) + ->where('event_id', Webhook::EVENT_ARCHIVE_CLIENT) + ->exists(); + + if ($subscriptions) { + WebhookHandler::dispatch(Webhook::EVENT_ARCHIVE_CLIENT, $client, $client->company)->delay(now()->addSeconds(2)); + } + } } diff --git a/app/Observers/CreditObserver.php b/app/Observers/CreditObserver.php index a60e5f02eb50..4a2552725b33 100644 --- a/app/Observers/CreditObserver.php +++ b/app/Observers/CreditObserver.php @@ -91,4 +91,20 @@ class CreditObserver { // } + /** + * Handle the client "archive" event. + * + * @param Credit $credit + * @return void + */ + public function archived(Credit $credit) + { + $subscriptions = Webhook::where('company_id', $credit->company->id) + ->where('event_id', Webhook::EVENT_ARCHIVE_CREDIT) + ->exists(); + + if ($subscriptions) { + WebhookHandler::dispatch(Webhook::EVENT_ARCHIVE_CREDIT, $credit, $credit->company)->delay(now()->addSeconds(2)); + } + } } diff --git a/app/Observers/ExpenseObserver.php b/app/Observers/ExpenseObserver.php index 2c71e5fc42da..2edfabd76827 100644 --- a/app/Observers/ExpenseObserver.php +++ b/app/Observers/ExpenseObserver.php @@ -89,4 +89,20 @@ class ExpenseObserver { // } + /** + * Handle the expense "archive" event. + * + * @param Expense $expense + * @return void + */ + public function archived(Expense $expense) + { + $subscriptions = Webhook::where('company_id', $expense->company->id) + ->where('event_id', Webhook::EVENT_ARCHIVE_EXPENSE) + ->exists(); + + if ($subscriptions) { + WebhookHandler::dispatch(Webhook::EVENT_ARCHIVE_EXPENSE, $expense, $expense->company)->delay(now()->addSeconds(2)); + } + } } diff --git a/app/Observers/InvoiceObserver.php b/app/Observers/InvoiceObserver.php index 249aa23866f8..1e50b9d0e26b 100644 --- a/app/Observers/InvoiceObserver.php +++ b/app/Observers/InvoiceObserver.php @@ -93,4 +93,18 @@ class InvoiceObserver { // } + + /** + * @param Invoice $invoice + * @return void + */ + public function archived(Invoice $invoice){ + $subscriptions = Webhook::where('company_id', $invoice->company_id) + ->where('event_id', Webhook::EVENT_ARCHIVE_INVOICE) + ->exists(); + + if ($subscriptions) { + WebhookHandler::dispatch(Webhook::EVENT_ARCHIVE_INVOICE, $invoice, $invoice->company, 'client')->delay(now()->addSeconds(2)); + } + } } diff --git a/app/Observers/PaymentObserver.php b/app/Observers/PaymentObserver.php index 3de2d0955953..f29cfeb24050 100644 --- a/app/Observers/PaymentObserver.php +++ b/app/Observers/PaymentObserver.php @@ -89,4 +89,14 @@ class PaymentObserver { // } + public function archived(Payment $payment) + { + $subscriptions = Webhook::where('company_id', $payment->company->id) + ->where('event_id', Webhook::EVENT_ARCHIVE_PAYMENT) + ->exists(); + + if ($subscriptions) { + WebhookHandler::dispatch(Webhook::EVENT_ARCHIVE_PAYMENT, $payment, $payment->company, 'invoices,client')->delay(now()->addSeconds(20)); + } + } } diff --git a/app/Observers/ProjectObserver.php b/app/Observers/ProjectObserver.php index 74972a56ef73..b2acc2661537 100644 --- a/app/Observers/ProjectObserver.php +++ b/app/Observers/ProjectObserver.php @@ -92,4 +92,21 @@ class ProjectObserver { // } + /** + * Handle the product "archived" event. + * + * @param Project $project + * @return void + */ + public function archived(Project $project) + { + $subscriptions = Webhook::where('company_id', $project->company_id) + ->where('event_id', Webhook::EVENT_ARCHIVE_PROJECT) + ->exists(); + + if ($subscriptions) { + WebhookHandler::dispatch(Webhook::EVENT_ARCHIVE_PROJECT, $project, $project->company, 'client')->delay(now()->addSeconds(2)); + + } + } } diff --git a/app/Observers/QuoteObserver.php b/app/Observers/QuoteObserver.php index 1c6adccf6225..823bf5e54063 100644 --- a/app/Observers/QuoteObserver.php +++ b/app/Observers/QuoteObserver.php @@ -93,4 +93,15 @@ class QuoteObserver { // } + public function archived(Quote $quote) + { + $subscriptions = Webhook::where('company_id', $quote->company->id) + ->where('event_id', Webhook::EVENT_ARCHIVE_QUOTE) + ->exists(); + + if ($subscriptions) { + $quote->load('client'); + WebhookHandler::dispatch(Webhook::EVENT_ARCHIVE_QUOTE, $quote, $quote->company, 'client')->delay(now()->addSeconds(2)); + } + } } diff --git a/app/Observers/TaskObserver.php b/app/Observers/TaskObserver.php index 5bfe4b43ef69..1527acf30eec 100644 --- a/app/Observers/TaskObserver.php +++ b/app/Observers/TaskObserver.php @@ -89,4 +89,14 @@ class TaskObserver { // } + public function archived(Task $task) + { + $subscriptions = Webhook::where('company_id', $task->company->id) + ->where('event_id', Webhook::EVENT_ARCHIVE_TASK) + ->exists(); + + if ($subscriptions) { + WebhookHandler::dispatch(Webhook::EVENT_ARCHIVE_TASK, $task, $task->company)->delay(now()->addSeconds(2)); + } + } }