public function getByItinerary(\Buggl\MainBundle\Entity\Itinerary $itinerary, $period_of_day = 0, $limit = 0, $offset = 0)
 {
     $sql = "SELECT itsd.*  \n\t\t\t\t\tFROM itinerary_to_spot_detail itsd\n\t\t\t\t\tWHERE 1\n\t\t\t\t\t\tAND itsd.itinerary_id = ?\n\t\t\t\t\t\tAND itsd.period_of_day = ?\n\t\t\t\t\t";
     if ($limit > 0) {
         $sql .= "LIMIT ?, ?";
         $params = array($itinerary->getId(), $period_of_day, $offset, $limit);
     } else {
         $params = array($itinerary->getId(), $period_of_day);
     }
     $em = $this->getEntityManager();
     $rsm = new ResultSetMappingBuilder($em);
     $rsm->addRootEntityFromClassMetadata('BugglMainBundle:ItineraryToSpotDetail', 'itsd');
     $query = $this->_em->createNativeQuery($sql, $rsm);
     $query->setParameters($params);
     $result = $query->getResult();
     return $result;
 }
 private function addToItinerary($eguide, $spotDetail, $egts)
 {
     $itinerary = $this->_em->getRepository('BugglMainBundle:Itinerary')->findOneBy(array('e_guide' => $eguide, 'day_num' => $egts->getDayNum()));
     if (!$itinerary) {
         $itinerary = new Itinerary();
         $itinerary->setEGuide($eguide);
         $itinerary->setDayNum($egts->getDayNum());
         $this->_em->persist($itinerary);
         $this->_em->flush();
     }
     $obj = $this->_em->getRepository('BugglMainBundle:ItineraryToSpotDetail')->findOneBy(array('itinerary' => $itinerary, 'spotDetail' => $spotDetail));
     if (!$obj) {
         $lastOrder = $this->_em->getRepository('BugglMainBundle:ItineraryToSpotDetail')->getLastOrderByItineraryAndPeriodOfDay($itinerary, $egts->getPeriodOfDay());
         $order = $lastOrder ? (int) $lastOrder[0]->getOrder() + 1 : 1;
         $obj = new ItineraryToSpotDetail();
         $obj->setItinerary($itinerary);
         $obj->setSpotDetail($spotDetail);
         $obj->setPeriodOfDay($egts->getPeriodOfDay());
         $obj->setOrder($order);
         $obj->setDateAdded($spotDetail->getDateAdded());
         $this->_em->persist($obj);
         $this->_em->flush();
     }
 }
 /** 
  *
  * function that creates itinerary
  */
 public function createItineraryAction(Request $request)
 {
     $slug = $request->get('guide_slug');
     $eguide = $this->getDoctrine()->getRepository('BugglMainBundle:EGuide')->findOneBySlug($slug);
     if (!is_null($eguide)) {
         $itinerary = new Itinerary();
         $itinerary->setEGuide($eguide);
         $itinerary->setDayNum(1);
         $em = $this->getDoctrine()->getEntityManager();
         $em->persist($itinerary);
         $em->flush();
         // set eguide real_duration
         $eguide->setRealDuration(1);
         $em->persist($eguide);
         $em->flush();
         $response = array("message" => "Itinerary successfully created!", "status" => TRUE);
         return new JsonResponse($response, 200);
     }
     $response = array("message" => "An error was encountered when trying to initialize your itinerary!", "status" => FALSE);
     return new JsonResponse($response, 200);
 }
 private function checkItineraryDayCount($eguide, $daynum)
 {
     if ($daynum > 0) {
         $itinerary = $this->getDoctrine()->getRepository('BugglMainBundle:Itinerary')->findOneBy(array('e_guide' => $eguide, 'day_num' => $daynum));
         if (!$itinerary) {
             // echo 'try and save itinerary';
             $itinerary = new Itinerary();
             $itinerary->setEGuide($eguide);
             $itinerary->setDayNum($daynum);
             $em = $this->getDoctrine()->getEntityManager();
             $em->persist($itinerary);
             $em->flush();
         }
     }
 }
 public function getByItinerary(\Buggl\MainBundle\Entity\Itinerary $itinerary = null)
 {
     $em = $this->getEntityManager();
     $rsm = new ResultSetMappingBuilder($em);
     $rsm->addRootEntityFromClassMetadata('BugglMainBundle:SpotDetail', 'sd');
     $sql = "SELECT sd.* FROM spot_detail AS sd \n\t\t\t\t\tLEFT JOIN itinerary_to_spot_detail AS itsd \n\t\t\t\t\tON itsd.spot_detail_id = sd.id \n\t\t\t\tWHERE 1\n\t\t\t\t\tAND itsd.itinerary_id = ?\n\t\t\t\tORDER BY itsd.period_of_day, itsd.`order` ASC";
     $query = $em->createNativeQuery($sql, $rsm);
     $query->setParameters(array($itinerary->getID()));
     // $query->setParameter(1, 34);
     $spotDetails = $query->getResult();
     return $spotDetails;
 }