/** * @param OrmResultAfter $event */ public function onResultAfter(OrmResultAfter $event) { $currencies = $this->getCurrencies(); if (!$currencies) { return; } /** @var ResultRecord[] $records */ $records = $event->getRecords(); $productIds = []; foreach ($records as $record) { $productIds[] = $record->getValue('id'); } /** @var ProductPriceRepository $priceRepository */ $priceRepository = $this->doctrineHelper->getEntityRepository('OroB2BPricingBundle:ProductPrice'); $priceList = $this->getPriceList(); $showTierPrices = $this->priceListRequestHandler->getShowTierPrices(); $prices = $priceRepository->findByPriceListIdAndProductIds($priceList->getId(), $productIds, $showTierPrices); $groupedPrices = $this->groupPrices($prices); foreach ($records as $record) { $record->addData(['showTierPrices' => $showTierPrices]); $productId = $record->getValue('id'); $priceContainer = []; foreach ($currencies as $currencyIsoCode) { $columnName = $this->buildColumnName($currencyIsoCode); if (isset($groupedPrices[$productId][$currencyIsoCode])) { $priceContainer[$columnName] = $groupedPrices[$productId][$currencyIsoCode]; } else { $priceContainer[$columnName] = []; } } if ($priceContainer) { $record->addData($priceContainer); } } }
/** * @param OrmResultAfter $event */ public function onResultAfter(OrmResultAfter $event) { /** @var ResultRecord[] $records */ $records = $event->getRecords(); foreach ($records as $record) { $record->addData(['isDraft' => $record->getValue('statusName') === RequestStatus::DRAFT]); } }
/** * Gets prepared SQL and parameters from executed query * and stores them in DataGrid config object * * @param OrmResultAfter $event */ public function onResultAfter(OrmResultAfter $event) { $config = $event->getDatagrid()->getConfig(); $path = sprintf('%s[%s]', MetadataObject::OPTIONS_KEY, StoreSqlExtension::STORE_SQL); if ($config->offsetGetByPath($path, false)) { $config->offsetAddToArrayByPath(StoreSqlExtension::STORED_SQL_PATH, [StoreSqlExtension::SQL => QueryUtils::getExecutableSql($event->getQuery())]); } }
/** * @param OrmResultAfter $event */ public function onResultAfter(OrmResultAfter $event) { if (!$this->paginationManager->isEnabled()) { return; } $dataGrid = $event->getDatagrid(); if (!$this->paginationManager->isDatagridApplicable($dataGrid)) { return; } // clear all data as long as we can't guarantee that storage data is valid $entityName = $this->getEntityName($dataGrid); $this->storage->clearData($entityName); }