diff --git a/app/Jobs/Import/CSVImport.php b/app/Jobs/Import/CSVImport.php index 0381830b23bb..691fbd0d5b37 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,16 @@ class CSVImport implements ShouldQueue info("import".ucfirst($this->entity_type)); $this->{"import".ucfirst($this->entity_type)}(); + + $data = [ + 'entity' => $this->entity_type, + 'errors' => $this->error_array, + 'clients' => $this->maps['clients'], + 'products' => $this->maps['products'], + 'invoices' => $this->maps['invoices'], + ]; - - info("errors"); - - info(print_r($this->error_array,1)); + MailRouter::dispatch(new ImportCompleted($data), $this->company, auth()->user()); } @@ -180,7 +187,7 @@ class CSVImport implements ShouldQueue $validator = Validator::make($invoice, (new StoreInvoiceRequest())->rules()); if ($validator->fails()) { - $this->error_array[] = ['invoice' => $invoice, 'error' => json_encode($validator->errors())]; + $this->error_array['invoices'] = ['invoice' => $invoice, 'error' => json_encode($validator->errors())]; } else { $invoice = $invoice_repository->save($invoice, InvoiceFactory::create($this->company->id, $this->setUser($record))); @@ -248,7 +255,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))); @@ -291,7 +298,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))); @@ -310,6 +317,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/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/Mail/Import/ImportCompleted.php b/app/Mail/Import/ImportCompleted.php new file mode 100644 index 000000000000..ffe431926f11 --- /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', compact($this->data)); + } +} diff --git a/resources/views/email/import/completed.blade b/resources/views/email/import/completed.blade new file mode 100644 index 000000000000..abc340a3dc99 --- /dev/null +++ b/resources/views/email/import/completed.blade @@ -0,0 +1,41 @@ +@component('email.template.master', ['design' => 'light', 'settings' =>$settings]) + +@slot('header') + @component('email.components.header') + Migration already completed + @endcomponent +@endslot + +@slot('greeting') + Hello, +@endslot + +Here is the output of your recent import job. + +Entity Type: {{ $entity_type }} + +@if(count($errors['invoices']) >=1) +