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())); }