invoice = $invoice; } public function run() { $contacts = $this->invoice->client->contacts; if($contacts->count() == 0){ $this->createBlankContact(); $this->invoice->refresh(); $contacts = $this->invoice->client->contacts; } $contacts->each(function ($contact) { $invitation = InvoiceInvitation::whereCompanyId($this->invoice->company_id) ->whereClientContactId($contact->id) ->whereInvoiceId($this->invoice->id) ->withTrashed() ->first(); if (! $invitation && $contact->send_email) { $ii = InvoiceInvitationFactory::create($this->invoice->company_id, $this->invoice->user_id); $ii->key = $this->createDbHash(config('database.default')); $ii->invoice_id = $this->invoice->id; $ii->client_contact_id = $contact->id; $ii->save(); } elseif ($invitation && ! $contact->send_email) { $invitation->delete(); } }); if($this->invoice->invitations()->count() == 0) { $contact = $this->createBlankContact(); $ii = InvoiceInvitationFactory::create($this->invoice->company_id, $this->invoice->user_id); $ii->key = $this->createDbHash(config('database.default')); $ii->invoice_id = $this->invoice->id; $ii->client_contact_id = $contact->id; $ii->save(); } return $this->invoice; } private function createBlankContact() { $new_contact = ClientContactFactory::create($this->invoice->company_id, $this->invoice->user_id); $new_contact->client_id = $this->invoice->client_id; $new_contact->contact_key = Str::random(40); $new_contact->is_primary = true; $new_contact->save(); return $new_contact; } }