Add documents as default includes

This commit is contained in:
David Bomba 2020-08-06 13:04:09 +10:00
parent 5f93b7ca70
commit c220108168
19 changed files with 136 additions and 67 deletions

View File

@ -13,6 +13,7 @@ namespace App\Jobs\Credit;
use App\Events\Credit\CreditWasEmailed;
use App\Events\Credit\CreditWasEmailedAndFailed;
use App\Jobs\Mail\BaseMailerJob;
use App\Jobs\Util\SystemLogger;
use App\Libraries\MultiDB;
use App\Mail\TemplateEmail;
@ -26,7 +27,8 @@ use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
class EmailCredit implements ShouldQueue
/*Multi Mailer implemented*/
class EmailCredit extends BaseMailerJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
@ -57,14 +59,16 @@ class EmailCredit implements ShouldQueue
$template_style = $this->credit->client->getSetting('email_style');
$this->setMailDriver($this->credit->client->getSetting('email_sending_method'));
$this->credit->invitations->each(function ($invitation) use ($template_style) {
if ($invitation->contact->send_email && $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();
//change the runtime config of the mail provider here:
//send message
Mail::to($invitation->contact->email, $invitation->contact->present()->name())
->send(new TemplateEmail($message_array, $template_style, $invitation->contact->user, $invitation->contact->client));
@ -77,8 +81,6 @@ class EmailCredit implements ShouldQueue
//fire any events
event(new CreditWasEmailed($this->credit, $this->company, Ninja::eventVars()));
//sleep(5);
}
});
}

View File

