Fixed problem creating client with invoice in the API

This commit is contained in:
Hillel Coren 2015-11-17 10:46:14 +02:00
parent cd3aecdf5b
commit b4e5690103
2 changed files with 13 additions and 8 deletions

View File

@ -4,6 +4,7 @@ use Auth;
use Utils; use Utils;
use Response; use Response;
use Input; use Input;
use Validator;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\Client; use App\Models\Client;
use App\Models\Contact; use App\Models\Contact;
@ -102,12 +103,18 @@ class InvoiceApiController extends Controller
} }
if (isset($data['email'])) { if (isset($data['email'])) {
$client = Client::scope()->whereHas('contacts', function($query) use ($data) { $email = $data['email'];
$query->where('email', '=', $data['email']); $client = Client::scope()->whereHas('contacts', function($query) use ($email) {
$query->where('email', '=', $email);
})->first(); })->first();
if (!$client) { if (!$client) {
$clientData = ['contact' => ['email' => $data['email']]]; $validator = Validator::make(['email'=>$email], ['email' => 'email']);
if ($validator->fails()) {
return $validator->message();
}
$clientData = ['contact' => ['email' => $email]];
foreach (['name', 'private_notes'] as $field) { foreach (['name', 'private_notes'] as $field) {
if (isset($data[$field])) { if (isset($data[$field])) {
$clientData[$field] = $data[$field]; $clientData[$field] = $data[$field];
@ -118,11 +125,9 @@ class InvoiceApiController extends Controller
$clientData[$field] = $data[$field]; $clientData[$field] = $data[$field];
} }
} }
$error = $this->clientRepo->getErrors($clientData);
if (!$error) {
$client = $this->clientRepo->save($clientData); $client = $this->clientRepo->save($clientData);
} }
}
} else if (isset($data['client_id'])) { } else if (isset($data['client_id'])) {
$client = Client::scope($data['client_id'])->first(); $client = Client::scope($data['client_id'])->first();
} }

View File

@ -54,7 +54,7 @@ class ClientRepository extends BaseRepository
$contacts = isset($data['contact']) ? [$data['contact']] : $data['contacts']; $contacts = isset($data['contact']) ? [$data['contact']] : $data['contacts'];
$contactIds = []; $contactIds = [];
foreach ($data['contacts'] as $contact) { foreach ($contacts as $contact) {
$contact = $client->addContact($contact, $first); $contact = $client->addContact($contact, $first);
$contactIds[] = $contact->public_id; $contactIds[] = $contact->public_id;
$first = false; $first = false;