コード例 #1
0
 public function bookingAction(Request $request, $destination, $hostal)
 {
     /****Check language session*******/
     $session = $request->getSession();
     $this->langsession($session);
     $lan = $session->get('language');
     $request->setLocale($lan);
     if ($session->get('booking')) {
         $session->remove('booking');
     }
     $em = $this->container->get('doctrine')->getManager();
     $destination_query = $em->createQuery("SELECT d FROM MytripAdminBundle:Destination d WHERE d.status='Active' AND d.url='" . $destination . "'");
     $destinations = $destination_query->getArrayResult();
     if (empty($destinations)) {
         return $this->redirect($this->generateUrl('mytrip_user_destination'));
     }
     $hostal_query = $em->createQuery("SELECT h FROM MytripAdminBundle:Hostal h WHERE h.status='Active' AND h.url='" . $hostal . "'");
     $hostals = $hostal_query->getArrayResult();
     if (empty($hostals)) {
         return $this->redirect($this->generateUrl('mytrip_user_destination'));
     }
     $hostal_content_query = $em->createQuery("SELECT d FROM MytripAdminBundle:HostalContent d WHERE d.lan='{$lan}' AND d.hostal=" . $hostals[0]['hostalId']);
     $hostal_content = $hostal_content_query->getArrayResult();
     if (empty($hostal_content)) {
         $hostal_content_query = $em->createQuery("SELECT d FROM MytripAdminBundle:HostalContent d WHERE d.lan='en' AND d.hostal=" . $hostals[0]['hostalId']);
         $hostal_content = $hostal_content_query->getArrayResult();
     }
     $hostal_rooms = $em->createQuery("SELECT d FROM MytripAdminBundle:HostalRooms d WHERE d.hostal=" . $hostals[0]['hostalId'])->getResult();
     if ($request->getMethod() == "POST") {
         $available = $this->availabilitychecking($request->request->get('checkin'), $request->request->get('checkout'), $hostals[0]['hostalId'], count($hostal_rooms));
         if ($available['avl'] == "1") {
             if ($session->get('user') == '') {
                 $emailcheck = $em->createQuery("SELECT p FROM MytripAdminBundle:User p WHERE p.email='" . $request->request->get('email') . "'")->getArrayResult();
                 if (empty($emailcheck)) {
                     $randno = sha1($this->str_rand() . date('Y-m-d H:i:s'));
                     $password = $request->request->get('password');
                     $member = new \Mytrip\AdminBundle\Entity\User();
                     $user_name = $request->request->get('firstname') . ' ' . $request->request->get('lastname');
                     $address = $request->request->get('address') . ', ' . $request->request->get('city');
                     $member->setFirstname($request->request->get('firstname'));
                     $member->setLastname($request->request->get('lastname'));
                     $member->setEmail($request->request->get('email'));
                     $member->setPassword(sha1($password));
                     $member->setGender($request->request->get('gender'));
                     $member->setPhone($request->request->get('phone'));
                     $member->setMobile($request->request->get('mobile'));
                     $member->setAddress($request->request->get('address'));
                     $member->setCountry($request->request->get('country'));
                     $member->setProvince($request->request->get('province'));
                     $member->setCity($request->request->get('city'));
                     $member->setZip($request->request->get('zip'));
                     $member->setLan($lan);
                     $member->setUserKey($randno);
                     $member->setStatus('Pending');
                     $member->setCreatedDate(new \DateTime(date('Y-m-d H:i:s')));
                     $member->setModifyDate(new \DateTime(date('Y-m-d H:i:s')));
                     $em->persist($member);
                     $em->flush();
                     $uid = $member->getUserId();
                     $user_temp = $em->createQuery("SELECT p FROM MytripAdminBundle:User p WHERE p.userId='" . $uid . "' ")->getArrayResult();
                     $session->set('user', $user_temp[0]);
                     $session->set('usertemp', "1");
                     $emaillist = $em->getRepository('MytripAdminBundle:EmailList')->findOneBy(array('emailListId' => '6'));
                     $emailcontent = $em->getRepository('MytripAdminBundle:EmailContent')->findOneBy(array('emailList' => '6', 'lan' => $lan));
                     if (!empty($emailcontent)) {
                         $emailcontent = $em->getRepository('MytripAdminBundle:EmailContent')->findOneBy(array('emailList' => '6', 'lan' => 'en'));
                     }
                     $link = $this->getRequest()->getSchemeAndHttpHost() . "/" . $this->container->get('router')->getContext()->getBaseUrl() . "/" . $this->generateUrl('mytrip_user_confirm') . "?u_my_code=" . $randno . "_" . sha1($uid);
                     $message = str_replace(array('{name}', '{username}', '{password}', '{link}'), array($request->request->get('firstname') . ' ' . $request->request->get('lastname'), $request->request->get('email'), $password, $link), $emailcontent->getEmailContent());
                     $subject = str_replace(array('{name}', '{username}', '{password}', '{link}'), array($request->request->get('firstname') . ' ' . $request->request->get('lastname'), $request->request->get('email'), $password, $link), $emailcontent->getSubject());
                     /*******signup mail send to admin***********/
                     $this->mailsend($emaillist->getFromname(), $emaillist->getFromemail(), $request->request->get('email'), $subject, $message, $emaillist->getCcmail());
                 } else {
                     $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('Email id already exists'));
                     $session->set('booking', $request->request);
                 }
             } else {
                 $buser = $session->get('user');
                 $uid = $buser['userId'];
                 $busers = $em->createQuery("SELECT p FROM MytripAdminBundle:User p  WHERE  p.userId='" . $uid . "'")->getArrayResult();
                 if ($busers[0]['province'] != '') {
                     $province = $em->createQuery("SELECT d FROM MytripAdminBundle:States d WHERE d.sid=" . $busers[0]['province'])->getArrayResult();
                 }
                 if ($busers[0]['country'] != '') {
                     $country = $em->createQuery("SELECT d FROM MytripAdminBundle:Country d WHERE d.cid=" . $busers[0]['country'])->getArrayResult();
                 }
                 $user_name = $busers[0]['firstname'] . ' ' . $busers[0]['lastname'];
                 $address = $busers[0]['address'] . ', ' . $busers[0]['city'] . ', ' . ($busers[0]['province'] != '' ? $province[0]['state'] . ', ' : '') . ($busers[0]['country'] != '' ? $country[0]['country'] : '');
             }
             $rooms_data = '| ';
             if (!empty($uid)) {
                 $booking = new \Mytrip\AdminBundle\Entity\Booking();
                 $booking->setHostal($this->getDoctrine()->getRepository('MytripAdminBundle:Hostal')->find($hostals[0]['hostalId']));
                 $guests = $adults = $children = $count = $price = 0;
                 foreach ($hostal_rooms as $room) {
                     $id = $room->getRoomId();
                     $selected = $request->request->get("selected_rooms");
                     if (isset($selected[$id])) {
                         $booking->addRoom($room);
                         $guests += $room->getGuests();
                         $adults += $room->getAdults();
                         $children += $room->getChild();
                         $price += $room->getPrice();
                         $count++;
                         $rooms_data .= $room->getRoomtype() . ' | ';
                     }
                 }
                 $booking->setUser($this->getDoctrine()->getRepository('MytripAdminBundle:User')->find($uid));
                 $booking->setFromDate(new \DateTime($request->request->get('checkin')));
                 $booking->setToDate(new \DateTime($request->request->get('checkout')));
                 $booking->setNoOfDays($this->noofdays($request->request->get('checkin'), $request->request->get('checkout')));
                 $booking->setNoOfRooms($count);
                 $booking->setGuests($guests);
                 $booking->setAdults($adults);
                 $booking->setChild($children);
                 $booking->setCreatedDate(new \DateTime(date('Y-m-d H:i:s')));
                 $booking->setStatus('Pending');
                 $em->persist($booking);
                 $em->flush();
                 $booking_id = $booking->getBookingId();
                 $booking_info = new \Mytrip\AdminBundle\Entity\BookingInfo();
                 $booking_info->setBooking($this->getDoctrine()->getRepository('MytripAdminBundle:Booking')->find($booking_id));
                 $booking_info->setFirstname($request->request->get('firstname'));
                 $booking_info->setLastname($request->request->get('lastname'));
                 $booking_info->setEmail($request->request->get('email'));
                 $booking_info->setGender($request->request->get('gender'));
                 $booking_info->setCccode($request->request->get('cccode') * 1);
                 $booking_info->setPhone($request->request->get('phone'));
                 $booking_info->setCmcode($request->request->get('cmcode') * 1);
                 $booking_info->setMobile($request->request->get('mobile'));
                 $booking_info->setAddress($request->request->get('address'));
                 $booking_info->setAddress1($request->request->get('address1'));
                 $booking_info->setCountry($request->request->get('country'));
                 $booking_info->setProvince($request->request->get('province'));
                 $booking_info->setZip($request->request->get('zip'));
                 $booking_info->setCity($request->request->get('city'));
                 $em->persist($booking_info);
                 $em->flush();
                 $booking_price = new \Mytrip\AdminBundle\Entity\BookingPrice();
                 $booking_price->setBooking($this->getDoctrine()->getRepository('MytripAdminBundle:Booking')->find($booking_id));
                 $totalprice = $price * $this->noofdays($request->request->get('checkin'), $request->request->get('checkout'));
                 $booking_price->setTotalPrice($totalprice);
                 $booking_price->setDefaultCurrency('CAD');
                 $conversion = $this->currencyconversion();
                 $booking_price->setConversionRate($conversion['conversionrate']);
                 $booking_price->setConversionPrice($conversion['conversionrate'] * $totalprice);
                 $booking_price->setConversionCurrency($conversion['currency']);
                 $em->persist($booking_price);
                 $em->flush();
                 $session->set('bookingId', $booking_id);
                 /*******Contact mail send to admin***********/
                 $this->mailsend("Mytrip Cuba", "*****@*****.**", $request->request->get('email'), $this->get('translator')->trans('Booking Details'), '', '', 0, '', 'prebook');
                 $login = $this->container->get('mytrip_admin.helper.sms')->getOption('smsusername');
                 $password = $this->container->get('mytrip_admin.helper.sms')->getOption('smspassword');
                 $prefix = $request->request->get('cmcode');
                 $number = $request->request->get('mobile');
                 $msg = urlencode($this->get('translator')->trans('Dear Customer, We thank you for making a reservation in our site. Your reference no is') . ' ' . "venacuba-" . $booking_id * 1024);
                 $URL = "http://api.smsacuba.com/api10allcountries.php?";
                 $URL .= "login="******"&password="******"&prefix=" . $prefix . "&number=" . $number . "&sender=Mytriptocuba" . "&msg=" . $msg;
                 $r = @file($URL);
                 $succmsg = $r[0];
                 /**Pre-booking send to the hostal owner email id***/
                 $emaillist = $em->getRepository('MytripAdminBundle:EmailList')->findOneBy(array('emailListId' => '8'));
                 $emailcontent = $em->getRepository('MytripAdminBundle:EmailContent')->findOneBy(array('emailList' => '8', 'lan' => $lan));
                 if (empty($emailcontent)) {
                     $emailcontent = $em->getRepository('MytripAdminBundle:EmailContent')->findOneBy(array('emailList' => '8', 'lan' => 'en'));
                 }
                 $setting = $em->createQuery("SELECT p FROM MytripAdminBundle:Settings p")->getArrayResult();
                 if ($hostals[0]['ownerEmail'] != '') {
                     $message = str_replace(array('{owner_name}', '{hostal_name}', '{check_in}', '{check_out}', '{rooms}', '{nights}', '{username}', '{address}', '{accommodation_cost}', '{reservation_charge}', '{total_cost}', '{ref_no}'), array($hostal_content[0]['ownerName'], $hostal_content[0]['name'], $request->request->get('checkin'), $request->request->get('checkout'), $rooms_data, $this->noofdays($request->request->get('checkin'), $request->request->get('checkout')), $user_name, $address, number_format($totalprice * $conversion['conversionrate'], 2) . ' ' . $conversion['currency'], number_format($totalprice * $setting[0]['reservationCharge'] / 100, 2) . ' ' . $conversion['currency'], number_format($totalprice + $totalprice * $setting[0]['reservationCharge'] / 100 * $conversion['conversionrate'], 2) . ' ' . $conversion['currency'], "venacuba-" . $booking_id * 1024), $emailcontent->getEmailContent());
                     $subject = str_replace(array('{owner_name}', '{hostal_name}', '{check_in}', '{check_out}', '{rooms}', '{nights}', '{username}', '{address}', '{accommodation_cost}', '{reservation_charge}', '{total_cost}', '{ref_no}'), array($hostal_content[0]['ownerName'], $hostal_content[0]['name'], $request->request->get('checkin'), $request->request->get('checkout'), $rooms_data, $this->noofdays($request->request->get('checkin'), $request->request->get('checkout')), $user_name, $address, number_format($totalprice * $conversion['conversionrate'], 2) . ' ' . $conversion['currency'], number_format($totalprice * $setting[0]['reservationCharge'] / 100, 2) . ' ' . $conversion['currency'], number_format($totalprice + $totalprice * $setting[0]['reservationCharge'] / 100 * $conversion['conversionrate'], 2) . ' ' . $conversion['currency'], "venacuba-" . $booking_id * 1024), $emailcontent->getSubject());
                     $this->mailsend($emaillist->getFromname(), $emaillist->getFromemail(), $hostals[0]['ownerEmail'], $subject, $message, $emaillist->getCcmail());
                 }
                 if ($hostals[0]['cmcode'] != '' && $hostals[0]['mobile'] != '') {
                     /**Pre-booking send to the hostal owner mobile***/
                     $prefix = $hostals[0]['cmcode'];
                     $number = $hostals[0]['mobile'];
                     $msg = urlencode($this->get('translator')->trans('Dear ' . $hostal_content[0]['ownerName'] . ', ' . $user_name . ' has pre-booking in the ' . $hostal_content[0]['name'] . '. Reference no is') . ' ' . "venacuba-" . $booking_id * 1024);
                     $msg = urlencode($this->get('translator')->trans('Estimado(a) ' . $hostal_content[0]['ownerName'] . ', ' . $user_name . ' tiene una pre-reserva en ' . $hostal_content[0]['name'] . '. No de referencia ') . ' ' . "venacuba-" . $booking_id * 1024);
                     $URL = "http://api.smsacuba.com/api10allcountries.php?";
                     $URL .= "login="******"&password="******"&prefix=" . $prefix . "&number=" . $number . "&sender=Mytriptocuba" . "&msg=" . $msg;
                     $r = @file($URL);
                     $succmsg = $r[0];
                 }
                 /**Pre-booking send to the Site Admin owner email id***/
                 $emaillist = $em->getRepository('MytripAdminBundle:EmailList')->findOneBy(array('emailListId' => '9'));
                 $emailcontent = $em->getRepository('MytripAdminBundle:EmailContent')->findOneBy(array('emailList' => '9', 'lan' => $lan));
                 if (empty($emailcontent)) {
                     $emailcontent = $em->getRepository('MytripAdminBundle:EmailContent')->findOneBy(array('emailList' => '9', 'lan' => 'en'));
                 }
                 $admin = $em->createQuery("SELECT p FROM MytripAdminBundle:Admin p WHERE p.adminId='1'")->getArrayResult();
                 $setting = $em->createQuery("SELECT p FROM MytripAdminBundle:Settings p")->getArrayResult();
                 $message = str_replace(array('{admin_name}', '{owner_name}', '{hostal_name}', '{check_in}', '{check_out}', '{rooms}', '{nights}', '{username}', '{address}', '{accommodation_cost}', '{reservation_charge}', '{total_cost}', '{ref_no}'), array($admin[0]['name'], $hostal_content[0]['ownerName'], $hostal_content[0]['name'], $request->request->get('checkin'), $request->request->get('checkout'), $rooms_data, $this->noofdays($request->request->get('checkin'), $request->request->get('checkout')), $user_name, $address, number_format($totalprice * $conversion['conversionrate'], 2) . ' ' . $conversion['currency'], number_format($totalprice * $setting[0]['reservationCharge'] / 100, 2) . ' ' . $conversion['currency'], number_format($totalprice + $totalprice * $setting[0]['reservationCharge'] / 100 * $conversion['conversionrate'], 2) . ' ' . $conversion['currency'], "venacuba-" . $booking_id * 1024), $emailcontent->getEmailContent());
                 $subject = str_replace(array('{admin_name}', '{owner_name}', '{hostal_name}', '{check_in}', '{check_out}', '{rooms}', '{nights}', '{username}', '{address}', '{accommodation_cost}', '{reservation_charge}', '{total_cost}', '{ref_no}'), array($admin[0]['name'], $hostal_content[0]['ownerName'], $hostal_content[0]['name'], $request->request->get('checkin'), $request->request->get('checkout'), $rooms_data, $this->noofdays($request->request->get('checkin'), $request->request->get('checkout')), $user_name, $address, number_format($totalprice * $conversion['conversionrate'], 2) . ' ' . $conversion['currency'], number_format($totalprice * $setting[0]['reservationCharge'] / 100, 2) . ' ' . $conversion['currency'], number_format($totalprice + $totalprice * $setting[0]['reservationCharge'] / 100 * $conversion['conversionrate'], 2) . ' ' . $conversion['currency'], "venacuba-" . $booking_id * 1024), $emailcontent->getSubject());
                 $this->mailsend($emaillist->getFromname(), $emaillist->getFromemail(), $admin[0]['email'], $subject, $message, $emaillist->getCcmail());
                 if ($admin[0]['cmcode'] != '' && $admin[0]['mobile'] != '') {
                     /**Pre-booking send to the Site Admin owner mobile***/
                     $prefix = $admin[0]['cmcode'];
                     $number = $admin[0]['mobile'];
                     $msg = urlencode($this->get('translator')->trans('Dear ' . $admin[0]['name'] . ', ' . $user_name . ' has pre-booking in the ' . $hostal_content[0]['name'] . '. Reference no is') . ' ' . "venacuba-" . $booking_id * 1024);
                     $URL = "http://api.smsacuba.com/api10allcountries.php?";
                     $URL .= "login="******"&password="******"&prefix=" . $prefix . "&number=" . $number . "&sender=Mytriptocuba" . "&msg=" . $msg;
                     $r = @file($URL);
                     $succmsg = $r[0];
                 }
                 $session->remove('bookingId');
                 if ($succmsg == "SMS ENVIADO") {
                     $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('Rooms booking successfull. Booking details sent to your mail id and SMS.'));
                 } else {
                     $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('Rooms booking successfull. Booking details sent to your mail id.'));
                 }
                 if ($session->get('usertemp') != '') {
                     $session->remove('user');
                     $session->remove('usertemp');
                 }
                 if ($session->get('user') != '') {
                     return $this->redirect($this->generateUrl('mytrip_user_makepayment', array('bookingId' => $booking_id * 1024)));
                 } else {
                     $this->get('session')->getFlashBag()->add('success', $this->get('translator')->trans('Successfully Registered. Confirmation link sent to your mail id.') . ' ' . $this->get('translator')->trans('Once complete your registration process, you can make the payment of booking room'));
                     return $this->redirect($this->generateUrl('mytrip_user_homepage'));
                 }
             }
         } else {
             $this->get('session')->getFlashBag()->add('success', $available['msg']);
             $session->set('booking', $request->request);
             //return $this->redirect($request->server->get('HTTP_REFERER'));
         }
     }
     $country = $em->createQuery("SELECT p FROM MytripAdminBundle:Country p")->getArrayResult();
     $book_content = $em->createQuery("SELECT p FROM MytripAdminBundle:StaticpageContent p  WHERE p.lan='{$lan}' AND p.staticpage=20 ")->getArrayResult();
     if (empty($book_content)) {
         $book_content = $em->createQuery("SELECT p FROM MytripAdminBundle:StaticpageContent p  WHERE p.lan='en' AND p.staticpage=20")->getArrayResult();
     }
     $seo['title'] = $book_content[0]['pageTitle'];
     $seo['metadescription'] = $book_content[0]['metaDescription'];
     $seo['metakeywords'] = $book_content[0]['metaKeyword'];
     return $this->render('MytripUserBundle:Default:booking.html.php', array('seo' => $seo, 'hostals' => $hostals, 'destinations' => $destinations, 'country' => $country, 'hostal_content' => $hostal_content, 'hostal_rooms' => $hostal_rooms, 'language' => $this->language(), 'soacillink' => $this->getsociallink()));
 }