From b75fe1157feef1925724e4fbebabfcb8cc32da2f Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 13 Apr 2023 15:14:54 +1000 Subject: [PATCH] Insert Clients if none found prior to creating any resources --- app/Import/Providers/BaseImport.php | 4 +- app/Import/Transformer/BaseTransformer.php | 43 +++++++++++++++++----- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/app/Import/Providers/BaseImport.php b/app/Import/Providers/BaseImport.php index b264a4320dea..da3fed35b139 100644 --- a/app/Import/Providers/BaseImport.php +++ b/app/Import/Providers/BaseImport.php @@ -426,7 +426,9 @@ class BaseImport $message = $ex->getMessage(); } else { report($ex); - $message = 'Unknown error'; + $message = 'Unknown error '; + nlog($ex->getMessage()); + nlog($raw_invoice); } $this->error_array['invoice'][] = [ diff --git a/app/Import/Transformer/BaseTransformer.php b/app/Import/Transformer/BaseTransformer.php index 989f821145ec..4fcdee6d1afc 100644 --- a/app/Import/Transformer/BaseTransformer.php +++ b/app/Import/Transformer/BaseTransformer.php @@ -11,24 +11,26 @@ namespace App\Import\Transformer; -use App\Factory\ExpenseCategoryFactory; -use App\Factory\ProjectFactory; -use App\Factory\VendorFactory; +use App\Models\Quote; +use App\Utils\Number; use App\Models\Client; -use App\Models\ClientContact; +use App\Models\Vendor; use App\Models\Country; use App\Models\Expense; -use App\Models\ExpenseCategory; use App\Models\Invoice; -use App\Models\PaymentType; use App\Models\Product; use App\Models\Project; -use App\Models\Quote; use App\Models\TaxRate; -use App\Models\Vendor; -use App\Utils\Number; +use App\Models\PaymentType; +use App\Models\ClientContact; +use App\Factory\ClientFactory; +use App\Factory\VendorFactory; use Illuminate\Support\Carbon; +use App\Factory\ProjectFactory; +use App\Models\ExpenseCategory; use Illuminate\Support\Facades\Cache; +use App\Repositories\ClientRepository; +use App\Factory\ExpenseCategoryFactory; /** * Class BaseTransformer. @@ -129,7 +131,28 @@ class BaseTransformer } } - return null; + $client_repository = app()->make(ClientRepository::class); + $client_repository->import_mode = true; + + $client = $client_repository->save( + [ + 'name' => $client_name, + 'contacts' => [ + [ + 'first_name' => $client_name, + 'email' => $client_email, + ], + ], + ], + ClientFactory::create( + $this->company->id, + $this->company->owner()->id + ) + ); + + $client_repository = null; + + return $client->id; } ///////////////////////////////////////////////////////////////////////////////////