diff --git a/app/Jobs/Credit/EmailCredit.php b/app/Jobs/Credit/EmailCredit.php index 6a949aa13f2f..fafb4982c4da 100644 --- a/app/Jobs/Credit/EmailCredit.php +++ b/app/Jobs/Credit/EmailCredit.php @@ -36,7 +36,7 @@ class EmailCredit extends BaseMailerJob implements ShouldQueue public $message_array = []; - + public $settings; /** * Create a new job instance. * @@ -45,6 +45,8 @@ class EmailCredit extends BaseMailerJob implements ShouldQueue public function __construct(Credit $credit) { $this->credit = $credit; + + $this->settings = $credit->client->getMergedSettings(); } /** @@ -59,7 +61,7 @@ class EmailCredit extends BaseMailerJob implements ShouldQueue $template_style = $this->credit->client->getSetting('email_style'); - $this->setMailDriver($this->credit->client->getSetting('email_sending_method')); + $this->setMailDriver(); $this->credit->invitations->each(function ($invitation) use ($template_style) { diff --git a/app/Jobs/Invoice/EmailInvoice.php b/app/Jobs/Invoice/EmailInvoice.php index 63fba8364486..00352e2e4749 100644 --- a/app/Jobs/Invoice/EmailInvoice.php +++ b/app/Jobs/Invoice/EmailInvoice.php @@ -41,6 +41,8 @@ class EmailInvoice extends BaseMailerJob implements ShouldQueue public $email_builder; public $company; + + public $settings; /** * * EmailInvoice constructor. @@ -55,6 +57,9 @@ class EmailInvoice extends BaseMailerJob implements ShouldQueue $this->invoice_invitation = $invoice_invitation; $this->email_builder = $email_builder; + + $this->settings = $invoice_invitation->contact->client->getMergedSettings(); + } /** @@ -68,7 +73,7 @@ class EmailInvoice extends BaseMailerJob implements ShouldQueue { MultiDB::setDB($this->company->db); - $this->setMailDriver($this->invoice_invitation->invoice->client->getSetting('email_sending_method')); + $this->setMailDriver(); Mail::to($this->invoice_invitation->contact->email, $this->invoice_invitation->contact->present()->name()) ->send( diff --git a/app/Jobs/Invoice/ZipInvoices.php b/app/Jobs/Invoice/ZipInvoices.php index c427ea0adf59..787975508fce 100644 --- a/app/Jobs/Invoice/ZipInvoices.php +++ b/app/Jobs/Invoice/ZipInvoices.php @@ -11,6 +11,7 @@ namespace App\Jobs\Invoice; +use App\Jobs\Mail\BaseMailerJob; use App\Jobs\Util\UnlinkFile; use App\Libraries\MultiDB; use App\Mail\DownloadInvoices; @@ -27,7 +28,7 @@ use Illuminate\Support\Facades\Storage; use ZipStream\Option\Archive; use ZipStream\ZipStream; -class ZipInvoices implements ShouldQueue +class ZipInvoices extends BaseMailerJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; @@ -37,6 +38,7 @@ class ZipInvoices implements ShouldQueue private $email; + public $settings; /** * @deprecated confirm to be deleted * Create a new job instance. @@ -50,6 +52,8 @@ class ZipInvoices implements ShouldQueue $this->company = $company; $this->email = $email; + + $this->settings = $company->settings; } /** @@ -82,6 +86,8 @@ class ZipInvoices implements ShouldQueue fclose($tempStream); + $this->setMailDriver(); + Mail::to($this->email) ->send(new DownloadInvoices(Storage::disk(config('filesystems.default'))->url($path . $file_name), $this->company)); diff --git a/app/Jobs/Mail/BaseMailerJob.php b/app/Jobs/Mail/BaseMailerJob.php index 0867b9771f9a..5f0188d1fe38 100644 --- a/app/Jobs/Mail/BaseMailerJob.php +++ b/app/Jobs/Mail/BaseMailerJob.php @@ -29,9 +29,9 @@ class BaseMailerJob implements ShouldQueue use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; - public function setMailDriver(string $driver) + public function setMailDriver() { - switch ($driver) { + switch ($this->settings->email_sending_method) { case 'default': break; case 'gmail': @@ -45,7 +45,7 @@ class BaseMailerJob implements ShouldQueue public function setGmailMailer() { - $sending_user = $this->entity->client->getSetting('gmail_sending_user_id'); + $sending_user = $this->settings->gmail_sending_user_id; $user = User::find($sending_user); diff --git a/app/Jobs/Mail/EntityPaidMailer.php b/app/Jobs/Mail/EntityPaidMailer.php index 5b41d5862c16..6e840ecea700 100644 --- a/app/Jobs/Mail/EntityPaidMailer.php +++ b/app/Jobs/Mail/EntityPaidMailer.php @@ -43,6 +43,8 @@ class EntityPaidMailer extends BaseMailerJob implements ShouldQueue public $entity_type; public $entity; + + public $settings; /** * Create a new job instance. * @@ -55,6 +57,9 @@ class EntityPaidMailer extends BaseMailerJob implements ShouldQueue $this->user = $user; $this->payment = $payment; + + $this->settings = $payment->client->getMergedSettings(); + } /** @@ -72,7 +77,7 @@ class EntityPaidMailer extends BaseMailerJob implements ShouldQueue return true; //if we need to set an email driver do it now - $this->setMailDriver($this->payment->client->getSetting('email_sending_method')); + $this->setMailDriver(); $mail_obj = (new EntityPaidObject($this->payment))->build(); $mail_obj->from = [$this->payment->user->email, $this->payment->user->present()->name()]; diff --git a/app/Jobs/Mail/EntitySentMailer.php b/app/Jobs/Mail/EntitySentMailer.php index d666b20c2ee7..5dd4118aee05 100644 --- a/app/Jobs/Mail/EntitySentMailer.php +++ b/app/Jobs/Mail/EntitySentMailer.php @@ -42,6 +42,9 @@ class EntitySentMailer extends BaseMailerJob implements ShouldQueue public $entity_type; public $entity; + + public $settings; + /** * Create a new job instance. * @@ -58,6 +61,8 @@ class EntitySentMailer extends BaseMailerJob implements ShouldQueue $this->entity = $invitation->{$entity_type}; $this->entity_type = $entity_type; + + $this->settings = $invitation->contact->client->getMergedSettings(); } /** @@ -71,7 +76,7 @@ class EntitySentMailer extends BaseMailerJob implements ShouldQueue MultiDB::setDb($this->company->db); //if we need to set an email driver do it now - $this->setMailDriver($this->entity->client->getSetting('email_sending_method')); + $this->setMailDriver(); $mail_obj = (new EntitySentObject($this->invitation, $this->entity_type))->build(); $mail_obj->from = [$this->entity->user->email, $this->entity->user->present()->name()]; diff --git a/app/Jobs/Mail/EntityViewedMailer.php b/app/Jobs/Mail/EntityViewedMailer.php index 5186b03d86e5..32043e6de0f3 100644 --- a/app/Jobs/Mail/EntityViewedMailer.php +++ b/app/Jobs/Mail/EntityViewedMailer.php @@ -42,6 +42,8 @@ class EntityViewedMailer extends BaseMailerJob implements ShouldQueue public $entity_type; public $entity; + + public $settings; /** * Create a new job instance. * @@ -58,6 +60,9 @@ class EntityViewedMailer extends BaseMailerJob implements ShouldQueue $this->entity = $invitation->{$entity_type}; $this->entity_type = $entity_type; + + $this->settings = $invitation->contact->client->getMergedSettings(); + } /** @@ -72,7 +77,7 @@ class EntityViewedMailer extends BaseMailerJob implements ShouldQueue MultiDB::setDb($this->company->db); //if we need to set an email driver do it now - $this->setMailDriver($this->entity->client->getSetting('email_sending_method')); + $this->setMailDriver(); $mail_obj = (new EntityViewedObject($this->invitation, $this->entity_type))->build(); $mail_obj->from = [$this->entity->user->email, $this->entity->user->present()->name()]; diff --git a/app/Jobs/Mail/MailRouter.php b/app/Jobs/Mail/MailRouter.php index dc810913e977..e484621a86c5 100644 --- a/app/Jobs/Mail/MailRouter.php +++ b/app/Jobs/Mail/MailRouter.php @@ -17,6 +17,7 @@ use App\Libraries\Google\Google; use App\Libraries\MultiDB; use App\Mail\Admin\EntityNotificationMailer; use App\Mail\Admin\EntitySentObject; +use App\Models\ClientContact; use App\Models\Company; use App\Models\SystemLog; use App\Models\User; @@ -45,6 +46,8 @@ class MailRouter extends BaseMailerJob implements ShouldQueue public $sending_method; + public $settings; + public function __construct(Mailable $mailable, Company $company, $to_user, string $sending_method) { $this->mailable = $mailable; @@ -54,6 +57,11 @@ class MailRouter extends BaseMailerJob implements ShouldQueue $this->to_user = $to_user; $this->sending_method = $sending_method; + + if($to_user instanceof ClientContact) + $this->settings = $to_user->client->getMergedSettings(); + else + $this->settings = $this->company->settings; } public function handle() @@ -61,7 +69,7 @@ class MailRouter extends BaseMailerJob implements ShouldQueue MultiDB::setDb($this->company->db); //if we need to set an email driver do it now - $this->setMailDriver($sending_method); + $this->setMailDriver(); //send email Mail::to($this->to_user->email) diff --git a/app/Jobs/Mail/PaymentFailureMailer.php b/app/Jobs/Mail/PaymentFailureMailer.php index 291708a9a44a..d54257b3c64f 100644 --- a/app/Jobs/Mail/PaymentFailureMailer.php +++ b/app/Jobs/Mail/PaymentFailureMailer.php @@ -44,6 +44,8 @@ class PaymentFailureMailer extends BaseMailerJob implements ShouldQueue public $amount; + public $settings; + /** * Create a new job instance. * @@ -58,6 +60,8 @@ class PaymentFailureMailer extends BaseMailerJob implements ShouldQueue $this->client = $client; $this->amount = $amount; + + $this->settings = $client->getMergedSettings(); } /** @@ -72,7 +76,7 @@ class PaymentFailureMailer extends BaseMailerJob implements ShouldQueue MultiDB::setDb($this->company->db); //if we need to set an email driver do it now - $this->setMailDriver($this->client->getSetting('email_sending_method')); + $this->setMailDriver(); //iterate through company_users $this->company->company_users->each(function ($company_user){ diff --git a/app/Jobs/User/UserEmailChanged.php b/app/Jobs/User/UserEmailChanged.php index 5af84671c291..39d03b7d6995 100644 --- a/app/Jobs/User/UserEmailChanged.php +++ b/app/Jobs/User/UserEmailChanged.php @@ -34,6 +34,7 @@ class UserEmailChanged extends BaseMailerJob implements ShouldQueue protected $company; + public $settings; /** * Create a new job instance. * @@ -45,6 +46,8 @@ class UserEmailChanged extends BaseMailerJob implements ShouldQueue $this->new_email = $new_email; $this->old_email = $old_email; $this->company = $company; + $this->settings = $this->company->settings; + } public function handle() @@ -53,7 +56,7 @@ class UserEmailChanged extends BaseMailerJob implements ShouldQueue MultiDB::setDb($this->company->db); //If we need to set an email driver do it now - $this->setMailDriver($this->company->settings->email_sending_method); + $this->setMailDriver(); /*Build the object*/ $mail_obj = new \stdClass; diff --git a/tests/Integration/ContainerTest.php b/tests/Integration/ContainerTest.php new file mode 100644 index 000000000000..cedc212c96ec --- /dev/null +++ b/tests/Integration/ContainerTest.php @@ -0,0 +1,45 @@ +makeTestData(); + + app()->instance(Company::class, $this->company); + + + } + + public function testBindingWorks() + { + + + $resolved_company = resolve(Company::class); + + $this->assertNotNull($resolved_company); + + $this->assertEquals($this->account->id, $resolved_company->account_id); + + + } + +}