contact_repo = $contact_repo; } /** * Gets the class name. * * @return string The class name. */ public function getClassName() { return Client::class; } /** * Saves the client and its contacts. * * @param array $data The data * @param Client $client The client * * @return Client|Client|null Client Object * * @throws \Laracasts\Presenter\Exceptions\PresenterException * @todo Write tests to make sure that custom client numbers work as expected. */ public function save(array $data, Client $client) : ?Client { $client->fill($data); $client->save(); if ($client->id_number == '' || ! $client->id_number) { $client->id_number = $this->getNextClientNumber($client); } $client->save(); $this->contact_repo->save($data, $client); if (empty($data['name'])) { $data['name'] = $client->present()->name(); } //info("{$client->present()->name} has a balance of {$client->balance} with a paid to date of {$client->paid_to_date}"); if (array_key_exists('documents', $data)) { $this->saveDocuments($data['documents'], $client); } return $client; } /** * Store clients in bulk. * * @param array $client * @return Client|null */ public function create($client): ?Client { return $this->save( $client, ClientFactory::create(auth()->user()->company()->id, auth()->user()->id) ); } }