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