/**
  * @Route("/entry/{url}", name="entry_view")
  * @Template()
  */
 public function indexAction(Request $request, $url)
 {
     $this->getEntry($url);
     if ($this->entry->getWishlist() !== null && $this->entry->getWishlist() != '') {
         $legacyWishlist = true;
         $form = $this->createForm(WishlistType::class, $this->entry);
     } else {
         $legacyWishlist = false;
         $form = $this->createForm(WishlistNewType::class, $this->entry);
     }
     // Log visit on first access
     if ($this->entry->getViewdate() === null) {
         $this->entry->setViewdate(new \DateTime());
         $this->get('doctrine.orm.entity_manager')->flush($this->entry);
     }
     // Log ip address on first access
     if ($this->entry->getIp() === null) {
         $ip = $request->getClientIp();
         $this->entry->setIp($ip);
         $this->get('doctrine.orm.entity_manager')->flush($this->entry);
     }
     if ('POST' === $request->getMethod()) {
         // get current items to compare against items later on
         $currentWishlistItems = new ArrayCollection();
         /** @var WishlistItem $item */
         foreach ($this->entry->getWishlistItems() as $item) {
             $currentWishlistItems->add($item);
         }
         $form->submit($request);
         if ($form->isValid()) {
             // save entries passed and check rank
             $inOrder = true;
             $lastRank = 0;
             $newWishlistItems = $this->entry->getWishlistItems();
             foreach ($newWishlistItems as $item) {
                 $item->setEntry($this->entry);
                 $this->get('doctrine.orm.entity_manager')->persist($item);
                 // keep track of rank
                 if ($item->getRank() < $lastRank) {
                     $inOrder = false;
                 }
                 $lastRank = $item->getRank();
             }
             // remove entries not passed
             foreach ($currentWishlistItems as $item) {
                 if (!$newWishlistItems->contains($item)) {
                     $this->get('doctrine.orm.entity_manager')->remove($item);
                 }
             }
             // For now assume that a save of entry means the list has changed
             $time_now = new \DateTime();
             $this->entry->setWishlistUpdated(true);
             $this->entry->setWishlistUpdatedTime($time_now);
             $this->get('doctrine.orm.entity_manager')->persist($this->entry);
             $this->get('doctrine.orm.entity_manager')->flush();
             if (!$request->isXmlHttpRequest()) {
                 $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('flashes.entry.wishlist_updated'));
                 if (!$inOrder) {
                     // redirect to force refresh of form and entity
                     return $this->redirect($this->generateUrl('entry_view', ['url' => $url]));
                 }
                 if ($legacyWishlist && ($this->entry->getWishlist() === null || $this->entry->getWishlist() === '')) {
                     // started out with legacy, wishlist is empty now, reload page to switch to new wishlist
                     return $this->redirect($this->generateUrl('entry_view', ['url' => $url]));
                 }
             }
             if ($request->isXmlHttpRequest()) {
                 $return = ['responseCode' => 200, 'message' => 'Added!'];
                 return new JsonResponse($return);
             }
         }
     }
     $secret_santa = $this->entry->getEntry();
     $eventDate = date_format($this->entry->getPool()->getEventdate(), 'Y-m-d');
     $oneWeekFromEventDate = date('Y-m-d', strtotime($eventDate . '- 1 week'));
     if (!$request->isXmlHttpRequest()) {
         return ['entry' => $this->entry, 'form' => $form->createView(), 'secret_santa' => $secret_santa, 'oneWeekFromEventDate' => $oneWeekFromEventDate];
     }
 }
 /**
  * @Route("/entry/{url}", name="entry_view")
  * @Template()
  */
 public function indexAction(Request $request, $url)
 {
     $em = $this->getDoctrine()->getManager();
     $this->getEntry($url);
     if ($this->entry->getWishlist() !== null && $this->entry->getWishlist() != '') {
         $legacyWishlist = true;
         $form = $this->createForm(new WishlistType(), $this->entry);
     } else {
         $legacyWishlist = false;
         $form = $this->createForm(new WishlistNewType(), $this->entry);
     }
     // Log visit on first access
     if ($this->entry->getViewdate() === null) {
         $this->entry->setViewdate(new \DateTime());
         $em->flush($this->entry);
     }
     if ('POST' === $request->getMethod()) {
         // get current items to compare against items later on
         $currentWishlistItems = new ArrayCollection();
         /** @var WishlistItem $item */
         foreach ($this->entry->getWishlistItems() as $item) {
             $currentWishlistItems->add($item);
         }
         $form->submit($request);
         if ($form->isValid()) {
             // save entries passed and check rank
             $inOrder = true;
             $lastRank = 0;
             $newWishlistItems = $this->entry->getWishlistItems();
             foreach ($newWishlistItems as $item) {
                 $item->setEntry($this->entry);
                 $em->persist($item);
                 // keep track of rank
                 if ($item->getRank() < $lastRank) {
                     $inOrder = false;
                 }
                 $lastRank = $item->getRank();
             }
             // remove entries not passed
             foreach ($currentWishlistItems as $item) {
                 if (!$newWishlistItems->contains($item)) {
                     $em->remove($item);
                 }
             }
             // For now assume that a save of entry means the list has changed
             $this->entry->setWishlistUpdated(true);
             $em->persist($this->entry);
             $em->flush();
             $translator = $this->get('translator');
             $this->get('session')->getFlashBag()->add('success', $translator->trans('flashes.entry.wishlist_updated'));
             if (!$inOrder) {
                 // redirect to force refresh of form and entity
                 return $this->redirect($this->generateUrl('entry_view', array('url' => $url)));
             }
             if ($legacyWishlist && ($this->entry->getWishlist() === null || $this->entry->getWishlist() === '')) {
                 // started out with legacy, wishlist is empty now, reload page to switch to new wishlist
                 return $this->redirect($this->generateUrl('entry_view', array('url' => $url)));
             }
         }
     }
     $secret_santa = $this->entry->getEntry();
     return array('entry' => $this->entry, 'form' => $form->createView(), 'secret_santa' => $secret_santa);
 }