/**
  * @param BuildAfter $event
  */
 public function onBuildAfter(BuildAfter $event)
 {
     $datagrid = $event->getDatagrid();
     $datasource = $datagrid->getDatasource();
     if ($datasource instanceof OrmDatasource) {
         $queryBuilder = $datasource->getQueryBuilder();
         $this->emailQueryFactory->applyAcl($queryBuilder);
         $this->emailQueryFactory->prepareQuery($queryBuilder);
     }
 }
 public function testFilterQueryByUserIdWhenNoMailboxesFound()
 {
     $user = new User();
     $organization = new Organization();
     $em = $this->getTestEntityManager();
     $qb = $em->createQueryBuilder();
     $this->securityFacade->expects($this->once())->method('getLoggedUser')->will($this->returnValue($user));
     $this->securityFacade->expects($this->once())->method('getOrganization')->will($this->returnValue($organization));
     $this->mailboxManager->expects($this->any())->method('findAvailableMailboxIds')->with($user, $organization)->will($this->returnValue([1, 3, 5]));
     $qb->select('eu')->from('EmailUser', 'eu');
     $this->factory->applyAcl($qb, 1);
     $this->assertEquals("SELECT eu FROM EmailUser eu" . " WHERE (eu.owner = :owner AND eu.organization  = :organization) OR eu.mailboxOwner IN(:mailboxIds)", $qb->getQuery()->getDQL());
 }
 public function testPrepareQueryOneProviderGiven()
 {
     $provider = $this->getMock('Oro\\Bundle\\EmailBundle\\Entity\\Provider\\EmailOwnerProviderInterface');
     $provider->expects($this->any())->method('getEmailOwnerClass')->will($this->returnValue(self::TEST_ENTITY));
     $this->registry->addProvider($provider);
     $this->formatter->expects($this->once())->method('getFormattedNameDQL')->with($this->equalTo('owner1'), $this->equalTo(self::TEST_ENTITY))->will($this->returnValue(self::TEST_NAME_DQL_FORMATTED));
     $em = $this->getTestEntityManager();
     $qb = $em->createQueryBuilder();
     $qb->select('e')->from('OroEmailBundle:Email', 'e')->leftJoin('e.fromEmailAddress', self::JOIN_ALIAS);
     $this->factory->prepareQuery($qb);
     // @codingStandardsIgnoreStart
     $this->assertEquals("SELECT e, " . "CONCAT('', CASE WHEN a.hasOwner = true THEN (" . "CASE WHEN a.owner1 IS NOT NULL THEN CONCAT(a.firstName, CONCAT(a.lastName, '')) ELSE '' END" . ") ELSE a.email END) as fromEmailExpression " . "FROM OroEmailBundle:Email e LEFT JOIN e.fromEmailAddress a LEFT JOIN a.owner1 owner1", $qb->getDQL());
     // @codingStandardsIgnoreEnd
 }
 /**
  * Add required filters
  *
  * @param BuildAfter $event
  */
 public function onBuildAfter(BuildAfter $event)
 {
     /** @var OrmDatasource $ormDataSource */
     $ormDataSource = $event->getDatagrid()->getDatasource();
     $queryBuilder = $ormDataSource->getQueryBuilder();
     $parameters = $event->getDatagrid()->getParameters();
     $this->factory->filterQueryByUserId($queryBuilder, $parameters->get('userId'));
     if ($parameters->has('emailIds')) {
         $emailIds = $parameters->get('emailIds');
         if (!is_array($emailIds)) {
             $emailIds = explode(',', $emailIds);
         }
         $queryBuilder->andWhere($queryBuilder->expr()->in('e.id', $emailIds));
     }
 }
 /**
  * Add required filters
  *
  * @param BuildAfter $event
  */
 public function onBuildAfter(BuildAfter $event)
 {
     /** @var OrmDatasource $ormDataSource */
     $ormDataSource = $event->getDatagrid()->getDatasource();
     $queryBuilder = $ormDataSource->getQueryBuilder();
     $parameters = $event->getDatagrid()->getParameters();
     $alias = 'a';
     $queryBuilder->leftJoin('e.fromEmailAddress', $alias);
     $this->factory->prepareQuery($queryBuilder, $alias);
     if ($parameters->has('emailIds')) {
         $emailIds = $parameters->get('emailIds');
         if (!is_array($emailIds)) {
             $emailIds = explode(',', $emailIds);
         }
         $queryBuilder->andWhere($queryBuilder->expr()->in('e.id', $emailIds));
     }
 }
 /**
  * @param BuildAfter $event
  */
 public function onBuildAfter(BuildAfter $event)
 {
     $datagrid = $event->getDatagrid();
     $datasource = $datagrid->getDatasource();
     if ($datasource instanceof OrmDatasource) {
         $parameters = $datagrid->getParameters();
         $userId = $parameters->get('userId');
         $queryBuilder = $datasource->getQueryBuilder();
         $this->emailQueryFactory->applyAcl($queryBuilder);
         $this->emailQueryFactory->prepareQuery($queryBuilder);
         // bind 'origin_ids' parameter
         $originIds = [];
         $emailOrigins = $this->emailGridHelper->getEmailOrigins($userId);
         foreach ($emailOrigins as $emailOrigin) {
             $originIds[] = $emailOrigin->getId();
         }
         $queryBuilder->setParameter('origin_ids', $originIds);
     }
 }
 public function onBuildAfter(BuildAfter $event)
 {
     $datasource = $event->getDatagrid()->getDatasource();
     if ($datasource instanceof OrmDatasource) {
         /** @var QueryBuilder $query */
         $queryBuilder = $datasource->getQueryBuilder();
         $this->queryFactory->prepareQuery($queryBuilder);
         if ($id = $this->requestParams->get('userId')) {
             $user = $this->em->getRepository('OroUserBundle:User')->find($id);
             // TODO: select imap configuration by userId
             $origin = $user->getImapConfiguration();
             $originId = $origin !== null ? $origin->getId() : 0;
             if (array_key_exists('refresh', $this->requestParams->get(RequestParameters::ADDITIONAL_PARAMETERS)) && $originId) {
                 $this->imapSync->syncOrigins(array($originId));
             }
         } else {
             $originId = 0;
             // to make sure param bind passed
         }
         $queryBuilder->setParameter('origin_id', $originId);
     }
 }