diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php index 95df25c6c2cf..be3c02e075f7 100644 --- a/app/Console/Commands/CheckData.php +++ b/app/Console/Commands/CheckData.php @@ -28,6 +28,7 @@ use App\Models\Payment; use App\Models\Paymentable; use App\Models\QuoteInvitation; use App\Models\RecurringInvoiceInvitation; +use App\Models\Vendor; use App\Utils\Ninja; use Exception; use Illuminate\Console\Command; @@ -295,6 +296,9 @@ class CheckData extends Command } if ($this->option('fix') == 'true') { + + $vendors = Vendor::withTrashed()->doesntHave('contacts')->get(); + foreach ($vendors as $vendor) { $this->logMessage("Fixing missing vendor contacts #{$vendor->id}"); diff --git a/app/Jobs/Import/CSVIngest.php b/app/Jobs/Import/CSVIngest.php index 0c13c1eda642..cffa87a80c0a 100644 --- a/app/Jobs/Import/CSVIngest.php +++ b/app/Jobs/Import/CSVIngest.php @@ -11,6 +11,8 @@ namespace App\Jobs\Import; +use App\Factory\ClientContactFactory; +use App\Factory\VendorContactFactory; use App\Import\Providers\Csv; use App\Import\Providers\Freshbooks; use App\Import\Providers\Invoice2Go; @@ -18,12 +20,15 @@ use App\Import\Providers\Invoicely; use App\Import\Providers\Wave; use App\Import\Providers\Zoho; use App\Libraries\MultiDB; +use App\Models\Client; use App\Models\Company; +use App\Models\Vendor; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Str; class CSVIngest implements ShouldQueue { @@ -70,6 +75,33 @@ class CSVIngest implements ShouldQueue { } + $this->checkContacts(); + } + + private function checkContacts() + { + $vendors = Vendor::withTrashed()->where('company_id', $this->company->id)->doesntHave('contacts')->get(); + + foreach ($vendors as $vendor) { + + $new_contact = VendorContactFactory::create($vendor->company_id, $vendor->user_id); + $new_contact->vendor_id = $vendor->id; + $new_contact->contact_key = Str::random(40); + $new_contact->is_primary = true; + $new_contact->save(); + } + + $clients = Client::withTrashed()->where('company_id', $this->company->id)->doesntHave('contacts')->get(); + + foreach ($clients as $client) { + + $new_contact = ClientContactFactory::create($client->company_id, $client->user_id); + $new_contact->client_id = $client->id; + $new_contact->contact_key = Str::random(40); + $new_contact->is_primary = true; + $new_contact->save(); + } + } private function bootEngine(string $import_type)