<?php class HotelServices_model extends CI_Model { public function _consruct(){ parent::_construct(); } public function auth_token_get($token) { $rs = $this->db->select('user_id')->where('auth_token', $token)->get('customer_auth')->row(); if(count($rs) > 0) { return $rs->user_id; } else { return 0; } } public function get_hotel_city_list($data){ try{ $cond = ''; if(isset($data['query']) && !empty($query = urldecode(strtolower($data['query'])))){ $cond = "AND THC.hotel_city_name LIKE '%".$query."%'"; } $sql = "SELECT HC.hotel_city_id FROM hotel_cities AS HC INNER JOIN translator_hotel_city AS THC ON(THC.hotel_city_id=HC.hotel_city_id) WHERE HC.status=1 $cond GROUP BY HC.hotel_city_id"; $count = $this->db->query($sql)->num_rows(); if($count >= 1){ $perPage = 10; $page = (isset($data['page']))?$data['page']:1; $limit = ($page - 1) * $perPage; $meta = array('total_pages'=>ceil($count/$perPage),'total'=>$count, 'current_page'=>$page,'per_page'=>$perPage); $sql = "SELECT THC.hotel_city_id AS id,HC.hotel_city_icon AS image,HC.country FROM translator_hotel_city AS THC INNER JOIN hotel_cities AS HC ON (HC.hotel_city_id=THC.hotel_city_id) WHERE HC.status=1 $cond GROUP BY HC.hotel_city_id LIMIT $limit,$perPage"; $hotelData = $this->db->query($sql)->result_array(); $lang = 'EN'; if(isset($data['auth_token']) && !empty($data['auth_token'])){ $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0) { $countryData = $this->getCountryData($user_id); $lang = $countryData['language_code']; } } foreach ($hotelData as $key => $value) { if(!empty($lanTrans = langTranslator($value['id'],'HCTY'))){ $lanTrans['name'] = (!empty($lanTrans['hotel_city_name_'.$lang]))? $lanTrans['hotel_city_name_'.$lang]: $lanTrans['hotel_city_name_EN']; $hotelData[$key] = array_merge($hotelData[$key],$lanTrans); } } if(count($hotelData) < 0){ $res = array('status'=>0,'message'=>'No Data Found','code'=>'ER10'); } $res = array('status'=>1,'data'=>array('city_list'=>$hotelData,'meta'=>$meta)); }else{ $res = array('status'=>0,'message'=>'No Data Found','code'=>'ER10'); } } catch(Exception $e){ $res = array('status'=>0,'message'=>'Ohh No!! Something Went South!!','code'=>'ER08'); } return $res; } public function hotel_search($data){ try{ $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0) { $trackingId = time().rand(100000,999999); $settings = getSettings(); if(!isset($data['nextToken']) && empty($data['nextToken'])){ $this->db->select('nationality'); $userData = $this->db->get_where('customer',array('customer_id'=>$user_id))->row_array(); $countryData = $this->getCountryData($user_id); } $url = (isset($data['nextToken']) && !empty($data['nextToken']))?"https://trawex.biz/api/hotel_trawexv5/getMoreHotels?user_id=".$settings['trawex_user_id']."&user_password=".$settings['trawex_user_password']."&access=".$settings['trawex_access']."&ip_address=".$settings['trawex_ip_address']."&sessionId=".$data['sessionId']."&nextToken=".$data['nextToken']."&trackingId=".$data['trackingId']."":"https://trawex.biz/api/hotel_trawexv5/hotel_search"; if(!isset($data['nextToken']) && empty($data['nextToken'])){ $postData = array('user_id'=>$settings['trawex_user_id'], 'user_password'=>$settings['trawex_user_password'], 'access'=>$settings['trawex_access'], 'ip_address'=>$settings['trawex_ip_address'], 'trackingId'=>$trackingId,'city_name'=>$data['city_name'], 'country_name'=>$data['country_name'], 'room_count'=>$data['room_count'],'adult'=>$data['adult'], 'child'=>$data['child'],'child_age'=>$data['child_age'], 'checkin'=>$data['checkin'],'checkout'=>$data['checkout'], 'client_nationality'=>$userData['nationality'], 'requiredCurrency'=>'SAR'); } $postFields = (isset($data['nextToken']) && !empty($data['nextToken']))?'':$postData; $result = $this->passToJsonCurl($url,$postFields); if(!empty($result)){ $result = json_decode($result); $result->status->trackingId = (!isset($data['nextToken']) && empty($data['nextToken']))?$trackingId:$data['trackingId']; $data = array("itineraries"=>$result,"currency_symbol"=>$countryData['currency_symbol'], "conversion_rate"=>$countryData['conversion_rate']); $res = array('status'=>1,'data'=>$data); }else{ $res = array('status'=>0,'message'=>'No Data Found','code'=>'ER07'); } }else{ $res = array('status'=>0,'message'=>'User Authentication Error','code'=>'ER10'); } }catch(Exception $e){ $res = array('status'=>0,'message'=>'Ohh No!! Something Went South!!','code'=>'ER08'); } return $res; } public function get_specific_hotel_content($data){ try{ $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0) { $settings = getSettings(); $url = "https://trawex.biz/api/hotel_trawexv5/get_specific_hotel_content?user_id=".$settings['trawex_user_id']."&user_password=".$settings['trawex_user_password']."&access=".$settings['trawex_access']."&ip_address=".$settings['trawex_ip_address']."&sessionId=".$data['sessionId']."&trackingId=".$data['trackingId']."&productId=".$data['productId']."&hotelId=".$data['hotelId'].""; $result = $this->passToJsonCurl($url,''); if(!empty($result)){ $result = json_decode($result,true); $countryData = $this->getCountryData($user_id); $result['trackingId'] = $data['trackingId']; $result['conversion_rate'] = $countryData['conversion_rate']; $result['currency_symbol'] = $countryData['currency_symbol']; $res = array('status'=>1,'data'=>$result); }else{ $res = array('status'=>0,'message'=>'No Data Found','code'=>'ER06'); } }else{ $res = array('status'=>0,'message'=>'User Authentication Error','code'=>'ER10'); } }catch(Exception $e){ $res = array('status'=>0,'message'=>'Ohh No!! Something Went South!!','code'=>'ER08'); } return $res; } public function get_room_rates($data){ try{ $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0){ $settings = getSettings(); $url = "https://trawex.biz/api/hotel_trawexv5/get_room_rates"; $postData = array("user_id"=>$settings['trawex_user_id'],"user_password"=>$settings['trawex_user_password'],"access"=>$settings['trawex_access'],"ip_address"=>$settings['trawex_ip_address'],"TraceId"=>$data['TraceId'],"propertyid"=>$data['propertyid'],"trackingId"=>$data['trackingId'],"sessionId"=>$data['sessionId'],"productId"=>$data['productId'],"TokenId"=>$data['TokenId'],"resultindex"=>$data['resultindex'],"hotelcode"=>$data['hotelcode']); $result = $this->passToJsonCurl($url,$postData); if(!empty($result)){ $result = json_decode($result,true); $countryData = $this->getCountryData($user_id); $result['trackingId'] = $data['trackingId']; $result['conversion_rate'] = $countryData['conversion_rate']; $result['currency_symbol'] = $countryData['currency_symbol']; $res = array('status'=>1,'data'=>$result); }else{ $res = array('status'=>0,'message'=>'No data Found','code'=>'ER06'); } }else{ $res = array('status'=>0,'message'=>'User Authentication Error','code'=>'ER10'); } }catch (Exception $e){ $res = array('status'=>0,'message'=>'Ohh No!! Something Went South!!','code'=>'ER08'); } return $res; } public function get_rate_rules($data){ try{ $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0){ $settings = getSettings(); $url = "https://trawex.biz/api/hotel_trawexv5/get_rate_rules"; $postData = array( "user_id"=>$settings['trawex_user_id'], "user_password"=>$settings['trawex_user_password'], "access"=>$settings['trawex_access'], "ip_address"=>$settings['trawex_ip_address'], "TraceId"=>$data['TraceId'],"propertyid"=>$data['propertyid'], "trackingId"=>$data['trackingId'],"sessionId"=>$data['sessionId'], "productId"=>$data['productId'],"TokenId"=>$data['TokenId'], "resultindex"=>$data['resultindex'],"hotelcode"=>$data['hotelcode'], "allocationDetails"=>$data['allocationDetails'], "booking_token"=>$data['booking_token'], "hotel_name"=>$data['hotel_name'],"infosource"=>$data['infosource'], "meal_code"=>$data['meal_code'], "rate_basis_id"=>$data['rate_basis_id'], "room_code"=>$data['room_code'],"boardCode"=>$data['boardCode'], "roomType_runno"=>$data['roomType_runno']); $result = $this->passToJsonCurl($url,$postData); if(!empty($result)){ $result = json_decode($result,true); $countryData = $this->getCountryData($user_id); $result['trackingId'] = $data['trackingId']; $result['conversion_rate'] = $countryData['conversion_rate']; $result['currency_symbol'] = $countryData['currency_symbol']; $res = array('status'=>1,'data'=>$result); }else{ $res = array('status'=>0,'message'=>'No data Found','code'=>'ER06'); } }else{ $res = array('status'=>0,'message'=>'User Authentication Error','code'=>'ER10'); } } catch(Exception $e){ $res = array('status'=>0,'message'=>'Ohh No!! Something Went South!!','code'=>'ER08'); } return $res; } public function hotel_book($data){ try{ $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0){ $settings = getSettings(); $url = "https://trawex.biz/api/hotel_trawexv5/hotel_book"; $postData = array( "user_id"=>$settings['trawex_user_id'], "user_password"=>$settings['trawex_user_password'], "access"=>$settings['trawex_access'], "ip_address"=>$settings['trawex_ip_address'], "TraceId"=>$data['TraceId'],"propertyid"=>$data['propertyid'], "trackingId"=>$data['trackingId'],"sessionId"=>$data['sessionId'], "productId"=>$data['productId'],"TokenId"=>$data['TokenId'], "resultindex"=>$data['resultindex'],"hotelcode"=>$data['hotelcode'], "changedOccupancy"=>$data['changedOccupancy'], "extrabeds"=>$data['extrabeds'], "guests_details"=>$data['guests_details'],"refcode"=>$data['refcode'], "prebookingtoken"=>$data['prebookingtoken'] ); $result = $this->passToJsonCurl($url,$postData); if(!empty($result)){ $result = json_decode($result,true); $countryData = $this->getCountryData($user_id); $result['trackingId'] = $data['trackingId']; $result['conversion_rate'] = $countryData['conversion_rate']; $result['currency_symbol'] = $countryData['currency_symbol']; $res = array('status'=>1,'data'=>$result); }else{ $res = array('status'=>0,'message'=>'No data Found','code'=>'ER06'); } }else{ $res = array('status'=>0,'message'=>'User Authentication Error','code'=>'ER10'); } } catch(Exception $e){ $res = array('status'=>0,'message'=>'Ohh No!! Something Went South!!','code'=>'ER08'); } return $res; } public function trawex_cancel_booking($data){ try{ $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0){ $settings = getSettings(); $url = "https://trawex.biz/api/hotel_trawexv5/cancel_booking"; $postData = array( "user_id"=>$settings['trawex_user_id'], "user_password"=>$settings['trawex_user_password'], "access"=>$settings['trawex_access'], "ip_address"=>$settings['trawex_ip_address'], 'trackingId'=>$data['trackingId'],'productId'=>$data['productId'], 'supplierConfirmationNum'=>$data['supplierConfirmationNum'], 'reference'=>$data['reference'] ); $result = $this->passToJsonCurl($url,$postData); if(!empty($result)){ $result = json_decode($result,true); $countryData = $this->getCountryData($user_id); $result['trackingId'] = $data['trackingId']; $result['conversion_rate'] = $countryData['conversion_rate']; $result['currency_symbol'] = $countryData['currency_symbol']; $res = array('status'=>1,'data'=>$result); }else{ $res = array('status'=>0,'message'=>'No data Found','code'=>'ER06'); } }else{ $res = array('status'=>0,'message'=>'User Authentication Error','code'=>'ER10'); } } catch(Exception $e){ $re = array('status'=>0,'message'=>'Ohh No!! Something Went South!!','code'=>'ER08'); } return $res; } public function getCountryData($user_id){ $ctryData = ''; if(!empty($user_id)){ $sql = "SELECT CTRY.* FROM customer AS CUST INNER JOIN country AS CTRY ON (CTRY.country_id=CUST.country_id) WHERE CUST.customer_id='$user_id'"; $ctryData = $this->db->query($sql)->row_array(); } if(empty($ctryData)){ $ctryData = $this->db->query("SELECT * FROM country WHERE language_code='EN'")->row_array(); } return $ctryData; } public function passToJsonCurl($url='',$postData=array()){ $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($postData)); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type:application/json')); $result = curl_exec($ch); curl_close($ch); return $result; } } ?>