diff --git a/application/controllers/Api.php b/application/controllers/Api.php index 65945c7..f645666 100644 --- a/application/controllers/Api.php +++ b/application/controllers/Api.php @@ -156,7 +156,8 @@ class Api extends CI_Controller { public function bookedlist() { $data = (array) json_decode(file_get_contents('php://input')); $data['auth_token'] = $this->auth_token; - $res = $this->Api_model->bookedlist($data); + $res_count = $this->Webservice_model->bookedlist($data,0,0); + $res = $this->Api_model->bookedlist($data,10,'',$res_count); if($res['status']!=0){ $this->response($res['data']); } diff --git a/application/controllers/Webservice.php b/application/controllers/Webservice.php index b4613a9..fae3470 100644 --- a/application/controllers/Webservice.php +++ b/application/controllers/Webservice.php @@ -311,7 +311,8 @@ class Webservice extends CI_Controller { public function get_booking_list() { $data = $_GET; $data['auth_token'] = $this->auth_token; - $res = $this->Webservice_model->bookedlist($data); + $res_count = $this->Webservice_model->bookedlist($data,0,0); + $res = $this->Webservice_model->bookedlist($data,10,'',$res_count); if(sizeof($res['data']) && $res['status']!=0){ $this->responseBookList($res['data']); }elseif(sizeof($res['data'] == 0) && $res['status']!=0){ diff --git a/application/models/Api_model.php b/application/models/Api_model.php index f7a4227..39a0b51 100644 --- a/application/models/Api_model.php +++ b/application/models/Api_model.php @@ -367,52 +367,50 @@ class Api_model extends CI_Model { return $res; } - function bookedlist($data) { + function bookedlist($data,$per_page='',$page ='',$count ='') { try { - $per_page = 10; $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0) { - $sql = "SELECT id FROM booking - WHERE customer_id='$user_id' AND status IN (0,1,2) - GROUP BY booking.id"; - $count = $this->db->query($sql)->num_rows(); - - if($count > 0) { - $page = 1; - if(isset($data['page'])) { - $page = $data['page']; - } - $page_limit = ($page - 1) * $per_page; - - if($count > $page_limit) { - $sql = "SELECT booking.id AS book_id,booking.event_id,booking.bookId AS bookingCode, - booking.qrcode,booking.no_of_ticket,booking.amount,venue.location, - booking.status AS book_status,event_gallery.media_url, - venue.id AS venue_id,event_date_time.date AS event_date, - event_date_time.time AS event_time - FROM booking - JOIN events ON booking.event_id=events.event_id - JOIN event_date_time ON booking.event_date_id=event_date_time.id - JOIN venue ON venue.id=events.venue_id - LEFT JOIN event_gallery ON events.event_id=event_gallery.event_id AND - event_gallery.media_type=0 - WHERE customer_id='$user_id' AND booking.status IN(0,1,2,6) - GROUP BY booking.id ORDER BY booking.id DESC LIMIT 10"; - $result = $this->db->query($sql)->result_array(); - - if(!empty($result)){ - foreach ($result AS $key => $data) { - $eData = langTranslator($data['event_id'],'EVT'); - $result[$key] = array_merge($result[$key],$eData); - $vData = langTranslator($data['venue_id'],'VEN'); - $result[$key] = array_merge($result[$key],$vData); - } - } - + if($page == 0 && $per_page == 0){ + $page = $page; + }else{ + $page = (isset($data['page']))? $data['page']:1; + } + $page_limit = ($page - 1) * $per_page; + $cond =($per_page == 0 && $page == 0)?'':"LIMIT $page_limit, $per_page"; + + $bookedData = $this->db->query(" + SELECT ODR.order_id,ODR.order_type,ODR.booking_id FROM orders AS ODR + LEFT JOIN booking AS BOK ON + (ODR.booking_id=BOK.bookId AND BOK.status IN (0,1,2,3,5,6) AND + BOK.customer_id='$user_id') + LEFT JOIN flight_booking AS FBK ON + (ODR.booking_id=FBK.flight_book_id AND FBK.status IN (0,1,2,3,5) AND + FBK.customer_id='$user_id') + LEFT JOIN hotel_booking AS HBK ON + (ODR.booking_id=HBK.hotel_book_id AND HBK.status IN (0,1,2,3,5) AND + HBK.customer_id='$user_id') + GROUP BY ODR.order_id $cond"); + if($per_page == 0 && $page == 0){ + return $bookedData->num_rows(); + } + if(count($bookedData) > 0) { + if($count > $page_limit) { + $bookData = array(); + foreach (($bookedData = $bookedData->result_array()) as $key => $value) { + switch($value['order_type']){ + case 1 : $resp = $this->getEventData($value['booking_id'],$user_id);break; + case 2 : $resp = $this->getHotelData($value['booking_id'],$user_id);break; + case 3 : $resp = $this->getFlightData($value['booking_id'],$user_id);break; + } + if(!empty($resp)){ + $bookData[] = $resp; + } + } $meta = array('total_pages'=>ceil($count/$per_page),'total'=>$count, 'current_page'=>$page,'per_page'=>$per_page); - $response = array('data'=>$result,'meta'=>$meta); + $response = array('data'=>$bookData,'meta'=>$meta); $res = array('status'=>1,'data'=>$response); } else { $res = array('status'=>0,'message'=>'No records found','code'=>'ER13'); @@ -429,6 +427,79 @@ class Api_model extends CI_Model { return $res; } + function getEventData($booking_id='',$user_id=''){ + $countryData = $this->getCountryData($user_id); + $lang = $countryData['language_code']; + $sql = "SELECT booking.id AS book_id,booking.bookId AS bookingCode,booking.amount, + event_date_time.date AS event_date,translator_event.event_name,booking.qrcode, + venue.location,event_date_time.time AS event_time,booking.event_id, + event_gallery.media_url,booking.no_of_ticket,events.has_payment, + venue.id AS venue_id,booking.status AS book_status + FROM booking + INNER JOIN events ON booking.event_id = events.event_id + INNER JOIN event_date_time ON booking.event_date_id = event_date_time.id + INNER JOIN venue ON venue.id = events.venue_id + LEFT JOIN event_gallery ON events.event_id=event_gallery.event_id AND + event_gallery.media_type=0 + INNER JOIN translator_event ON translator_event.event_id=events.event_id + INNER JOIN translator_venue ON translator_venue.venue_id = events.venue_id + -- LEFT JOIN transaction ON transaction.booking_id=booking.bookId + WHERE (translator_event.language_code='$lang' OR translator_event.language_code='EN'). + AND booking.bookId='$booking_id' AND events.has_payment != '1' + AND transaction.status = '1'"; + + return $this->db->query($sql)->row_array(); + } + + function getHotelData($booking_id='',$user_id=''){ + $sql = "SELECT HBK.id AS event_id, HBK.hotel_book_id AS bookingCode,HBK.price AS amount, + HBK.checkin AS event_date,HBK.hotel_name AS event_name,HBK.qrcode, + HBK.hotel_image AS media_url,HBK.status AS book_status,HBK.traveller_details + FROM hotel_booking AS HBK + -- LEFT JOIN transaction AS TRS ON TRS.booking_id=HBK.hotel_book_id + WHERE HBK.hotel_book_id='$booking_id'"; + + $hotelData = $this->db->query($sql)->row_array(); + if(empty($hotelData)){ + return; + } + $trvlDtls = (isset($hotelData['traveller_details']) && !empty($hotelData['traveller_details']))?json_decode($hotelData['traveller_details']):''; + $hotelData['location'] = (!empty($trvlDtls) && isset($trvlDtls->hotel_address))?$trvlDtls->hotel_address:''; + $hotelData['no_of_ticket'] = (!empty($trvlDtls) && isset($trvlDtls->roomDetails->room))?$trvlDtls->roomDetails->room.' Room':''; + $hotelData['event_time'] = '11:00'; + $hotelData['book_id'] = $hotelData['event_id']; + $hotelData['venue_id'] = $hotelData['event_id']; + $hotelData['has_payment'] = 1; + unset($hotelData['traveller_details']); + return $hotelData; + } + + function getFlightData($booking_id='',$user_id=''){ + $sql = "SELECT FBK.id AS event_id,FBK.flight_book_id AS bookingCode,HBK.price AS amount, + FBK.departure_date AS event_date,FBK.flight_name AS event_name,FBK.qrcode, + FBK.flight_image AS media_url,FBK.status AS booking_status, + FBK.traveller_details + FROM flight_booking AS FBK + -- LEFT JOIN transaction AS TRS ON TRS.booking_id=FBK.flight_book_id + WHERE FBK.flight_book_id='$booking_id'"; + + $flightData = $this->db->query($sql)->row_array(); + if(empty($flightData)){ + return; + } + $trvlDtls = (isset($flightData['traveller_details']) && !empty($flightData['traveller_details']))?json_decode($flightData['traveller_details']):''; + $flightData['location'] = (!empty($trvlDtls))?$trvlDtls->fromAirportCity.' - '.$trvlDtls->toAirportCity:''; + $flightData['ticket_count'] = (!empty($trvlDtls))?(int)$trvlDtls->passengerDetails->adult + (int)$trvlDtls->passengerDetails->children + (int)$trvlDtls->passengerDetails->infant:''; + $fghtTme = explode("T",$flightData['date']); + unset($flightData['traveller_details'],$flightData['date']); + $flightData['date'] = (isset($fghtTme[0]) && !empty($fghtTme[0]))?$fghtTme[0]:''; + $flightData['time'] = (isset($fghtTme[1]) && !empty($fghtTme[1]))?$fghtTme[1]:''; + $flightData['has_payment'] = 1; + $flightData['book_id'] = $flightData['event_id']; + $flightData['venue_id'] = $flightData['event_id']; + return $flightData; + } + function bookingdetails($data) { try { $user_id = $this->auth_token_get($data['auth_token']); @@ -1806,13 +1877,14 @@ class Api_model extends CI_Model { return; } $bookId = 'HTL'.date('ymd').str_pad(rand(1111,9999),4,0,STR_PAD_LEFT); - - $trvlerDtls = array("roomDetails"=>array("room"=>$bookData['roomCount'],"adult"=>$bookData['adultCount'],"children"=>$bookData['childCount']),"checkin"=>$bookData['checkin'],"checkout"=>$bookData['checkout'],"hotel_address"=>$bookData['hotelAddress']); + $qrcode = genQRcode($bookId); + $trvlerDtls = array("roomDetails"=>array("room"=>$bookData['rooms'],"adult"=>$bookData['adult'],"children"=>$bookData['child']),"checkin"=>$bookData['checkin'],"checkout"=>$bookData['checkout'],"hotel_address"=>$bookData['hotelAddress']); $insert = array('hotel_book_id'=>$bookId,'customer_id'=>$user_id,'hotel_name'=> $bookData['hotelName'],'hotel_image'=>$bookData['hotelImage'],'checkin'=> $bookData['checkin'],'checkout'=>$bookData['checkout'],'price'=> - $bookData['amount'],'request_data'=>json_encode($bookData['requestData']),'traveller_details'=>$trvlerDtls)); + $bookData['amount'],'request_data'=>json_encode($bookData['requestData']),'traveller_details'=>json_encode($trvlerDtls), + 'qrcode'=>$qrcode); $this->db->insert('hotel_booking',$insert); $this->db->insert('orders',array('booking_id'=>$bookId,'order_type'=>'2','created_date'=>date('Y-m-d h:i:s'))); return array('status'=>1,'transaction_id'=>$bookId); @@ -1851,11 +1923,11 @@ class Api_model extends CI_Model { return; } $bookId = 'FBK'.date('ymd').str_pad(rand(1111,9999),4,0,STR_PAD_LEFT); + $qrcode = genQRcode($bookId); $insert = array('flight_book_id'=>$bookId,'customer_id'=>$user_id,'flight_name'=> - $bookData['flightName'],'flight_image'=>$bookData['flightImage'],'departure_date'=> - $bookData['departure_date'],'arrival_date'=>$bookData['arrival_date'],'price'=> - $bookData['amount'],'request_data'=>json_encode($bookData['requestData']), - 'traveller_details'=>json_encode($bookData['requestData']['traveller_details'])); + $bookData['flightName'],'flight_image'=>$bookData['flightImage'], + 'departure_date'=>$bookData['departure_date'],'price'=>$bookData['amount'], + 'arrival_date'=>$bookData['arrival_date'],'request_data'=>json_encode($bookData['requestData']),'traveller_details'=>json_encode($bookData['requestData']['traveller_details']),'qrcode'=>$qrcode); $this->db->insert('flight_booking',$insert); $this->db->insert('orders',array('booking_id'=>$bookId,'order_type'=>'3','created_date'=>date('Y-m-d h:i:s'))); return array('status'=>1,'transaction_id'=>$bookId); diff --git a/application/models/Webservice_model.php b/application/models/Webservice_model.php index 937bd89..b0fb48f 100644 --- a/application/models/Webservice_model.php +++ b/application/models/Webservice_model.php @@ -1428,66 +1428,50 @@ class Webservice_model extends CI_Model { return $res; } - function bookedlist($data) { + + function bookedlist($data,$per_page='',$page ='',$count ='') { try { - $per_page = 10; $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0) { - $count = $this->db->query(" - SELECT ODR.order_id FROM orders AS ODR - INNER JOIN booking AS BOK ON - (ODR.booking_id=BOK.bookId AND BOK.status IN (0,1,2,3,5,6)) - INNER JOIN flight_booking AS FBK ON - (ODR.booking_id=FBK.flight_book_id AND FBK.status IN (0,1,2,3,5)) - INNER JOIN hotel_booking AS HBK ON - (ODR.booking_id=HBK.hotel_book_id AND HBK.status IN (0,1,2,3,5)) - WHERE BOK.customer_id='$user_id' AND EVT.status='1' - GROUP BY ODR.order_id")->num_rows(); - - if($count > 0) { - if(isset($data['page'])) { - $page = $data['page']; - } else { - $page = 1; - } - $page_limit = ($page - 1) * $per_page; + if($page == 0 && $per_page == 0){ + $page = $page; + }else{ + $page = (isset($data['page']))? $data['page']:1; + } + + $page_limit = ($page - 1) * $per_page; + $cond =($per_page == 0 && $page == 0)?'':"LIMIT $page_limit, $per_page"; + + $bookedData = $this->db->query(" + SELECT ODR.order_id,ODR.order_type,ODR.booking_id FROM orders AS ODR + LEFT JOIN booking AS BOK ON + (ODR.booking_id=BOK.bookId AND BOK.status IN (0,1,2,3,5,6) AND + BOK.customer_id='$user_id') + LEFT JOIN flight_booking AS FBK ON + (ODR.booking_id=FBK.flight_book_id AND FBK.status IN (0,1,2,3,5) AND + FBK.customer_id='$user_id') + LEFT JOIN hotel_booking AS HBK ON + (ODR.booking_id=HBK.hotel_book_id AND HBK.status IN (0,1,2,3,5) AND + HBK.customer_id='$user_id') + GROUP BY ODR.order_id $cond"); + if($per_page == 0 && $page == 0){ + return $bookedData->num_rows(); + } + if(count($bookedData) > 0) { if($count > $page_limit) { - $countryData = $this->getCountryData($user_id); - $lang = $countryData['language_code']; - - $sql = "SELECT booking.bookId AS booking_id,event_date_time.date, - translator_event.event_name,booking.qrcode AS event_image, - venue.location,event_date_time.time,booking.event_id, - booking.no_of_ticket AS ticket_count,events.has_payment, - booking.status AS booking_status,transaction.status AS transaction_status - FROM booking - INNER JOIN events ON booking.event_id = events.event_id - INNER JOIN event_date_time ON booking.event_date_id = event_date_time.id - INNER JOIN venue ON venue.id = events.venue_id - INNER JOIN translator_event ON translator_event.event_id=events.event_id - LEFT JOIN transaction ON transaction.booking_id=booking.bookId - WHERE booking.customer_id = '$user_id' AND booking.status IN (0,1,2,6) - AND (translator_event.language_code='$lang' OR - translator_event.language_code='EN') - GROUP BY booking.id - ORDER BY booking.id DESC - LIMIT $page_limit, $per_page"; - $result = $this->db->query($sql)->result_array(); - if(!empty($result)){ - foreach ($result AS $key => $value) { - if($value['has_payment'] == '1' && $value['transaction_status'] != '1'){ - unset($result[$key]); - } + $bookData = array(); + foreach (($bookedData = $bookedData->result_array()) as $key => $value) { + switch($value['order_type']){ + case 1 : $resp = $this->getEventData($value['booking_id'],$user_id);break; + case 2 : $resp = $this->getHotelData($value['booking_id'],$user_id);break; + case 3 : $resp = $this->getFlightData($value['booking_id'],$user_id);break; + } + if(!empty($resp)){ + $bookData[] = $resp; } - $result = array_values($result); } - $meta = array('total_pages'=>ceil($count/$per_page), - 'total'=>$count, - 'current_page'=>$page, - 'per_page'=>$per_page - ); - $response = array('bookings'=>$result,'meta'=>$meta); - $res = array('status'=>1,'data'=>$response); + $meta = array('total_pages'=>ceil($count/$per_page),'total'=>$count,'current_page'=>$page,'per_page'=>$per_page); + $res = array('status'=>1,'data'=>array('bookings'=>$bookData,'meta'=>$meta)); } else { $res = array('status'=>1,'data' => []); } @@ -1503,6 +1487,73 @@ class Webservice_model extends CI_Model { return $res; } + function getEventData($booking_id='',$user_id=''){ + $countryData = $this->getCountryData($user_id); + $lang = $countryData['language_code']; + $sql = "SELECT booking.bookId AS booking_id,event_date_time.date, + translator_event.event_name,booking.qrcode AS event_image, + venue.location,event_date_time.time,booking.event_id, + booking.no_of_ticket AS ticket_count,events.has_payment, + booking.status AS booking_status,transaction.status AS transaction_status + FROM booking + INNER JOIN events ON booking.event_id = events.event_id + INNER JOIN event_date_time ON booking.event_date_id = event_date_time.id + INNER JOIN venue ON venue.id = events.venue_id + INNER JOIN translator_event ON translator_event.event_id=events.event_id + LEFT JOIN transaction ON transaction.booking_id=booking.bookId + WHERE (translator_event.language_code='$lang' OR translator_event.language_code='EN'). + AND booking.bookId='$booking_id' AND events.has_payment != '1' + AND transaction.status = '1'"; + + return $this->db->query($sql)->row_array(); + } + + function getHotelData($booking_id='',$user_id=''){ + $sql = "SELECT HBK.hotel_book_id AS bookId,HBK.hotel_name AS event_name, + HBK.qrcode AS event_image,HBK.checkin AS date, HBK.id AS event_id, + HBK.status AS booking_status,TRS.status AS transaction_status, + HBK.traveller_details + FROM hotel_booking AS HBK + LEFT JOIN transaction AS TRS ON TRS.booking_id=HBK.hotel_book_id + WHERE HBK.hotel_book_id='$booking_id'"; + + $hotelData = $this->db->query($sql)->row_array(); + if(empty($hotelData)){ + return; + } + $trvlDtls = (isset($hotelData['traveller_details']) && !empty($hotelData['traveller_details']))?json_decode($hotelData['traveller_details']):''; + $hotelData['location'] = (!empty($trvlDtls) && isset($trvlDtls->hotel_address))?$trvlDtls->hotel_address:''; + $hotelData['ticket_count'] = (!empty($trvlDtls) && isset($trvlDtls->roomDetails->room))?$trvlDtls->roomDetails->room.' Room':''; + $hotelData['time'] = '11:00'; + $hotelData['has_payment'] = 1; + unset($hotelData['traveller_details']); + return $hotelData; + } + + function getFlightData($booking_id='',$user_id=''){ + $sql = "SELECT FBK.flight_book_id AS bookId,FBK.flight_name AS event_name,FBK.id AS event_id, + FBK.qrcode AS event_image,FBK.departure_date AS date, + FBK.status AS booking_status,TRS.status AS transaction_status, + FBK.traveller_details + FROM flight_booking AS FBK + LEFT JOIN transaction AS TRS ON TRS.booking_id=FBK.flight_book_id + WHERE FBK.flight_book_id='$booking_id'"; + + $flightData = $this->db->query($sql)->row_array(); + if(empty($flightData)){ + return; + } + $trvlDtls = (isset($flightData['traveller_details']) && !empty($flightData['traveller_details']))?json_decode($flightData['traveller_details']):''; + $flightData['location'] = (!empty($trvlDtls))?$trvlDtls->fromAirportCity.' - '.$trvlDtls->toAirportCity:''; + $flightData['ticket_count'] = (!empty($trvlDtls))?(int)$trvlDtls->passengerDetails->adult + (int)$trvlDtls->passengerDetails->children + (int)$trvlDtls->passengerDetails->infant:''; + $fghtTme = explode("T",$flightData['date']); + unset($flightData['traveller_details'],$flightData['date']); + $flightData['date'] = (isset($fghtTme[0]) && !empty($fghtTme[0]))?$fghtTme[0]:''; + $flightData['time'] = (isset($fghtTme[1]) && !empty($fghtTme[1]))?$fghtTme[1]:''; + $flightData['has_payment'] = 1; + return $flightData; + } + function get_settings($data) { try { $user_id = $this->auth_token_get($data['auth_token']);