From 5f5a33bac9a0a2df74e27a02518fddcdf91cdcee Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 22 Jul 2021 18:33:25 +1000 Subject: [PATCH] Fixes for Notifications --- app/Listeners/Credit/CreditCreatedNotification.php | 6 +++--- app/Listeners/Credit/CreditEmailedNotification.php | 7 ++++--- .../Invoice/InvoiceCreatedNotification.php | 7 +++---- .../Invoice/InvoiceEmailedNotification.php | 2 +- .../Invoice/InvoiceFailedEmailNotification.php | 2 +- app/Listeners/Quote/QuoteCreatedNotification.php | 2 +- app/Listeners/Quote/QuoteEmailedNotification.php | 6 +++--- app/Utils/Traits/CompanySettingsSaver.php | 14 +++++++++----- tests/Feature/CompanyTest.php | 1 + 9 files changed, 26 insertions(+), 21 deletions(-) diff --git a/app/Listeners/Credit/CreditCreatedNotification.php b/app/Listeners/Credit/CreditCreatedNotification.php index 6c60f2f4e104..2181d58d8b70 100644 --- a/app/Listeners/Credit/CreditCreatedNotification.php +++ b/app/Listeners/Credit/CreditCreatedNotification.php @@ -38,7 +38,7 @@ class CreditCreatedNotification implements ShouldQueue { MultiDB::setDb($event->company->db); - $first_notification_sent = true; + // $first_notification_sent = true; $credit = $event->credit; @@ -60,7 +60,7 @@ class CreditCreatedNotification implements ShouldQueue $methods = $this->findUserNotificationTypes($credit->invitations()->first(), $company_user, 'credit', ['all_notifications', 'credit_created', 'credit_created_all']); /* If one of the methods is email then we fire the EntitySentMailer */ - if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) { + if (($key = array_search('mail', $methods)) !== false) { unset($methods[$key]); @@ -69,7 +69,7 @@ class CreditCreatedNotification implements ShouldQueue NinjaMailerJob::dispatch($nmo); /* This prevents more than one notification being sent */ - $first_notification_sent = false; + // $first_notification_sent = false; } /* Override the methods in the Notification Class */ diff --git a/app/Listeners/Credit/CreditEmailedNotification.php b/app/Listeners/Credit/CreditEmailedNotification.php index a3afd0cf2f42..c3a1ef17bf93 100644 --- a/app/Listeners/Credit/CreditEmailedNotification.php +++ b/app/Listeners/Credit/CreditEmailedNotification.php @@ -38,7 +38,7 @@ class CreditEmailedNotification implements ShouldQueue { MultiDB::setDb($event->company->db); - $first_notification_sent = true; + // $first_notification_sent = true; $credit = $event->invitation->credit; $credit->last_sent_date = now(); @@ -56,14 +56,15 @@ class CreditEmailedNotification implements ShouldQueue $methods = $this->findUserNotificationTypes($event->invitation, $company_user, 'credit', ['all_notifications', 'credit_sent', 'credit_sent_all']); - if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) { + if (($key = array_search('mail', $methods)) !== false) { + // if (($key = array_search('mail', $methods))) { unset($methods[$key]); $nmo->to_user = $user; NinjaMailerJob::dispatch($nmo); - $first_notification_sent = false; + // $first_notification_sent = false; } // $notification->method = $methods; diff --git a/app/Listeners/Invoice/InvoiceCreatedNotification.php b/app/Listeners/Invoice/InvoiceCreatedNotification.php index 22513a0a6c85..49f4af309518 100644 --- a/app/Listeners/Invoice/InvoiceCreatedNotification.php +++ b/app/Listeners/Invoice/InvoiceCreatedNotification.php @@ -52,17 +52,15 @@ class InvoiceCreatedNotification implements ShouldQueue /* The User */ $user = $company_user->user; - /* This is only here to handle the alternate message channels - ie Slack */ // $notification = new EntitySentNotification($event->invitation, 'invoice'); /* Returns an array of notification methods */ $methods = $this->findUserNotificationTypes($invoice->invitations()->first(), $company_user, 'invoice', ['all_notifications', 'invoice_created', 'invoice_created_all']); - /* If one of the methods is email then we fire the EntitySentMailer */ - if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) { + // if (($key = array_search('mail', $methods))) { + if (($key = array_search('mail', $methods)) !== false) { unset($methods[$key]); - $nmo->to_user = $user; @@ -70,6 +68,7 @@ class InvoiceCreatedNotification implements ShouldQueue /* This prevents more than one notification being sent */ $first_notification_sent = false; + } /* Override the methods in the Notification Class */ diff --git a/app/Listeners/Invoice/InvoiceEmailedNotification.php b/app/Listeners/Invoice/InvoiceEmailedNotification.php index 4123e9ecd61d..09d56d53491a 100644 --- a/app/Listeners/Invoice/InvoiceEmailedNotification.php +++ b/app/Listeners/Invoice/InvoiceEmailedNotification.php @@ -63,7 +63,7 @@ class InvoiceEmailedNotification implements ShouldQueue $methods = $this->findUserNotificationTypes($event->invitation, $company_user, 'invoice', ['all_notifications', 'invoice_sent', 'invoice_sent_all']); /* If one of the methods is email then we fire the EntitySentMailer */ - if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) { + if (($key = array_search('mail', $methods))) { unset($methods[$key]); diff --git a/app/Listeners/Invoice/InvoiceFailedEmailNotification.php b/app/Listeners/Invoice/InvoiceFailedEmailNotification.php index dd3cc6f5103b..3f6551de4159 100644 --- a/app/Listeners/Invoice/InvoiceFailedEmailNotification.php +++ b/app/Listeners/Invoice/InvoiceFailedEmailNotification.php @@ -58,7 +58,7 @@ class InvoiceFailedEmailNotification $methods = $this->findUserNotificationTypes($event->invitation, $company_user, 'invoice', ['all_notifications', 'invoice_sent', 'invoice_sent_all']); - if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) { + if (($key = array_search('mail', $methods))) { unset($methods[$key]); $nmo->to_user = $user; diff --git a/app/Listeners/Quote/QuoteCreatedNotification.php b/app/Listeners/Quote/QuoteCreatedNotification.php index 209e9dbc74e2..c258b0d33c51 100644 --- a/app/Listeners/Quote/QuoteCreatedNotification.php +++ b/app/Listeners/Quote/QuoteCreatedNotification.php @@ -60,7 +60,7 @@ class QuoteCreatedNotification implements ShouldQueue $methods = $this->findUserNotificationTypes($quote->invitations()->first(), $company_user, 'quote', ['all_notifications', 'quote_created', 'quote_created_all']); /* If one of the methods is email then we fire the EntitySentMailer */ - if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) { + if (($key = array_search('mail', $methods))) { unset($methods[$key]); diff --git a/app/Listeners/Quote/QuoteEmailedNotification.php b/app/Listeners/Quote/QuoteEmailedNotification.php index 2adc1e3ef20c..c601dbfa18ef 100644 --- a/app/Listeners/Quote/QuoteEmailedNotification.php +++ b/app/Listeners/Quote/QuoteEmailedNotification.php @@ -38,7 +38,7 @@ class QuoteEmailedNotification implements ShouldQueue { MultiDB::setDb($event->company->db); - $first_notification_sent = true; + // $first_notification_sent = true; $quote = $event->invitation->quote; $quote->last_sent_date = now(); @@ -57,7 +57,7 @@ class QuoteEmailedNotification implements ShouldQueue $methods = $this->findUserNotificationTypes($event->invitation, $company_user, 'quote', ['all_notifications', 'quote_sent', 'quote_sent_all']); - if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) { + if (($key = array_search('mail', $methods)) !== false) { unset($methods[$key]); @@ -65,7 +65,7 @@ class QuoteEmailedNotification implements ShouldQueue NinjaMailerJob::dispatch($nmo); - $first_notification_sent = false; + // $first_notification_sent = false; } // $notification->method = $methods; diff --git a/app/Utils/Traits/CompanySettingsSaver.php b/app/Utils/Traits/CompanySettingsSaver.php index 928ab0cd01e3..7d3de2afde27 100644 --- a/app/Utils/Traits/CompanySettingsSaver.php +++ b/app/Utils/Traits/CompanySettingsSaver.php @@ -36,6 +36,7 @@ trait CompanySettingsSaver */ public function saveSettings($settings, $entity) { + /* No Settings, No Save!*/ if (! $settings) { return; @@ -58,14 +59,17 @@ trait CompanySettingsSaver } } + if(property_exists($settings, 'translations')) + { //this pass will handle any null values that are in the translations - foreach ($settings->translations as $key => $value) { - if (is_null($settings->translations[$key])) { - $settings->translations[$key] = ''; + foreach ($settings->translations as $key => $value) { + if (is_null($settings->translations[$key])) { + $settings->translations[$key] = ''; + } } - } - $company_settings->translations = $settings->translations; + $company_settings->translations = $settings->translations; + } $entity->settings = $company_settings; diff --git a/tests/Feature/CompanyTest.php b/tests/Feature/CompanyTest.php index 538ef194ffce..8ec6928f283c 100644 --- a/tests/Feature/CompanyTest.php +++ b/tests/Feature/CompanyTest.php @@ -100,6 +100,7 @@ class CompanyTest extends TestCase $settings->invoice_design_id = '2'; $settings->quote_design_id = '1'; +nlog($settings); $company->settings = $settings; $response = $this->withHeaders([