/** * @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 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(); $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); } }