Commit f308a5ab by Tobin

dc

parent 79ab4e49
......@@ -536,5 +536,17 @@ class Api extends CI_Controller {
public function verifyMail($unique_id = '') {
$res = $this->Api_model->verifyMail(array('unique_id'=>$unique_id));
}
public function checkSeatAvailability(){
$data = (array) json_decode(file_get_contents('php://input'));
$data['auth_token'] = $this->auth_token;
$res = $this->Api_model->checkSeatAvailability($data);
if($res['status']!=0){
$this->response($res['data']);
}
else{
$this->errorResponse($res['code'],$res['message']);
}
}
}
?>
......@@ -334,11 +334,7 @@ class Api_model extends CI_Model {
$per_page = 10;
$user_id = $this->auth_token_get($data['auth_token']);
if($user_id > 0) {
$count = $this->db->query("
SELECT id FROM booking AS BOK
INNER JOIN events AS EVT ON (EVT.event_id=BOK.event_id)
WHERE BOK.customer_id='$user_id' AND BOK.status IN (0,1,2) AND
EVT.status='1'")->num_rows();
$count = $this->db->select('booking.id AS book_id,booking.event_id,booking.bookId AS bookingCode,booking.qrcode,booking.no_of_ticket,booking.amount,booking.status AS book_status,events.event_name,events.event_name_ar,events.event_discription,events.event_discription_ar,event_gallery.media_url,venue.location,event_date_time.date AS event_date,event_date_time.time AS event_time')->where('customer_id',$user_id)->where_in('booking.status',array(0,1,2))->from('booking')->join('events','booking.event_id = events.event_id')->join('event_date_time','booking.event_date_id = event_date_time.id')->join('venue', 'venue.id = events.venue_id')->join('event_gallery', 'events.event_id = event_gallery.event_id AND event_gallery.media_type = 0', 'LEFT')->group_by('booking.id')->get()->num_rows();
if($count > 0) {
......@@ -582,10 +578,22 @@ class Api_model extends CI_Model {
function recommend($data) {
try {
$locCond = '';
$per_page = 10;
$user_id = $this->auth_token_get($data['auth_token']);
if(isset($data['city_id']) && !empty($data['city_id'])){
$locCond = " AND venue.region_id='".$data['city_id']."'";
}
if($user_id > 0) {
$count = $this->db->query("SELECT events.event_id FROM events INNER JOIN event_date_time ON events.event_id = event_date_time.event_id AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d') WHERE events.status = 1 GROUP BY events.event_id")->num_rows();
$count = $this->db->query("
SELECT events.event_id
FROM events
INNER JOIN venue ON venue.id = events.venue_id
INNER JOIN event_date_time ON events.event_id = event_date_time.event_id
WHERE events.status = 1 AND
event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d') $locCond
GROUP BY events.event_id")->num_rows();
if($count > 0) {
if(isset($data['page'])) {
......@@ -597,12 +605,39 @@ class Api_model extends CI_Model {
$page_limit = ($page - 1) * $per_page;
if($count > $page_limit) {
$result = $this->db->query("SELECT events.event_id, events.event_name,events.event_name_ar,events.event_discription AS event_description,venue.location,venue.venue_name, events.event_discription_ar,events.seat_pricing, events.custom_seat_layout, venue.layout, venue.layout_details,`event_gallery`.`media_url`,favourite.status AS fav_status, GROUP_CONCAT(DISTINCT tags.tag_name) AS tag,
GROUP_CONCAT(DISTINCT tags.tag_name_ar) AS tag_ar FROM events INNER JOIN event_date_time ON events.event_id = event_date_time.event_id AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d') 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 LEFT JOIN booking on booking.event_id = events.event_id LEFT JOIN favourite ON favourite.event_id = events.event_id AND favourite.user_id = ".$user_id." AND favourite.status = 1 LEFT JOIN event_tags ON events.event_id = event_tags.event_id LEFT JOIN tags on tags.tag_id = event_tags.tag_id WHERE events.status = 1 GROUP BY events.event_id LIMIT ".$page_limit.",".$per_page)->result();
$this->db->query("SET SESSION group_concat_max_len = 20000");
$result = $this->db->query("SELECT events.event_id, events.event_name,events.event_name_ar,events.event_discription AS event_description,venue.location,venue.venue_name, events.event_discription_ar,events.seat_pricing, events.custom_seat_layout, venue.layout, venue.layout_details,`event_gallery`.`media_url`,favourite.status AS fav_status, GROUP_CONCAT(DISTINCT tags.tag_name) AS tag,GROUP_CONCAT(DISTINCT tags.tag_name_ar) AS tag_ar, GROUP_CONCAT(DISTINCT CONCAT_WS('#',event_date_time.id,event_date_time.date,event_date_time.time)) AS date_time
FROM events
INNER JOIN event_date_time ON events.event_id = event_date_time.event_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
LEFT JOIN booking on booking.event_id = events.event_id
LEFT JOIN favourite ON favourite.event_id = events.event_id AND favourite.user_id = ".$user_id." AND favourite.status = 1
LEFT JOIN event_tags ON events.event_id = event_tags.event_id
LEFT JOIN tags on tags.tag_id = event_tags.tag_id
WHERE events.status = 1 AND
event_date_time.date>=DATE_FORMAT(NOW(),'%Y-%m-%d') $locCond
GROUP BY events.event_id
LIMIT ".$page_limit.",".$per_page)->result();
if(count($result)>0){
$resultData = array();
foreach ($result as $rs) {
if(!empty($dates = explode(',',$rs->date_time))){
$checkTime = 0;
foreach ($dates as $date) {
$dArr = explode('#', $date);
if($dArr[1] == date("Y-m-d") &&
$dArr[1].' '.$dArr[2] < date("Y-m-d H:i", strtotime('+15 minutes'))){
$checkTime += 1;
}
}
if($checkTime == count($dates)){
continue;
}
} else {
continue;
}
$sql = "SELECT AVG(review.rate) AS rate
FROM review WHERE event_id=$rs->event_id";
......@@ -681,10 +716,27 @@ class Api_model extends CI_Model {
$cat_id = $data['cat_id'];
$city_id = $data['city'];
$category = $this->db->where('cat_id',$cat_id)->get('event_category')->row();
$result = $this->db->query("SELECT events.event_id, events.event_name,events.event_name_ar,events.event_discription AS event_description,events.event_discription_ar,events.seat_pricing, events.custom_seat_layout, venue.layout, venue.layout_details,`event_gallery`.`media_url` FROM events INNER JOIN event_date_time ON events.event_id = event_date_time.event_id AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d') 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 WHERE events.status = 1 AND events.category_id = ".$cat_id." AND venue.region_id = ".$city_id." GROUP BY events.event_id")->result();
$this->db->query("SET SESSION group_concat_max_len = 20000");
$result = $this->db->query("SELECT events.event_id, events.event_name,events.event_name_ar,events.event_discription AS event_description,events.event_discription_ar,events.seat_pricing, events.custom_seat_layout, venue.layout, venue.layout_details,`event_gallery`.`media_url`, GROUP_CONCAT(DISTINCT CONCAT_WS('#',event_date_time.id,event_date_time.date,event_date_time.time)) AS date_time FROM events INNER JOIN event_date_time ON events.event_id = event_date_time.event_id AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d') 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 WHERE events.status = 1 AND events.category_id = ".$cat_id." AND venue.region_id = ".$city_id." GROUP BY events.event_id")->result();
if(count($result)>0){
$resultData = array();
foreach ($result as $rs) {
if(!empty($dates = explode(',',$rs->date_time))){
$checkTime = 0;
foreach ($dates as $date) {
$dArr = explode('#', $date);
if($dArr[1] == date("Y-m-d") &&
$dArr[1].' '.$dArr[2] < date("Y-m-d H:i", strtotime('+15 minutes'))){
$checkTime += 1;
}
}
if($checkTime == count($dates)){
continue;
}
} else {
continue;
}
if($rs->layout!=''){
if($rs->custom_seat_layout!=''){
$pricelist = json_decode($rs->custom_seat_layout, TRUE);
......@@ -697,6 +749,7 @@ class Api_model extends CI_Model {
$pricelist = json_decode($rs->seat_pricing, TRUE);
$price = $pricelist['price'];
}
$resData = array(
'event_name'=>$rs->event_name,
'event_name_ar'=>$rs->event_name_ar,
......@@ -838,8 +891,6 @@ class Api_model extends CI_Model {
$where = ' AND events.category_id='.$data['cat_id'];
}
$case = "AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d')";
if(isset($data['choose_date']) && !empty($data['choose_date'])) {
switch ($data['choose_date']) {
case '1':
......@@ -868,12 +919,11 @@ class Api_model extends CI_Model {
$sunday = date( 'Y-m-d', strtotime( 'sunday this week'));
$saturday = date( 'Y-m-d', strtotime( 'saturday this week'));
$case = "AND event_date_time.date = $sunday OR event_date_time.date = $saturday";
break;
case '5':
$sunday = date( 'Y-m-d', strtotime( 'sunday this week'));
$saturday = date( 'Y-m-d', strtotime( 'saturday this week'));
$case = "AND event_date_time.date = $sunday OR event_date_time.date = $saturday";
default:
$case = "AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d')";
break;
}
// $where = ' AND events.venue_id='.$data['venue_id'];
......@@ -886,7 +936,7 @@ class Api_model extends CI_Model {
}
if(isset($data['city_id']) && !empty($data['city_id'])) {
$where .= " AND locality.region_id='".$data['city_id']."'";
$where .= " AND venue.region_id='".$data['city_id']."'";
}
if($count > 0) {
......@@ -900,24 +950,47 @@ class Api_model extends CI_Model {
$page_limit = ($page - 1) * $per_page;
if($count > $page_limit) {
$this->db->query("SET SESSION group_concat_max_len = 20000");
$result = $this->db->query("
SELECT events.event_id, events.event_name, venue.venue_name, venue.location, events.event_name_ar,events.event_discription AS event_description,events.event_discription_ar,events.seat_pricing,events.custom_seat_layout, venue.layout, venue.layout_details,
`event_gallery`.`media_url`,favourite.status AS fav_status,
GROUP_CONCAT(DISTINCT tags.tag_name) AS tag, GROUP_CONCAT(DISTINCT tags.tag_name_ar) AS tag_ar
SELECT events.event_id,events.event_name,venue.venue_name,venue.location, events.event_name_ar,events.event_discription AS event_description,events.event_discription_ar,events.seat_pricing,
events.custom_seat_layout, venue.layout, venue.layout_details,
event_gallery.media_url,favourite.status AS fav_status,
GROUP_CONCAT(DISTINCT tags.tag_name) AS tag,
GROUP_CONCAT(DISTINCT tags.tag_name_ar) AS tag_ar,
GROUP_CONCAT(DISTINCT CONCAT_WS('#',event_date_time.id,event_date_time.date,event_date_time.time)) AS date_time
FROM events
INNER JOIN event_date_time ON events.event_id=event_date_time.event_id $case
INNER JOIN venue ON venue.id=events.venue_id
LEFT JOIN locality ON locality.id=venue.locality_id
LEFT JOIN `event_gallery` ON `events`.`event_id`=`event_gallery`.`event_id` AND `event_gallery`.`media_type`=0
LEFT JOIN `event_gallery` ON `events`.`event_id`=`event_gallery`.`event_id`
AND `event_gallery`.`media_type`=0
LEFT JOIN booking on booking.event_id=events.event_id
LEFT JOIN favourite ON favourite.event_id=events.event_id AND favourite.user_id='$user_id' AND favourite.status=1
LEFT JOIN favourite ON favourite.event_id=events.event_id AND
favourite.user_id='$user_id' AND favourite.status=1
LEFT JOIN event_tags ON events.event_id=event_tags.event_id
LEFT JOIN tags on tags.tag_id = event_tags.tag_id
WHERE events.status=1 $where GROUP BY events.event_id ORDER BY events.event_id DESC LIMIT ". $page_limit.", ".$per_page)->result();
WHERE events.status=1 AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d') $where
GROUP BY events.event_id
ORDER BY events.event_id DESC LIMIT ". $page_limit.",".$per_page)->result();
if(count($result)>0){
$resultData = array();
foreach ($result as $rs) {
if(!empty($dates = explode(',',$rs->date_time))){
$checkTime = 0;
foreach ($dates as $date) {
$dArr = explode('#', $date);
if($dArr[1] == date("Y-m-d") &&
$dArr[1].' '.$dArr[2] < date("Y-m-d H:i", strtotime('+15 minutes'))){
$checkTime += 1;
}
}
if($checkTime == count($dates)){
continue;
}
} else {
continue;
}
$sql = "SELECT AVG(review.rate) AS rate
FROM review WHERE event_id=$rs->event_id";
......@@ -992,9 +1065,12 @@ class Api_model extends CI_Model {
function searchEvent($data) {
$str = strtolower($data['str']);
$event = $this->db->select('event_name,event_id')->from('events')->where("event_name LIKE '%$str%'")->where('status',1)->limit(5)->get();
$region = $this->db->select('id,name')->from('region')->where("name LIKE '%$str%'")->where('status',1)->limit(5)->get();
$str = urldecode(strtolower($data['str']));
$event = $this->db->select('event_name,event_id')->from('events')
->where("event_name LIKE '%$str%'")->where('status',1)->limit(5)->get();
$region = $this->db->select('id,name')->from('region')->where("name LIKE '%$str%'")
->where('status',1)->limit(5)->get();
$response = array('events'=>$event->result(), 'cityList'=>$region->result());
$res = array('status'=>1,'data'=>$response);
return $res;
......@@ -1217,5 +1293,89 @@ class Api_model extends CI_Model {
}catch(Exception $e){}
header('Location:https://timeout.sa/staging/location');
}
public function checkSeatAvailability($data = ''){
try{
$user_id = $this->auth_token_get($data['auth_token']);
$event_id = $data['event_id'];
$evtTimeId = $data['time_id'];
$lyCapacity = array();
$capacity = $usrBooked = $maxBooking = 0;
$sql = "SELECT EDATE.date,EDATE.time,EVT.custom_seat_layout,EVT.seat_pricing,
EVT.max_booking,VEN.layout_details,HST.show_layout
FROM events AS EVT
INNER JOIN venue AS VEN ON (VEN.id=EVT.venue_id)
INNER JOIN event_date_time AS EDATE ON (EVT.event_id=EDATE.event_id)
INNER JOIN host_categories AS HST ON (VEN.host_cat_id=HST.host_cat_id)
WHERE EVT.event_id='$event_id' AND EDATE.id='$evtTimeId' AND
EDATE.date >= DATE_FORMAT(NOW(),'%Y-%m-%d')";
$evtSql = $this->db->query($sql);
if(empty($evtSql) || empty($evtData = $evtSql->row_array())){
return array('status'=>0,'message'=>'No Record Found','code'=>'ER25');
}
if($evtData['date'].' '.$evtData['time'] < date("Y-m-d H:i", strtotime('+15 minutes'))){
return array('status'=>0,'message'=>'Booking Closed','code'=>'ER26');
}
if(!empty($user_id)){
$sql = "SELECT SUM(BOK.no_of_ticket) AS bookCount
FROM booking AS BOK
INNER JOIN event_date_time AS EDATE ON (BOK.event_date_id=EDATE.id)
WHERE BOK.event_id='$event_id' AND BOK.customer_id='$user_id' AND
EDATE.id='$evtTimeId' AND BOK.status IN (1,2)";
$result = $this->db->query($sql)->row_array();
$usrBooked = (!empty($result))?$result['bookCount']:0;
}
$maxBooking = $evtData['max_booking']-$usrBooked;
if($evtData['show_layout'] == 0){
$lyout = json_decode($evtData['seat_pricing'],true);
$capacity = $lyout['capacity'];
} else {
$lyout = (!empty($evtData['layout_details']))
?json_decode($evtData['layout_details'],true)
:json_decode($evtData['custom_seat_layout'],true);
foreach($lyout AS $custLy) {
$lyCapacity[$custLy['color']] = $custLy['capacity'];
}
}
$sql = "SELECT BOOK.no_of_ticket,BOOK.ticket_details
FROM booking AS BOOK
INNER JOIN event_date_time AS EDATE ON (BOOK.event_date_id=EDATE.id)
WHERE BOOK.event_id='$event_id' AND BOOK.event_date_id='$evtTimeId'";
if(!empty($result = $this->db->query($sql)->result_array())){
foreach($result AS $value) {
if($evtData['show_layout'] == 0){
$capacity = $capacity-$value['no_of_ticket'];
} else {
$tkDtls = json_decode($value['ticket_details'],true);
$aval = $lyCapacity[$tkDtls['color']];
$aval = ($tkDtls['no_ticket']>$aval)?0:$aval-$tkDtls['no_ticket'];
$lyCapacity[$tkDtls['color']] = $aval;
}
}
}
if($evtData['show_layout'] == 0){
$capacity = ($capacity < $maxBooking)?$capacity:$maxBooking;
} else {
foreach($lyCapacity AS $block => $avail) {
$lyCapacity[$block] = ($avail < $maxBooking)?$avail:$maxBooking;
}
}
$res = array('status'=>1,'data'=>array('capacity'=>$capacity,'lyCapacity'=>$lyCapacity,
'show_layout'=>$evtData['show_layout']));
} catch(Exception $e) {
$res = array('status'=>0,'message'=>'Ohh No!! Something went South!!','code'=>'ER06');
}
return $res;
}
}
?>
......@@ -104,6 +104,20 @@ class Validation_model extends CI_Model {
) ,
) ,
) ,
'checkSeatAvailability' => array(
'event_id' => array(
'required' => array(
'code' => 'ER17',
'message' => 'Event Id is null or empty'
) ,
) ,
'time_id' => array(
'required' => array(
'code' => 'ER18',
'message' => 'Time Id is null or empty'
)
)
) ,
'bookingdetails' => array(
'auth_token' => array(
'required' => array(
......
......@@ -1472,7 +1472,7 @@ class Webservice_model extends CI_Model {
$res = array('status'=>1,'data'=>array('events'=>$result,'meta'=>$meta));
} else {
$res = array('status'=>1,'data'=>array('events'=>$result,'meta'=>$meta));
$res = array('status'=>1,'data'=>array('events'=>[],'meta'=>$meta));
}
} else {
$res = array('status'=>0,'message'=>'User Authentication Failed','code'=>'ER15');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment