*/ public function getAll(): array { return Employee::query() ->get() ->all(); } public function find(UuidInterface $id): ?Employee { return Employee::query() ->where('id', $id->toString()) ->first(); } public function persist(Employee $employee): void { $employee->save(); } public function delete(Employee $employee): void { $employee->delete(); } public function findByMatriculeAndCode(Matricule $matricule, Code $code): ?Employee { return Employee::query() ->where('matricule', $matricule->value) ->where('code', $code->value) ->first(); } public function findByMatricule(Matricule $matricule): ?Employee { return Employee::query() ->where('matricule', $matricule->value) ->first(); } /** * @param array|Collection $matricules * @return array */ public function getWhereMatriculeIn(array | Collection $matricules): array { return Employee::query() ->whereIn('matricule', $matricules) ->get() ->all(); } /** * @param array|Collection $matricules * @return array */ public function getWithCustomerWhereMatriculeIn(array | Collection $matricules): array { return Employee::query() ->with('customer') ->whereIn('matricule', $matricules) ->get() ->keyBy('matricule') ->all(); } /** * @param array|Collection $excludedMatricules * @return array */ public function getWithCustomerWhereMatriculeNotIn(array | Collection $excludedMatricules): array { return Employee::query() ->with('customer') ->whereNotIn('matricule', $excludedMatricules) ->get() ->all(); } public function getMostRecentSyncDate(): ?\DateTimeInterface { return Employee::query() ->orderBy('last_sync', 'desc') ->limit(1) ->first('last_sync')?->last_sync; } }