diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php
index 06eb6ebee7af..f93ada1b021c 100644
--- a/app/Http/Controllers/PreviewController.php
+++ b/app/Http/Controllers/PreviewController.php
@@ -125,7 +125,7 @@ class PreviewController extends BaseController
->design($design)
->build();
- if (request()->has('html') && request()->input('html') == true) {
+ if (request()->query('html') == true) {
return $maker->getCompiledHTML;
}
diff --git a/app/Jobs/Import/CSVImport.php b/app/Jobs/Import/CSVImport.php
index 9ee272d5deb2..f54016ac8532 100644
--- a/app/Jobs/Import/CSVImport.php
+++ b/app/Jobs/Import/CSVImport.php
@@ -21,7 +21,9 @@ use App\Import\Transformers\ClientTransformer;
use App\Import\Transformers\InvoiceItemTransformer;
use App\Import\Transformers\InvoiceTransformer;
use App\Import\Transformers\ProductTransformer;
+use App\Jobs\Mail\MailRouter;
use App\Libraries\MultiDB;
+use App\Mail\Import\ImportCompleted;
use App\Models\Client;
use App\Models\Company;
use App\Models\Currency;
@@ -98,11 +100,20 @@ class CSVImport implements ShouldQueue
info("import".ucfirst($this->entity_type));
$this->{"import".ucfirst($this->entity_type)}();
+
+ $data = [
+ 'entity' => ucfirst($this->entity_type),
+ 'errors' => $this->error_array,
+ 'clients' => $this->maps['clients'],
+ 'products' => $this->maps['products'],
+ 'invoices' => $this->maps['invoices'],
+ 'settings' => $this->company->settings
+ ];
+info(print_r($data,1));
- info("errors");
+ MailRouter::dispatch(new ImportCompleted($data), $this->company, auth()->user());
- info(print_r($this->error_array, 1));
}
public function failed($exception)
@@ -168,7 +179,11 @@ class CSVImport implements ShouldQueue
$invoice['line_items'] = $this->cleanItems($items);
- $validator = Validator::make($invoice, (new StoreInvoiceRequest())->rules());
+ $validator = Validator::make($invoice, (new StoreInvoiceRequest())->rules());
+
+ if ($validator->fails()) {
+ $this->error_array['invoices'] = ['invoice' => $invoice, 'error' => json_encode($validator->errors())];
+ } else {
if ($validator->fails()) {
$this->error_array[] = ['invoice' => $invoice, 'error' => json_encode($validator->errors())];
@@ -237,7 +252,7 @@ class CSVImport implements ShouldQueue
$validator = Validator::make($client, (new StoreClientRequest())->rules());
if ($validator->fails()) {
- $this->error_array[] = ['client' => $client, 'error' => json_encode($validator->errors())];
+ $this->error_array['clients'] = ['client' => $client, 'error' => json_encode($validator->errors())];
} else {
$client = $client_repository->save($client, ClientFactory::create($this->company->id, $this->setUser($record)));
@@ -279,7 +294,7 @@ class CSVImport implements ShouldQueue
$validator = Validator::make($product, (new StoreProductRequest())->rules());
if ($validator->fails()) {
- $this->error_array[] = ['product' => $product, 'error' => json_encode($validator->errors())];
+ $this->error_array['products'] = ['product' => $product, 'error' => json_encode($validator->errors())];
} else {
$product = $product_repository->save($product, ProductFactory::create($this->company->id, $this->setUser($record)));
@@ -298,6 +313,7 @@ class CSVImport implements ShouldQueue
$this->maps['company'] = $this->company;
$this->maps['clients'] = [];
$this->maps['products'] = [];
+ $this->maps['invoices'] = [];
return $this;
}
diff --git a/app/Jobs/Mail/BaseMailerJob.php b/app/Jobs/Mail/BaseMailerJob.php
index d0649ba73fc7..c337e939ce90 100644
--- a/app/Jobs/Mail/BaseMailerJob.php
+++ b/app/Jobs/Mail/BaseMailerJob.php
@@ -97,8 +97,9 @@ class BaseMailerJob implements ShouldQueue
public function failed($exception = null)
{
- // info('the job failed');
-
+ info('the job failed');
+ info($exception->getMessage());
+
$job_failure = new EmailFailure();
$job_failure->string_metric5 = get_parent_class($this);
$job_failure->string_metric6 = $exception->getMessage();
diff --git a/app/Jobs/Mail/MailRouter.php b/app/Jobs/Mail/MailRouter.php
index aa29d036b471..dabb8a456f28 100644
--- a/app/Jobs/Mail/MailRouter.php
+++ b/app/Jobs/Mail/MailRouter.php
@@ -12,6 +12,7 @@
namespace App\Jobs\Mail;
use App\Libraries\MultiDB;
+use App\Models\Client;
use App\Models\ClientContact;
use App\Models\Company;
use App\Models\User;
@@ -74,7 +75,9 @@ class MailRouter extends BaseMailerJob implements ShouldQueue
->send($this->mailable);
} catch (\Exception $e) {
$this->failed($e);
- $this->logMailError($e->getMessage(), $this->to_user);
+
+ if($this->to_user instanceof ClientContact)
+ $this->logMailError($e->getMessage(), $this->to_user->client);
}
}
}
diff --git a/app/Listeners/Quote/QuoteViewedActivity.php b/app/Listeners/Quote/QuoteViewedActivity.php
index e80dfd27e7f4..cdcdd12c1401 100644
--- a/app/Listeners/Quote/QuoteViewedActivity.php
+++ b/app/Listeners/Quote/QuoteViewedActivity.php
@@ -43,14 +43,14 @@ class QuoteViewedActivity implements ShouldQueue
$fields = new stdClass;
- $fields->user_id = $event->quote->user_id;
- $fields->company_id = $event->quote->company_id;
+ $fields->user_id = $event->invitation->quote->user_id;
+ $fields->company_id = $event->invitation->company_id;
$fields->activity_type_id = Activity::VIEW_QUOTE;
$fields->client_id = $event->invitation->client_id;
$fields->client_contact_id = $event->invitation->client_contact_id;
$fields->invitation_id = $event->invitation->id;
$fields->quote_id = $event->invitation->quote_id;
- $this->activity_repo->save($fields, $event->quote, $event->event_vars);
+ $this->activity_repo->save($fields, $event->invitation->quote, $event->event_vars);
}
}
diff --git a/app/Mail/Import/ImportCompleted.php b/app/Mail/Import/ImportCompleted.php
new file mode 100644
index 000000000000..85178fb0647d
--- /dev/null
+++ b/app/Mail/Import/ImportCompleted.php
@@ -0,0 +1,35 @@
+data = $data;
+ }
+
+ /**
+ * Build the message.
+ *
+ * @return $this
+ */
+ public function build()
+ {
+ return $this->from(config('mail.from.address'), config('mail.from.name'))
+ ->view('email.import.completed', $this->data);
+ }
+}
diff --git a/app/Utils/Traits/Pdf/PdfMaker.php b/app/Utils/Traits/Pdf/PdfMaker.php
index b3225dc33a1a..422149807cc5 100644
--- a/app/Utils/Traits/Pdf/PdfMaker.php
+++ b/app/Utils/Traits/Pdf/PdfMaker.php
@@ -51,6 +51,7 @@ trait PdfMaker
->deviceScaleFactor(1)
->waitUntilNetworkIdle(true)
->noSandbox()
+ ->ignoreHttpsErrors()
->pdf();
}
}
diff --git a/resources/views/email/import/completed.blade.php b/resources/views/email/import/completed.blade.php
new file mode 100644
index 000000000000..6763d0575f87
--- /dev/null
+++ b/resources/views/email/import/completed.blade.php
@@ -0,0 +1,82 @@
+@component('email.template.master', ['design' => 'light', 'settings' =>$settings])
+
+@slot('header')
+ @component('email.components.header')
+ Import completed
+ @endcomponent
+@endslot
+
+@slot('greeting')
+ Hello,
+@endslot
+
+Here is the output of your recent import job.
+
+@if(isset($clients) && count($clients) >=1)
+
+