/** * 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)); } }
/** * @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->filterQueryByUserId($queryBuilder, $parameters->get('userId')); $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); } }