contact_repo = $contact_repo; } /** * Saves the vendor and its contacts. * * @param array $data The data * @param \App\Models\Vendor $vendor The vendor * * @return vendor|\App\Models\Vendor|null Vendor Object * @throws \Laracasts\Presenter\Exceptions\PresenterException */ public function save(array $data, Vendor $vendor): ?Vendor { $saveable_vendor = $data; if(array_key_exists('contacts', $data)) { unset($saveable_vendor['contacts']); } $vendor->fill($saveable_vendor); $vendor->saveQuietly(); $vendor->service()->applyNumber(); if (isset($data['contacts']) || $vendor->contacts()->count() == 0) { $this->contact_repo->save($data, $vendor); } if (array_key_exists('documents', $data) && count($data['documents']) >= 1) { $this->saveDocuments($data['documents'], $vendor); } return $vendor; } /** * Store vendors in bulk. * * @param array $vendor * @return vendor|null */ public function create($vendor): ?Vendor { return $this->save( $vendor, VendorFactory::create(auth()->user()->company()->id, auth()->user()->id) ); } }