/** * Allows to get all users who don't have reply to specified doodle. * @param jc\DoodleBundle\Entity\Doodle $doodle Doodle we want to get users who don't have reply. * @return List of users who don't have reply to specified doodle. */ public function getMissingUserForDoodle($doodle) { try { // Get all user who are not admin and who doesn't exist in doodle reply list $queryBuilder = $this->_em->createQueryBuilder()->select('u')->from('jcUserBundle:User', 'u'); $queryBuilder->where('u.profil = :adminRole')->andWhere('u.enabled = :enabled')->setParameter('adminRole', 'ROLE_USER')->setParameter('enabled', true); // If doodle already contains reply => exclude users who have reply if (count($doodle->getReplyList()) > 0) { $idToExclude = array(); foreach ($doodle->getReplyList() as $doodleReply) { $idToExclude[] = $doodleReply->getUser()->getId(); } $queryBuilder->andWhere($queryBuilder->expr()->notIn('u.id', $idToExclude)); } $query = $queryBuilder->getQuery(); return $query->getResult(); } catch (Exception $ex) { return array(); } }
/** * Allows to get all users who don't have reply to specified doodle. * @param jc\DoodleBundle\Entity\Doodle $doodle Doodle we want to get users who don't have reply. * @return List of users who don't have reply to specified doodle. */ public function getMissingUserForDoodle($doodle) { try { // Get admin role to build condition later $adminRole = $this->_em->createQuery('SELECT r FROM jcUserBundle:Role r WHERE r.code = :adminCode')->setParameter('adminCode', 'ROLE_ADMIN')->getSingleResult(); // Get all user who are not admin and who doesn't exist in doodle reply list $queryBuilder = $this->_em->createQueryBuilder()->select('u')->from('jcUserBundle:User', 'u'); $queryBuilder = $queryBuilder->where(':adminRole NOT MEMBER OF u.internalRoles')->setParameter('adminRole', $adminRole); // If doodle already contains reply => exclude users who have reply if (count($doodle->getReplyList()) > 0) { $idToExclude = array(); foreach ($doodle->getReplyList() as $doodleReply) { $idToExclude[] = $doodleReply->getUser()->getId(); } $queryBuilder->andWhere($queryBuilder->expr()->notIn('u.id', $idToExclude)); } $query = $queryBuilder->getQuery(); return $query->getResult(); } catch (Exception $ex) { return array(); } }