/** * Collects all price influencer from (in the mentioned order): * - article * - attribute * - attribute value * * @param \Abra\Cadabra\Domain\Model\Article $article * @return \SplObjectStorage */ public static function collectPriceInfluencerFromArticle($article) { $priceInfluencer = new \SplObjectStorage(); foreach ($article->getPriceInfluencer() as $articlePriceInfluencer) { $priceInfluencer->attach($articlePriceInfluencer); } /** @var \Abra\Cadabra\Domain\Model\ArticleFeature $feature */ foreach ($article->getFeatures() as $feature) { foreach ($feature->getAttribute()->getPriceInfluencer() as $attributePriceInfluencer) { $priceInfluencer->attach($attributePriceInfluencer); } foreach ($feature->getAttributeValue()->getPriceInfluencer() as $attributeFeaturePriceInfluencer) { $priceInfluencer->attach($attributeFeaturePriceInfluencer); } } return $priceInfluencer; }
/** * @param \Abra\Cadabra\Domain\Model\Article $article * @param integer $amount * * @return void */ public function addArticleAction($article, $amount = 1) { $positions = $this->basket->getPositions(); /** @var \Abra\Cadabra\Domain\Model\Ordering\BasketEntry $position */ foreach ($positions as $position) { if ($position->getUid() === $article->getUid()) { } } $basketEntry = new \Abra\Cadabra\Domain\Model\Ordering\BasketEntry(); $basketEntry->setArticle($article); $basketEntry->setAmount($amount); $basketEntry->setBasket($this->basket); $this->basket->addPosition($basketEntry); $this->basketRepository->update($this->basket); $this->persistenceManager->persistAll(); $pageId = $this->settings['basket']['basketPageId'] ? $this->settings['basket']['basketPageId'] : null; $this->redirect('show', 'Basket', 'cadabra', null, $pageId); }