/** * @param Portfolio $portfolio * @param Collection|PortfolioGuide[] $originalPortfolioGuides */ public function updateGuides(Portfolio $portfolio, Collection $originalPortfolioGuides) { $portfolioGuides = $portfolio->getPortfolioGuides(); /** @var PortfolioGuide[] $addedPortfolioGuidesToNotify */ $addedPortfolioGuidesToNotify = array(); /** @var PortfolioGuide[] $removedPortfolioGuidesToNotify */ $removedPortfolioGuidesToNotify = array(); foreach ($portfolioGuides as $portfolioGuide) { if ($originalPortfolioGuides->contains($portfolioGuide)) { $originalPortfolioGuides->removeElement($portfolioGuide); } else { $addedPortfolioGuidesToNotify[] = $portfolioGuide; } } foreach ($originalPortfolioGuides as $originalPortfolioGuide) { $this->entityManager->remove($originalPortfolioGuide); $removedPortfolioGuidesToNotify[] = $originalPortfolioGuide; } $this->persistPortfolio($portfolio); foreach ($addedPortfolioGuidesToNotify as $addedPortfolioGuide) { $portfolioAddGuideEvent = new PortfolioAddGuideEvent($portfolio, $addedPortfolioGuide); $this->dispatch($portfolioAddGuideEvent); } foreach ($removedPortfolioGuidesToNotify as $removedPortfolioGuide) { $portfolioAddGuideEvent = new PortfolioRemoveGuideEvent($portfolio, $removedPortfolioGuide); $this->dispatch($portfolioAddGuideEvent); } }
/** * @param Portfolio $portfolio * * @return bool True on successfull processing, false otherwise */ public function handleGuides(Portfolio $portfolio) { $originalPortfolioGuides = $portfolio->getPortfolioGuides(); $form = $this->getGuidesForm($portfolio); $request = $this->requestStack->getCurrentRequest(); if ($request->isMethod('POST')) { $form->submit($request); if ($form->isValid()) { $this->portfolioManager->updateGuides($portfolio, $originalPortfolioGuides); return true; } } return false; }