diff --git a/app/Interfaces/SyncInterface.php b/app/Interfaces/SyncInterface.php new file mode 100644 index 000000000000..17ca4e69c189 --- /dev/null +++ b/app/Interfaces/SyncInterface.php @@ -0,0 +1,21 @@ +service->sdk->FindById('Customer', $id); + } + + public function syncToNinja(array $records): void + { + + $transformer = new ClientTransformer($this->service->company); + + foreach ($records as $record) { + + $ninja_data = $transformer->qbToNinja($record); + + if ($client = $this->findClient($ninja_data['id'])) { + $client->fill($ninja_data); + $client->save(); + } + } + + } + + public function syncToForeign(array $records): void + { + } + + private function findClient(string $key): ?Client + { + $search = Client::query() + ->withTrashed() + ->where('company_id', $this->service->company->id) + ->where('sync->qb_id', $key); + + if ($search->count() == 0) { + + $client = ClientFactory::create($this->service->company->id, $this->service->company->owner()->id); + + $sync = new ClientSync(); + $sync->qb_id = $key; + $client->sync = $sync; + + return $client; + + } elseif ($search->count() == 1) { + return $this->service->settings->client->update_record ? $search->first() : null; + } + + return null; + + + } +}