public function __invoke(User $user) { $qb = $this->em->createQueryBuilder(); $qb2 = $this->em->createQueryBuilder(); $ids = $qb2->select('IDENTITY(u.group)')->from(User::class, 'u')->where('u.login = :login')->setParameter('login', $user->getLogin())->getQuery()->getArrayResult(); return $qb->select('ug')->from(UserGroup::class, 'ug')->where($qb->expr()->in('ug.id', array_map(function ($el) { return current($el); }, $ids)))->orderBy('ug.name')->getQuery()->getResult(); }
public function retrieve($login) { // Creating or retrieving the user $user = $this->entityManager->getRepository("AppBundle:User")->findOneByLogin($login); if ($user == null) { $user = new User(); $user->setLogin($login); } // Updating from Intranet $connector = new Connector(); $connector->authenticate(Connector::SIGN_IN_METHOD_CREDENTIALS, $this->connectorParameters["login"], $this->connectorParameters["password"]); if (!$connector->isSignedIn()) { throw new \Exception(); } $intranetUser = new \EpitechAPI\Component\User($connector, $user->getLogin()); $user->updateFromIntranet($intranetUser); return $user; }
public function updateUser(User $user) { // If the user has not a token, ignore if ($user->getToken() == null) { return; } // Connecting with Blih $blih = new Blih($user->getLogin()); $blih->setToken($user->getToken()); // Getting the repositories $blihRepositories = $blih->repository()->all()->body; if (!isset($blihRepositories->repositories)) { return; } $blihRepositories = $blihRepositories->repositories; $repositories = $user->getRepositories(); // Removing the repositories removed $repositories->forAll(function ($key, Repository $repository) use($blihRepositories) { if (!array_key_exists($repository->getName(), $blihRepositories)) { $this->entityManager->remove($repository); } return true; }); // Updating or creating the repositories foreach ($blihRepositories as $name => $data) { $repository = $this->retrieveOrCreateRepository($user, $name); $this->updateRepository($repository); $this->entityManager->persist($repository); } // Updating the user $user->setLastRepositoriesUpdateDate(new \DateTime()); $this->entityManager->persist($user); $this->entityManager->flush(); }