diff --git a/app/Http/Controllers/CreditController.php b/app/Http/Controllers/CreditController.php index a03a0b41b4b7..e0c72b90d598 100644 --- a/app/Http/Controllers/CreditController.php +++ b/app/Http/Controllers/CreditController.php @@ -507,7 +507,7 @@ class CreditController extends BaseController $ids = request()->input('ids'); - if(Ninja::isHosted() && in_array('email', $action) && !auth()->user()->company()->account->account_sms_verified) + if(Ninja::isHosted() && (stripos($action, 'email') !== false) && !auth()->user()->company()->account->account_sms_verified) return response(['message' => 'Please verify your account to send emails.'], 400); $credits = Credit::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get(); diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 6a7abf82c066..dd91e5e6b5d4 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -551,7 +551,7 @@ class InvoiceController extends BaseController $ids = request()->input('ids'); - if(Ninja::isHosted() && in_array('email', $action) && !auth()->user()->company()->account->account_sms_verified) + if(Ninja::isHosted() && (stripos($action, 'email') !== false) && !auth()->user()->company()->account->account_sms_verified) return response(['message' => 'Please verify your account to send emails.'], 400); $invoices = Invoice::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get(); diff --git a/app/Http/Controllers/PurchaseOrderController.php b/app/Http/Controllers/PurchaseOrderController.php index bf8dc737c659..8fc56b8fc7cb 100644 --- a/app/Http/Controllers/PurchaseOrderController.php +++ b/app/Http/Controllers/PurchaseOrderController.php @@ -489,7 +489,7 @@ class PurchaseOrderController extends BaseController $ids = request()->input('ids'); - if(Ninja::isHosted() && in_array('email', $action) && !auth()->user()->company()->account->account_sms_verified) + if(Ninja::isHosted() && (stripos($action, 'email') !== false) && !auth()->user()->company()->account->account_sms_verified) return response(['message' => 'Please verify your account to send emails.'], 400); $purchase_orders = PurchaseOrder::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get(); diff --git a/app/Http/Controllers/QuoteController.php b/app/Http/Controllers/QuoteController.php index a9c1f5b7113e..80fd8c67b93e 100644 --- a/app/Http/Controllers/QuoteController.php +++ b/app/Http/Controllers/QuoteController.php @@ -518,7 +518,7 @@ class QuoteController extends BaseController $ids = request()->input('ids'); - if(Ninja::isHosted() && in_array('email', $action) && !auth()->user()->company()->account->account_sms_verified) + if(Ninja::isHosted() && (stripos($action, 'email') !== false) && !auth()->user()->company()->account->account_sms_verified) return response(['message' => 'Please verify your account to send emails.'], 400); $quotes = Quote::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get(); diff --git a/app/Mail/Engine/CreditEmailEngine.php b/app/Mail/Engine/CreditEmailEngine.php index e142668d21b0..12a12e600d88 100644 --- a/app/Mail/Engine/CreditEmailEngine.php +++ b/app/Mail/Engine/CreditEmailEngine.php @@ -129,11 +129,11 @@ class CreditEmailEngine extends BaseEmailEngine // Storage::url foreach ($this->credit->documents as $document) { - $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => $document->type]]); + $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => null]]); } foreach ($this->credit->company->documents as $document) { - $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => $document->type]]); + $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => null]]); } } diff --git a/app/Mail/Engine/PurchaseOrderEmailEngine.php b/app/Mail/Engine/PurchaseOrderEmailEngine.php index dfe8f58baae5..fa6477c38c34 100644 --- a/app/Mail/Engine/PurchaseOrderEmailEngine.php +++ b/app/Mail/Engine/PurchaseOrderEmailEngine.php @@ -137,62 +137,13 @@ class PurchaseOrderEmailEngine extends BaseEmailEngine // Storage::url foreach ($this->purchase_order->documents as $document) { - $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => $document->type]]); + $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => null]]); } foreach ($this->purchase_order->company->documents as $document) { - $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => $document->type]]); + $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => null]]); } - // $line_items = $this->purchase_order->line_items; - - // foreach($line_items as $item) - // { - - // $expense_ids = []; - - // if(property_exists($item, 'expense_id')) - // { - // $expense_ids[] = $item->expense_id; - // } - - // if(count($expense_ids) > 0){ - - // $expenses = Expense::whereIn('id', $this->transformKeys($expense_ids)) - // ->where('invoice_documents', 1) - // ->cursor() - // ->each(function ($expense){ - - // foreach($expense->documents as $document) - // { - // $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => $document->type]]); - // } - - // }); - // } - - // $task_ids = []; - - // if(property_exists($item, 'task_id')) - // { - // $task_ids[] = $item->task_id; - // } - - // if(count($task_ids) > 0 && $this->purchase_order->company->purchase_order_task_documents){ - - // $tasks = Task::whereIn('id', $this->transformKeys($task_ids)) - // ->cursor() - // ->each(function ($task){ - - // foreach($task->documents as $document) - // { - // $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => $document->type]]); - // } - - // }); - // } - - // } } return $this; diff --git a/app/Mail/Engine/QuoteEmailEngine.php b/app/Mail/Engine/QuoteEmailEngine.php index 9acbd5dc00ca..8b692c2f3e5d 100644 --- a/app/Mail/Engine/QuoteEmailEngine.php +++ b/app/Mail/Engine/QuoteEmailEngine.php @@ -128,11 +128,11 @@ class QuoteEmailEngine extends BaseEmailEngine // Storage::url foreach ($this->quote->documents as $document) { - $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => $document->type]]); + $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => null]]); } foreach ($this->quote->company->documents as $document) { - $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => $document->type]]); + $this->setAttachments([['path' => $document->filePath(), 'name' => $document->name, 'mime' => null]]); } } diff --git a/app/Mail/TemplateEmail.php b/app/Mail/TemplateEmail.php index 1a4de0d489c9..5ad58d4f98ec 100644 --- a/app/Mail/TemplateEmail.php +++ b/app/Mail/TemplateEmail.php @@ -11,6 +11,7 @@ namespace App\Mail; +use App\Jobs\Entity\CreateEntityPdf; use App\Jobs\Invoice\CreateUbl; use App\Models\Account; use App\Models\Client; @@ -23,6 +24,7 @@ use App\Utils\TemplateEngine; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\Storage; class TemplateEmail extends Mailable { @@ -120,15 +122,36 @@ class TemplateEmail extends Mailable }); /*In the hosted platform we need to slow things down a little for Storage to catch up.*/ - if (Ninja::isHosted()) { - sleep(1); + + if(Ninja::isHosted()){ + + $path = false; + + if($this->invitation->invoice) + $path = $this->client->invoice_filepath($this->invitation).$this->invitation->invoice->numberFormatter().'.pdf'; + elseif($this->invitation->quote) + $path = $this->client->quote_filepath($this->invitation).$this->invitation->quote->numberFormatter().'.pdf'; + elseif($this->invitation->credit) + $path = $this->client->credit_filepath($this->invitation).$this->invitation->credit->numberFormatter().'.pdf'; + + if($path && !Storage::disk(config('filesystems.default'))->exists($path)){ + + sleep(2); + + if(!Storage::disk(config('filesystems.default'))->exists($path)) { + CreateEntityPdf::dispatchSync($this->invitation); + sleep(2); + } + + } + } foreach ($this->build_email->getAttachments() as $file) { if (is_string($file)) { $this->attach($file); } elseif (is_array($file)) { - $this->attach($file['path'], ['as' => $file['name'], 'mime' => $file['mime']]); + $this->attach($file['path'], ['as' => $file['name'], 'mime' => null]); } } diff --git a/app/Mail/VendorTemplateEmail.php b/app/Mail/VendorTemplateEmail.php index 080783dab330..02992de1d5c9 100644 --- a/app/Mail/VendorTemplateEmail.php +++ b/app/Mail/VendorTemplateEmail.php @@ -12,6 +12,7 @@ namespace App\Mail; use App\Jobs\Invoice\CreateUbl; +use App\Jobs\Vendor\CreatePurchaseOrderPdf; use App\Models\Account; use App\Models\Client; use App\Models\User; @@ -24,6 +25,7 @@ use App\Utils\VendorHtmlEngine; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\Storage; class VendorTemplateEmail extends Mailable { @@ -114,15 +116,35 @@ class VendorTemplateEmail extends Mailable }); /*In the hosted platform we need to slow things down a little for Storage to catch up.*/ - if (Ninja::isHosted()) { - sleep(1); + // if (Ninja::isHosted()) { + // sleep(1); + // } + + if(Ninja::isHosted()){ + + $path = false; + + if($this->invitation->purchase_order) + $path = $this->vendor->purchase_order_filepath($this->invitation).$this->invitation->purchase_order->numberFormatter().'.pdf'; + + if($path && !Storage::disk(config('filesystems.default'))->exists($path)){ + + sleep(2); + + if(!Storage::disk(config('filesystems.default'))->exists($path)) { + CreatePurchaseOrderPdf::dispatchSync($this->invitation); + sleep(2); + } + + } + } foreach ($this->build_email->getAttachments() as $file) { if (is_string($file)) { $this->attach($file); } elseif (is_array($file)) { - $this->attach($file['path'], ['as' => $file['name'], 'mime' => $file['mime']]); + $this->attach($file['path'], ['as' => $file['name'], 'mime' => null]); } }