diff --git a/app/Console/Commands/SendTestEmails.php b/app/Console/Commands/SendTestEmails.php index ec1e02fe0e84..b9c62c1cdea1 100644 --- a/app/Console/Commands/SendTestEmails.php +++ b/app/Console/Commands/SendTestEmails.php @@ -94,7 +94,7 @@ class SendTestEmails extends Command 'client_id' => $client->id, 'company_id' => $company->id, 'is_primary' => 1, - 'send_invoice' => true, + 'send' => true, 'email' => $faker->safeEmail, ]); @@ -102,7 +102,7 @@ class SendTestEmails extends Command 'user_id' => $user->id, 'client_id' => $client->id, 'company_id' => $company->id, - 'send_invoice' => true, + 'send' => true, 'email' => $faker->safeEmail, ]); } diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 649c0af73e91..60ab15283620 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -17,6 +17,7 @@ use App\Factory\CloneInvoiceFactory; use App\Factory\CloneInvoiceToQuoteFactory; use App\Factory\InvoiceFactory; use App\Filters\InvoiceFilters; +use App\Helpers\Email\InvoiceEmail; use App\Http\Requests\Invoice\ActionInvoiceRequest; use App\Http\Requests\Invoice\CreateInvoiceRequest; use App\Http\Requests\Invoice\DestroyInvoiceRequest; @@ -663,7 +664,12 @@ class InvoiceController extends BaseController { } break; case 'email': - EmailInvoice::dispatch($invoice, $invoice->company); + $invoice->invitations->each(function ($invitation) use($invoice){ + + EmailInvoice::dispatch((new InvoiceEmail)->build($invoice, null, null), $invitation, $invoice->company); + + }); + if (!$bulk) { return response()->json(['message' => 'email sent'], 200); } diff --git a/app/Jobs/Credit/EmailCredit.php b/app/Jobs/Credit/EmailCredit.php index 569d04a512f6..de2025463cd5 100644 --- a/app/Jobs/Credit/EmailCredit.php +++ b/app/Jobs/Credit/EmailCredit.php @@ -64,7 +64,7 @@ class EmailCredit implements ShouldQueue $template_style = $this->credit->client->getSetting('email_style'); $this->credit->invitations->each(function ($invitation) use ($template_style) { - if ($invitation->contact->send_invoice && $invitation->contact->email) { + if ($invitation->contact->send && $invitation->contact->email) { $message_array = $this->credit->getEmailData('', $invitation->contact); $message_array['title'] = &$message_array['subject']; $message_array['footer'] = "Sent to ".$invitation->contact->present()->name(); diff --git a/app/Jobs/Invoice/EmailInvoice.php b/app/Jobs/Invoice/EmailInvoice.php index f5708734fcdf..4fa00f169ce7 100644 --- a/app/Jobs/Invoice/EmailInvoice.php +++ b/app/Jobs/Invoice/EmailInvoice.php @@ -6,6 +6,7 @@ use App\Events\Invoice\InvoiceWasEmailed; use App\Events\Invoice\InvoiceWasEmailedAndFailed; use App\Helpers\Email\InvoiceEmail; use App\Jobs\Utils\SystemLogger; +use App\Libraries\MultiDB; use App\Mail\TemplateEmail; use App\Models\Company; use App\Models\Invoice; @@ -27,14 +28,18 @@ class EmailInvoice implements ShouldQueue public $email_builder; + public $company; /** + * * EmailQuote constructor. * @param BuildEmail $email_builder * @param QuoteInvitation $quote_invitation */ - public function __construct(InvoiceEmail $email_builder, InvoiceInvitation $invoice_invitation) + public function __construct(InvoiceEmail $email_builder, InvoiceInvitation $invoice_invitation, Company $company) { + $this->company = $company; + $this->invoice_invitation = $invoice_invitation; $this->email_builder = $email_builder; @@ -49,7 +54,8 @@ class EmailInvoice implements ShouldQueue public function handle() { - + MultiDB::setDb($this->company->db); + Mail::to($this->invoice_invitation->contact->email, $this->invoice_invitation->contact->present()->name()) ->send(new TemplateEmail($this->email_builder, $this->invoice_invitation->contact->user, diff --git a/app/Jobs/Quote/CreateQuoteInvitations.php b/app/Jobs/Quote/CreateQuoteInvitations.php index d3f8172314ee..f460945176ea 100644 --- a/app/Jobs/Quote/CreateQuoteInvitations.php +++ b/app/Jobs/Quote/CreateQuoteInvitations.php @@ -55,12 +55,12 @@ class CreateQuoteInvitations implements ShouldQueue ->whereQuoteId($this->quote->id) ->first(); - if (!$invitation && $contact->send_invoice) { + if (!$invitation && $contact->send) { $ii = QuoteInvitationFactory::create($this->quote->company_id, $this->quote->user_id); $ii->quote_id = $this->quote->id; $ii->client_contact_id = $contact->id; $ii->save(); - } elseif ($invitation && !$contact->send_invoice) { + } elseif ($invitation && !$contact->send) { $invitation->delete(); } }); diff --git a/app/Listeners/Invoice/CreateInvoiceInvitation.php b/app/Listeners/Invoice/CreateInvoiceInvitation.php index 4aa1667bd685..a489a6679e3f 100644 --- a/app/Listeners/Invoice/CreateInvoiceInvitation.php +++ b/app/Listeners/Invoice/CreateInvoiceInvitation.php @@ -42,12 +42,12 @@ class CreateInvoiceInvitation implements ShouldQueue ->whereInvoiceId($invoice->id) ->first(); - if (!$invitation && $contact->send_invoice) { + if (!$invitation && $contact->send) { $ii = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id); $ii->invoice_id = $invoice->id; $ii->client_contact_id = $contact->id; $ii->save(); - } elseif ($invitation && !$contact->send_invoice) { + } elseif ($invitation && !$contact->send) { $invitation->delete(); } }); diff --git a/app/Repositories/InvoiceRepository.php b/app/Repositories/InvoiceRepository.php index d14374fc50e8..a67c49e7bf2e 100644 --- a/app/Repositories/InvoiceRepository.php +++ b/app/Repositories/InvoiceRepository.php @@ -56,9 +56,9 @@ class InvoiceRepository extends BaseRepository { if (isset($data['client_contacts'])) { foreach ($data['client_contacts'] as $contact) { - if ($contact['send_invoice'] == 1) { + if ($contact['send'] == 1) { $client_contact = ClientContact::find($this->decodePrimaryKey($contact['id'])); - $client_contact->send_invoice = true; + $client_contact->send = true; $client_contact->save(); } } diff --git a/app/Repositories/QuoteRepository.php b/app/Repositories/QuoteRepository.php index cf281b036fe2..c7bcffea6a07 100644 --- a/app/Repositories/QuoteRepository.php +++ b/app/Repositories/QuoteRepository.php @@ -47,9 +47,9 @@ class QuoteRepository extends BaseRepository if (isset($data['client_contacts'])) { foreach ($data['client_contacts'] as $contact) { - if ($contact['send_invoice'] == 1) { + if ($contact['send'] == 1) { $client_contact = ClientContact::find($this->decodePrimaryKey($contact['id'])); - $client_contact->send_invoice = true; + $client_contact->send = true; $client_contact->save(); } } diff --git a/app/Services/Invoice/CreateInvitations.php b/app/Services/Invoice/CreateInvitations.php index 6a9c164b7fe5..42d2dc3bc832 100644 --- a/app/Services/Invoice/CreateInvitations.php +++ b/app/Services/Invoice/CreateInvitations.php @@ -35,12 +35,12 @@ class CreateInvitations ->whereInvoiceId($invoice->id) ->first(); - if (!$invitation && $contact->send_invoice) { + if (!$invitation && $contact->send) { $ii = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id); $ii->invoice_id = $invoice->id; $ii->client_contact_id = $contact->id; $ii->save(); - } elseif ($invitation && !$contact->send_invoice) { + } elseif ($invitation && !$contact->send) { $invitation->delete(); } }); diff --git a/app/Services/Invoice/SendEmail.php b/app/Services/Invoice/SendEmail.php index 2d49baa52d98..91ebdf81a067 100644 --- a/app/Services/Invoice/SendEmail.php +++ b/app/Services/Invoice/SendEmail.php @@ -41,8 +41,8 @@ class SendEmail $email_builder = (new InvoiceEmail())->build($this->invoice, $reminder_template, $contact); $this->invoice->invitations->each(function ($invitation) use ($email_builder) { - if ($invitation->contact->send_invoice && $invitation->contact->email) { - EmailInvoice::dispatch($email_builder, $invitation); + if ($invitation->contact->send && $invitation->contact->email) { + EmailInvoice::dispatch($email_builder, $invitation, $invitation->company); } }); } diff --git a/app/Services/Payment/SendEmail.php b/app/Services/Payment/SendEmail.php index b3114507563e..20a7152157db 100644 --- a/app/Services/Payment/SendEmail.php +++ b/app/Services/Payment/SendEmail.php @@ -24,7 +24,7 @@ class SendEmail $email_builder = (new PaymentEmail())->build($this->payment, $contact); $this->payment->client->contacts->each(function ($contact) use ($email_builder) { - if ($contact->send_invoice && $contact->email) { + if ($contact->send && $contact->email) { EmailPayment::dispatchNow($this->payment, $email_builder, $contact); } }); diff --git a/app/Services/Quote/CreateInvitations.php b/app/Services/Quote/CreateInvitations.php index 3e0b0a85d428..1fb1f56c52d6 100644 --- a/app/Services/Quote/CreateInvitations.php +++ b/app/Services/Quote/CreateInvitations.php @@ -22,12 +22,12 @@ class CreateInvitations ->whereQuoteId($quote->id) ->first(); - if (!$invitation && $contact->send_invoice) { + if (!$invitation && $contact->send) { $ii = QuoteInvitationFactory::create($quote->company_id, $quote->user_id); $ii->quote_id = $quote->id; $ii->client_contact_id = $contact->id; $ii->save(); - } elseif ($invitation && !$contact->send_invoice) { + } elseif ($invitation && !$contact->send) { $invitation->delete(); } }); diff --git a/app/Services/Quote/SendEmail.php b/app/Services/Quote/SendEmail.php index f721beb5e7fc..765d868cb29d 100644 --- a/app/Services/Quote/SendEmail.php +++ b/app/Services/Quote/SendEmail.php @@ -30,7 +30,7 @@ class SendEmail $email_builder = (new QuoteEmail())->build($this->quote, $reminder_template, $contact); $this->quote->invitations->each(function ($invitation) use ($email_builder) { - if ($invitation->contact->send_invoice && $invitation->contact->email) { + if ($invitation->contact->send && $invitation->contact->email) { EmailQuote::dispatchNow($email_builder, $invitation); } }); diff --git a/app/Transformers/ClientContactTransformer.php b/app/Transformers/ClientContactTransformer.php index 39d997f30e51..cd7fbd7ddb46 100644 --- a/app/Transformers/ClientContactTransformer.php +++ b/app/Transformers/ClientContactTransformer.php @@ -44,7 +44,7 @@ class ClientContactTransformer extends EntityTransformer 'custom_value3' => $contact->custom_value3 ?: '', 'custom_value4' => $contact->custom_value4 ?: '', 'contact_key' => $contact->contact_key ?: '', - 'send_invoice' => (bool) $contact->send_invoice, + 'send' => (bool) $contact->send, ]; } } diff --git a/database/migrations/2014_10_13_000000_create_users_table.php b/database/migrations/2014_10_13_000000_create_users_table.php index 5eb1ba0cd3a2..b410ed165075 100644 --- a/database/migrations/2014_10_13_000000_create_users_table.php +++ b/database/migrations/2014_10_13_000000_create_users_table.php @@ -378,7 +378,7 @@ class CreateUsersTable extends Migration $table->string('password'); $table->string('token')->nullable(); $table->boolean('is_locked')->default(false); - $table->boolean('send_invoice')->default(true); + $table->boolean('send')->default(true); $table->string('contact_key')->nullable(); $table->rememberToken(); $table->timestamps(6); diff --git a/tests/Feature/InvoiceEmailTest.php b/tests/Feature/InvoiceEmailTest.php index 5fb8813e13d8..64e26a1c17c4 100644 --- a/tests/Feature/InvoiceEmailTest.php +++ b/tests/Feature/InvoiceEmailTest.php @@ -58,9 +58,9 @@ class InvoiceEmailTest extends TestCase $invitations->each(function ($invitation) use ($email_builder) { - if ($invitation->contact->send_invoice && $invitation->contact->email) { + if ($invitation->contact->send && $invitation->contact->email) { - EmailInvoice::dispatch($email_builder, $invitation); + EmailInvoice::dispatch($email_builder, $invitation, $invitation->company); $this->expectsJobs(EmailInvoice::class); diff --git a/tests/MockAccountData.php b/tests/MockAccountData.php index 4130715ad070..66044aaccfda 100644 --- a/tests/MockAccountData.php +++ b/tests/MockAccountData.php @@ -139,14 +139,14 @@ trait MockAccountData 'client_id' => $this->client->id, 'company_id' => $this->company->id, 'is_primary' => 1, - 'send_invoice' => true, + 'send' => true, ]); factory(\App\Models\ClientContact::class,1)->create([ 'user_id' => $this->user->id, 'client_id' => $this->client->id, 'company_id' => $this->company->id, - 'send_invoice' => true + 'send' => true ]); @@ -200,13 +200,13 @@ trait MockAccountData ->whereInvoiceId($this->invoice->id) ->first(); - if(!$invitation && $contact->send_invoice) { + if(!$invitation && $contact->send) { $ii = InvoiceInvitationFactory::create($this->invoice->company_id, $this->invoice->user_id); $ii->invoice_id = $this->invoice->id; $ii->client_contact_id = $contact->id; $ii->save(); } - else if($invitation && !$contact->send_invoice) { + else if($invitation && !$contact->send) { $invitation->delete(); }