/**
  * отправляется запрос в базу локального сервера для окончательной проверки доступности для бронирования
  */
 public function chekBookingBeforeSave(&$order, &$cart)
 {
     $db_local = JDatabase::getInstance(VipLocalApi::getDbConnectOptions());
     $db = JFactory::getDBO();
     $user = JFactory::getUser();
     $adv_user = JSFactory::getUser();
     $adv_user = JSFactory::getTable('usershop', 'jshop');
     $adv_user->load($user->id);
     $order->country = $adv_user->country;
     $order->f_name = $adv_user->f_name;
     $order->l_name = $adv_user->l_name;
     $order->email = $adv_user->email;
     $order->phone = $adv_user->phone;
     //		echo'<pre>';print_r($user);echo'</pre>';//die;
     //		echo'<pre>';print_r($adv_user);echo'</pre>';//die;
     //		echo'<pre>';print_r($order);echo'</pre>';die;
     $product_id_local = $cart->products[0]['ean'];
     $product_id = $cart->products[0]['product_id'];
     $category_id = $cart->products[0]['category_id'];
     $booking_date_info = $cart->products[0]['free_attributes_value'];
     //$date_from = '31-10-2015';
     $date_from = str_replace('/', '-', $booking_date_info[0]->value);
     $date_to = str_replace('/', '-', $booking_date_info[1]->value);
     //проверяем только локальный сервер, так как на WuBook-е установлена нотификация каждого нового бронирования.
     $object_is_free_on_local = $this->chekBookingOnLocal($db_local, $product_id_local, $date_from, $date_to);
     //$object_is_free_on_local = true;
     //повторно проверяем по базе сайта, чтобы никто не забронил номер пока пользователь "копается"
     $object_is_free_on_site = $this->chekBookingOnSite($db, $product_id, $date_from, $date_to);
     if ($object_is_free_on_local == true && $object_is_free_on_site == true) {
         //заменяем разделитеть даты
         $date_from = str_replace('/', '-', $date_from);
         $date_to = str_replace('/', '-', $date_to);
         //			echo'<pre>';print_r($product_id_local);echo'</pre>';//die;
         //			echo'<pre>';print_r($date_from);echo'</pre>';//die;
         //			echo'<pre>';print_r($date_to);echo'</pre>';//die;
         //			echo'<pre>';print_r($order);echo'</pre>';die;
         //			echo'<pre>';print_r($db_local);echo'</pre>';die;
         $k_zajav = VipLocalApi::addBookingOnLocalServer($db_local, $product_id_local, $date_from, $date_to, $order, VipLocalApi::ON_BOOKING_FROM_SITE_PRIM_PREFIX);
         //echo'<pre>';var_dump($k_zajav);echo'</pre>';die;
         $session = JFactory::getSession();
         $session->set("k_zajav", $k_zajav);
     } else {
         $cart->clear();
         $mainframe = JFactory::getApplication();
         JError::raiseNotice(100, _JSHOP_OBJECT_IS_ALREADY_BOOKED);
         $contextfilter = "jshoping.list.front.product.cat." . $category_id;
         $date_from_ = $mainframe->getUserStateFromRequest($contextfilter . 'dfrom', 'dfrom', date('d/m/Y'));
         $date_to_ = $mainframe->getUserStateFromRequest($contextfilter . 'dto', 'dto', date('d/m/Y', time() + 60 * 60 * 24));
         if ($date_from_ == '') {
             $date_from_ = date('d/m/Y');
         }
         if ($date_to_ == '') {
             $date_to_ = date('d/m/Y', time() + 60 * 60 * 24);
         }
         $mainframe->redirect(SEFLink('index.php?option=com_jshopping&view=category&layout=category&task=view&category_id=' . $category_id . '&dfrom=' . $date_from_ . '&dto=' . $date_to_, 1, 1));
     }
 }
예제 #2
0
 /**
  * синхронизация бронирований с сайта на локальный сервер
  */
 public static function synchronizeToLocalBase(&$db, &$db_local)
 {
     $rows = self::getUnsyncedBookings($db);
     $objects = self::getObjectsIds($db, 'product_id');
     //echo'<pre>';print_r($objects);echo'</pre>';die;
     //echo'<pre>';print_r($rows);echo'</pre>';//die;
     /*
     foreach($rows as $key=>$row) {
     	if($key < 12 || $key > 12) unset($rows[$key]);
     }
     */
     //echo'<pre>';print_r($rows);echo'</pre>';die;
     //$answer = "rooms not available";
     foreach ($rows as $key => $row) {
         //echo'<pre>';print_r($row);echo'</pre>';//die;
         $id = (int) $row->id;
         $product_id_local = isset($objects[$row->product_id]) ? $objects[$row->product_id]->product_ean : 0;
         //если ИД локального объекта найден то работаем дальше
         if ($product_id_local > 0) {
             $date_from = date('d-m-Y', $row->dfrom);
             $date_to = date('d-m-Y', $row->dto);
             $order = new stdClass();
             $order->f_name = $row->fname;
             $order->l_name = $row->lname;
             $order->order_add_info = $row->notes;
             /*
             if($row->order_id == 2) {
             	$mystring = 'abc';
             	$findme   = self::ON_BOOKING_FROM_WUBOOK_PRIM_PREFIX;
             	$pos = strpos($order->order_add_info, $findme);
             	if ($pos === false) {
             		$order->order_add_info = self::ON_BOOKING_FROM_WUBOOK_PRIM_PREFIX . $order->order_add_info;
             	}
             }	elseif($row->order_id == 1) {
             	$findme   = self::ON_BOOKING_FROM_LOCAL_PRIM_PREFIX;
             	$pos = strpos($order->order_add_info, $findme);
             	if ($pos === false) {
             		$order->order_add_info = self::ON_BOOKING_FROM_LOCAL_PRIM_PREFIX . $order->order_add_info;
             	}
             }
             */
             if ($row->country == '' || $row->country == '--') {
                 $row->country = 'BY';
             }
             $order->country = self::getCountryIdFromCode2($db, $row->country);
             $order->phone = $row->phone;
             $order->email = $row->email;
             if (self::isObjectFreeOnThisDates($db_local, $product_id_local, $date_from, $date_to)) {
                 $k_zajav = VipLocalApi::addBookingOnLocalServer($db_local, $product_id_local, $date_from, $date_to, $order);
                 if ($k_zajav > 0) {
                     self::setKZajav($db, $k_zajav, $row->id);
                 }
             } else {
                 MainApi::saveWuBookAnswer($db, $id, self::LOCAL_SERVER_ROOM_NOT_AVAILABLE);
             }
         } else {
             MainApi::saveWuBookAnswer($db, $id, self::OBJECT_NOT_FOUND_IN_SITE);
         }
     }
     echo 'synchronizeToLocalBase finished';
     return true;
 }