model->all(); } public function store(UserDTO $userDTO): User { return $this->model->create(attributes: [ 'name' => $userDTO->name, 'email' => $userDTO->email, 'password' => bcrypt(value: $userDTO->password), 'type' => $userDTO->type, ]); } public function update(UserDTO $userDTO, int $id): ?User { $user = $this->model->findOrFail(id: $id); $user->update(attributes: [ 'name' => $userDTO->name, 'email' => $userDTO->email, 'password' => bcrypt(value: $userDTO->password), 'type' => $userDTO->type, ]); return $user; } public function delete(int $id): bool { return $this->model->destroy(ids: $id); } public function find(int $id): ?User { return $this->model->findOrFail(id: $id); } public function findByEmail(string $email): ?User { return $this->model->where(column: 'email', operator: $email)->first(); } public function updateLanguage(UserLanguageDTO $languageDTO, int $id): ?User { $user = $this->model->findOrFail(id: $id); $user->update(attributes: [ 'language' => $languageDTO->language, ]); return $user; } }