@ -1,10 +1,20 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Jobs\Invoice;
use App\Events\Invoice\InvoiceWasEmailed;
use App\Events\Invoice\InvoiceWasEmailedAndFailed;
use App\Helpers\Email\InvoiceEmail;
use App\Jobs\Mail\BaseMailerJob;
use App\Jobs\Utils\SystemLogger;
use App\Libraries\MultiDB;
use App\Mail\TemplateEmail;
@ -20,7 +30,9 @@ use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
use Symfony\Component\Mime\Test\Constraint\EmailTextBodyContains;
class EmailInvoice implements ShouldQueue
/*Multi Mailer implemented*/
class EmailInvoice extends BaseMailerJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
@ -56,6 +68,8 @@ class EmailInvoice implements ShouldQueue
{
MultiDB::setDB($this->company->db);
$this->setMailDriver($this->invoice_invitation->invoice->client->getSetting('email_sending_method'));
Mail::to($this->invoice_invitation->contact->email, $this->invoice_invitation->contact->present()->name())
->send(
new TemplateEmail(

View File

@ -1,4 +1,13 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Jobs\Mail;
@ -13,6 +22,8 @@ use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Config;
/*Multi Mailer implemented*/
class BaseMailerJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

View File

@ -1,4 +1,13 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Jobs\Mail;
@ -19,6 +28,8 @@ use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Mail;
/*Multi Mailer implemented*/
class EntityPaidMailer extends BaseMailerJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
@ -54,9 +65,9 @@ class EntityPaidMailer extends BaseMailerJob implements ShouldQueue
public function handle()
{
//Set DB
//
MultiDB::setDb($this->company->db);
/*If we are migrating data we don't want to fire these notification*/
if($this->company->company_users->first()->is_migrating)
return true;

View File

@ -1,4 +1,13 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Jobs\Mail;
@ -18,6 +27,8 @@ use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Mail;
/*Multi Mailer implemented*/
class EntitySentMailer extends BaseMailerJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

View File

@ -1,4 +1,13 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Jobs\Mail;
@ -18,6 +27,8 @@ use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Mail;
/*Multi Mailer implemented*/
class EntityViewedMailer extends BaseMailerJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

View File

@ -1,4 +1,13 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Jobs\Mail;
@ -21,6 +30,8 @@ use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Mail;
/*Multi Mailer implemented*/
class PaymentFailureMailer extends BaseMailerJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, UserNotifies;

View File

@ -52,9 +52,10 @@ class UserEmailChanged extends BaseMailerJob implements ShouldQueue
//Set DB
MultiDB::setDb($this->company->db);
//if we need to set an email driver do it now
//If we need to set an email driver do it now
$this->setMailDriver($this->company->settings->email_sending_method);
/*Build the object*/
$mail_obj = new \stdClass;
$mail_obj->subject = ctrans('texts.email_address_changed');
$mail_obj->markdown = 'email.admin.generic';
@ -62,16 +63,14 @@ class UserEmailChanged extends BaseMailerJob implements ShouldQueue
$mail_obj->tag = $this->company->company_key;
$mail_obj->data = $this->getData();
//send email
//Send email via a Mailable class
Mail::to($this->old_email)
->send(new UserNotificationMailer($mail_obj));
Mail::to($this->new_email)
->send(new UserNotificationMailer($mail_obj));
//catch errors
//Catch errors and report.
if (count(Mail::failures()) > 0) {
$this->logMailError(Mail::failures());
}

View File

@ -1,4 +1,14 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Mail;
use App\Models\Client;

View File

@ -1,4 +1,13 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Mail;
@ -23,7 +32,7 @@ class TestMailServer extends Mailable
}
/**
* Build the message.
* Test Server mail
*
* @return $this
*/

View File

@ -1,47 +0,0 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Mail;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class VerifyUser extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
public $user;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('x@gmail.com') //todo
->subject(ctrans('texts.confirmation_subject'))
->markdown('email.auth.verify', ['user' => $this->user])
->text('email.auth.verify_text');
}
}

View File

@ -16,9 +16,11 @@ use App\Models\Client;
use App\Models\ClientContact;
use App\Models\ClientGatewayToken;
use App\Models\CompanyLedger;
use App\Models\Document;
use App\Transformers\ActivityTransformer;
use App\Transformers\ClientGatewayTokenTransformer;
use App\Transformers\CompanyLedgerTransformer;
use App\Transformers\DocumentTransformer;
use App\Utils\Traits\MakesHash;
/**
@ -30,12 +32,14 @@ class ClientTransformer extends EntityTransformer
protected $defaultIncludes = [
'contacts',
'documents',
];
/**
* @var array
*/
protected $availableIncludes = [
'documents',
'gateway_tokens',
'activities',
'ledger',
@ -54,6 +58,13 @@ class ClientTransformer extends EntityTransformer
return $this->includeCollection($client->activities, $transformer, Activity::class);
}
public function includeDocuments(Client $client)
{
$transformer = new DocumentTransformer($this->serializer);
return $this->includeCollection($client->documents, $transformer, Document::class);
}
/**
* @param Client $client
*

View File

@ -21,6 +21,7 @@ use App\Models\CompanyToken;
use App\Models\CompanyUser;
use App\Models\Credit;
use App\Models\Design;
use App\Models\Document;
use App\Models\Expense;
use App\Models\GroupSetting;
use App\Models\Payment;
@ -36,6 +37,7 @@ use App\Transformers\CompanyLedgerTransformer;
use App\Transformers\CompanyTokenHashedTransformer;
use App\Transformers\CompanyTokenTransformer;
use App\Transformers\CreditTransformer;
use App\Transformers\DocumentTransformer;
use App\Transformers\PaymentTermTransformer;
use App\Transformers\TaskTransformer;
use App\Transformers\WebhookTransformer;
@ -52,12 +54,14 @@ class CompanyTransformer extends EntityTransformer
* @var array
*/
protected $defaultIncludes = [
'documents',
];
/**
* @var array
*/
protected $availableIncludes = [
'documents',
'users',
'designs',
'account',
@ -136,6 +140,13 @@ class CompanyTransformer extends EntityTransformer
];
}
public function includeDocuments(Company $company)
{
$transformer = new DocumentTransformer($this->serializer);
return $this->includeCollection($company->documents, $transformer, Document::class);
}
public function includeCompanyUser(Company $company)
{
$transformer = new CompanyUserTransformer($this->serializer);

View File

@ -80,10 +80,6 @@ class InvoiceTransformer extends EntityTransformer
{
$transformer = new DocumentTransformer($this->serializer);
// $invoice->documents->each(function ($document) use ($invoice) {
// $document->setRelation('invoice', $invoice);
// });
return $this->includeCollection($invoice->documents, $transformer, Document::class);
}

View File

@ -27,6 +27,7 @@ class PaymentTransformer extends EntityTransformer
protected $defaultIncludes = [
// 'invoices'
'documents',
];
protected $availableIncludes = [

View File

@ -23,6 +23,7 @@ class ProductTransformer extends EntityTransformer
use MakesHash;
protected $defaultIncludes = [
'documents',
];
/**

View File

@ -35,8 +35,12 @@ class HtmlEngine
public $entity_string;
public function __construct($invitation, $entity_string)
public $designer;
public function __construct($designer, $invitation, $entity_string)
{
$this->designer = $designer;
$this->invitation = $invitation;
$this->entity = $invitation->{$entity_string};

View File

@ -15,6 +15,9 @@ class ExampleIntegrationTest extends TestCase
public function testExample()
{
$this->markTestSkipped('WIP');
$invoice = Invoice::first();
$invitation = $invoice->invitations()->first();