isValid()) { throw new InvalidUserDataException($userData); } /** @var User $user */ if (null === ($user = $this->userRepository->find($userData->getId()))) { $user = new User( (int) $userData->getId(), \DateTime::createFromFormat('Y-m-d_H:i:s', $userData->getCreated()) ?: new \DateTime() ); $this->userRepository->add($user); } $user->updateLoginAndName($userData->getLogin(), $userData->getName()); if (null !== $userData->getDenyAnonymous() && null !== $userData->getPrivate()) { $user->updatePrivacy(!$userData->getDenyAnonymous(), $userData->getPrivate()); } return $user; } /** @return User[] */ public function findOrCreateFromDTOArray(array $usersData): array { // @todo LOG $result = []; foreach ($usersData as $userData) { $result[] = $this->findOrCreateFromDTO($userData); } return $result; } }