Commit 8382108c by Tobin

Merge branch 'master' into 'dev_production'

Master See merge request !79
parents 58fe37c4 571692c4
......@@ -322,7 +322,7 @@ class Api extends CI_Controller {
public function payNow($auth_token='',$amount=0,$booking_id='',$event_id=''){
if(empty($auth_token) || empty($amount) || empty($booking_id)){
redirect('https://projects.nuvento.com/failure');
redirect('https://timeout.sa/staging/failure');
}
$payData = array('auth_token'=>$auth_token,'amount'=>$amount,'booking_id'=>$booking_id);
$res = $this->Api_model->payNow($payData);
......@@ -331,7 +331,7 @@ class Api extends CI_Controller {
$this->paymentGateway($amount,$res['transaction_id'],$event_id,$booking_id,$res['custData']);
}
else{
redirect('https://projects.nuvento.com/failure?event_id='.$eventid);
redirect('https://timeout.sa/staging/failure?event_id='.$eventid);
}
}
......@@ -353,7 +353,7 @@ class Api extends CI_Controller {
$booking_id = $last_id[3];
$this->Api_model->update_payment($response,$transaction_id,$lastid,'1') ;
redirect('https://projects.nuvento.com/bookingdetails?booking_id='.$booking_id);
redirect('https://timeout.sa/staging/bookingdetails?booking_id='.$booking_id);
}
}
......@@ -376,7 +376,7 @@ class Api extends CI_Controller {
$booking_id = $last_id[3];
$this->Api_model->update_payment($response,$transaction_id,$lastid,'0');
redirect('https://projects.nuvento.com/failure?event_id='.$eventid);
redirect('https://timeout.sa/staging/failure?event_id='.$eventid);
}
}
......@@ -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']);
}
}
}
?>
......@@ -207,4 +207,4 @@ class Booking extends CI_Controller {
return $reportData;
}
}
?>
\ No newline at end of file
?>
......@@ -134,21 +134,20 @@ class Customer extends CI_Controller {
$subject = "Your TimeOut Account is now activated";
$email_id = $_POST['email'];
$template = getNotifTemplate();
$message = "<html>
<body>
Hi,\n\r Welcome to TimeOut. \r\n Please use username:
".$_POST['email']." for access your account <br>
</body>
</html>";
$msgContent = "Hi, Welcome to TimeOut. Please use username: ".$_POST['email']."
for access your account.";
$message = "<html><body>".$msgContent."<br></body></html>";
if(isset($template['registration_mail']) && !empty($template['registration_mail'])){
$message = str_replace(array('{:email}'),array($email_id),
$template['registration_mail']);
$message=str_replace(array('{:email}'),array($email_id),$template['registration_mail']);
}
$this->Api_model->send_mail($subject,$email_id,$message);
if(isset($template['registration_sms']) && !empty($template['registration_sms'])){
$msgContent=str_replace(array('{:email}'),array($email_id),$template['registration_sms']);
}
$this->Api_model->sendSMS($_POST['phone'],$msgContent);
$flashMsg =array('message'=>'Successfully Updated User Details..!','class'=>'success');
$this->session->set_flashdata('message', $flashMsg);
redirect(base_url('Customer/viewCustomers'));
......
......@@ -121,6 +121,7 @@ class Event extends CI_Controller {
} else {
$_POST['seat_pricing'] = json_encode(
array('price'=>$_POST['price'],
'capacity'=>$_POST['capacity'],
'price_details'=>$_POST['price_details'],
'price_details_ar'=>$_POST['price_details_ar']
)
......@@ -187,7 +188,7 @@ class Event extends CI_Controller {
$subject = "TimeOut, New Event Created";
$emailId = $settings['admin_mail_id'];
$message = "<html><body>
New Event Created, event name: <strong>".$_POST['event_name']."</strong>. Event URL : https://projects.nuvento.com/eventdetail?event_id=$event_id
New Event Created, event name: <strong>".$_POST['event_name']."</strong>. Event URL : ".base_url()."eventdetail?event_id=$event_id
</body></html>";
$this->Api_model->send_mail($subject,$emailId,$message);
// END - NEW EVENT NOTIFICATION MAIL \\
......@@ -297,6 +298,7 @@ class Event extends CI_Controller {
} else {
$_POST['seat_pricing'] = json_encode(
array('price'=>$_POST['price'],
'capacity'=>$_POST['capacity'],
'price_details'=>$_POST['price_details'],
'price_details_ar'=>$_POST['price_details_ar']
)
......
......@@ -46,9 +46,15 @@ class Notification extends CI_Controller {
if(!isset($_POST['forgot_sms']) || empty($_POST['forgot_sms'])){
unset($_POST['forgot_sms']);
}
if(!isset($_POST['booking_sms']) || empty($_POST['booking_sms'])){
unset($_POST['booking_sms']);
}
if(!isset($_POST['verify_mail']) || empty($_POST['verify_mail'])){
unset($_POST['verify_mail']);
}
if(!isset($_POST['booking_mail']) || empty($_POST['booking_mail'])){
unset($_POST['booking_mail']);
}
if(!isset($_POST['staff_reg_mail']) || empty($_POST['staff_reg_mail'])){
unset($_POST['staff_reg_mail']);
}
......
......@@ -160,11 +160,13 @@ class Venue extends CI_Controller {
$template['venue_id'] = $venue_id;
$template['venue_data'] = $this->Venue_model->getVenueData(decode_param($venue_id));
$region_id = $template['venue_data']->region_id;
$this->load->model('Host_model');
$this->load->model('Region_model');
$template['host_data'] = $this->Host_model->getHostCategories();
$template['regionData'] = $this->Region_model->getRegionData();
$template['localityData'] = $this->Region_model->getLocalityData($region_id,'','1');
$this->load->view('template',$template);
}
......@@ -243,9 +245,20 @@ class Venue extends CI_Controller {
$_POST['location_lat'] = $locData['lat'];
$_POST['location_lng'] = $locData['lng'];
unset($_POST['has_layout'],$_POST['seat_color'],$_POST['seat_price'],$_POST['seat_capacity']);
$locality = array();
if(isset($_POST['locality']) && !empty($_POST['locality']) &&
isset($_POST['locality_ar']) && !empty($_POST['locality_ar'])){
$locality['locality'] = $_POST['locality'];
$locality['locality_ar'] = $_POST['locality_ar'];
}
unset($_POST['locality'],$_POST['locality_type'],$_POST['has_layout'],$_POST['seat_color'],
$_POST['seat_price'],$_POST['seat_capacity'],$_POST['locality_ar']);
$status = $this->Venue_model->updateVenues(decode_param($venue_id),$_POST);
if($this->session->userdata['user_type'] == 2){
$_POST['provider_id'] = $this->session->userdata['id'];
}
$status = $this->Venue_model->updateVenues(decode_param($venue_id),$_POST,$locality);
if($status == 1){
$flashMsg['class'] = 'success';
$flashMsg['message'] = 'Venue Created';
......
......@@ -21,6 +21,7 @@ class Webservice extends CI_Controller {
public function __construct() {
parent::__construct();
date_default_timezone_set("Asia/Riyadh");
$this->load->model('Webservice_model');
$this->load->model('Validation_app_model');
$method = $this->router->fetch_method();
......@@ -103,17 +104,17 @@ class Webservice extends CI_Controller {
public function events_details($event_id = null) {
$data['event_id'] = $_GET['event_id'];
$data['auth_token'] = $this->auth_token;
$data['event_date_id'] = '';
if($data['event_id'] == null) {
$this->errorResponse("ER16","Event id is null or empty");
die;
$this->errorResponse("ER16","Event id is null or empty");die;
}
if (isset($_GET['event_date_id']) && !empty($_GET['event_date_id'])){
$data['event_date_id'] = $_GET['event_date_id'];
}
$res = $this->Webservice_model->event($data);
if($res['status']!=0){
$this->response($res['data']);
}
else{
} else{
$this->errorResponse($res['code'],$res['message']);
}
}
......@@ -360,18 +361,18 @@ class Webservice extends CI_Controller {
}
}
public function responseEventList($data) {
//print_r($data);exit();
$result = array(
'status' => 'success',
'data' => array(
'is_last_booking_avail' =>$data['is_last_booking_avail'],
'city_name' =>$data['city_name'],
'events' =>$data['events']),
'meta' =>$data['meta']
);
print json_encode($result);
public function responseEventList($data) {
$isLstBookAvail = (isset($data['is_last_booking_avail']))?$data['is_last_booking_avail']:'';
$result = array(
'status'=>'success',
'data'=>array(
'is_last_booking_avail'=>$isLstBookAvail,
'city_name'=>(isset($data['city_name']))?$data['city_name']:'',
'events'=>(isset($data['events']))?$data['events']:''
),
'meta'=>(isset($data['meta']))?$data['meta']:''
);
print json_encode($result);
}
public function get_last_booking() {
......@@ -438,5 +439,22 @@ class Webservice extends CI_Controller {
else
$this->errorResponse($res['code'],$res['message']);
}
public function event_search() {
if(!isset($_GET) || !isset($_GET['query']) || empty($_GET['query'])){
$this->errorResponse('ER18','Search Key Missing');
exit;
}
$data = $_GET;
$data['auth_token'] = $this->auth_token;
$res = $this->Webservice_model->event_search($data);
if($res['status']!=0){
$this->response($res['data']);
}
else{
$this->errorResponse($res['code'],$res['message']);
}
}
}
?>
......@@ -74,20 +74,19 @@ class Api_model extends CI_Model {
$data['phone'] = '966'.$data['phone'];
}
$customer_data = array('customer_id'=>$id,'phone'=>$data['phone'],'email_verified'=>'0',
'email'=>$data['email_id'],'name'=>$data['name'],
'confirm_link'=>$unique_id);
$customer_data = array('customer_id'=>$id,'phone'=>$data['phone'],
'email_verified'=>'0','email'=>$data['email_id'],
'name'=>$data['name'],'confirm_link'=>$unique_id);
$this->db->insert('customer', $customer_data);
$subject = "TimeOut, Verify your account";
$email_id = $data['email_id'];
$reset_link = 'https://projects.nuvento.com/admin/Api/verifyMail/'.$unique_id;
$message = "<html>
<body>
Hi,\n\r Welcome to TimeOut. \r\n Please Verify your E-mail for the username: ".$email_id.". User the following link verify your account ".$reset_link.".
</body>
</html>";
$reset_link = base_url().'Api/verifyMail/'.$unique_id;
$msgContent = "Hi, Welcome to TimeOut. Please Verify your E-mail for the username:
".$email_id.". User the following link verify your account
".$reset_link.".";
$message = "<html><body>".$msgContent."</body></html>";
$template = getNotifTemplate();
if(isset($template['verify_mail']) && !empty($template['verify_mail'])){
......@@ -96,6 +95,8 @@ class Api_model extends CI_Model {
$template['verify_mail']);
}
$this->send_mail($subject,$email_id,$message);
$res = array('status'=>1,'data'=>'');
// $this->db->select('customer.name,customer.dob,customer.phone,customer.email,customer.profile_image AS image,customer.gender,users.id AS userId, customer.city');
......@@ -153,21 +154,18 @@ class Api_model extends CI_Model {
$unique_id = uniqid().time();
$this->db->where('email',$data['email_id'])->update('customer',array('reset_key'=>$unique_id));
$subject = "TimeOut: Forgot Password";
$url = 'https://projects.nuvento.com/forgot/?reset_key='.$unique_id;
$message = "<html>
<body>
<p>Please use mentioned link for reset your password: ".$url."</p>
</body>
</html>";
$subject = "TimeOut: Forgot Password";
$url = 'https://timeout.sa/staging/forgot/?reset_key='.$unique_id;
$msgContent = "Hi, Welcome to TimeOut. Please use this link
for reset your password: ".$url;
$message = "<html><body><p>".$msgContent."</p></body></html>";
$template = getNotifTemplate();
$template = getNotifTemplate();
if(isset($template['forgot_mail']) && !empty($template['forgot_mail'])){
$message = str_replace(array('{:url}'),array($url),$template['forgot_mail']);
}
$result = $this->send_mail($subject,$data['email_id'],$message);
if($result){
$res = array('status'=>1,'data'=>null);
} else {
......@@ -334,11 +332,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) {
......@@ -424,20 +418,29 @@ class Api_model extends CI_Model {
try {
$user_id = $this->auth_token_get($data['auth_token']);
if($user_id > 0) {
$res_count = $this->db->where('bookId',$data['bookingCode'])->get('booking')->num_rows();
$res_count=$this->db->where('bookId',$data['bookingCode'])->get('booking')->num_rows();
if($res_count > 0) {
// $rs = $this->db->where('bookId',$data['bookingCode'])->update('booking',array('status'=>1));
// if($rs) {
$result = $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,event_gallery.media_url,venue.location,customer.name AS customer_name,customer.profile_image,venue.venue_name,venue.venue_name_ar,venue.location_lat AS lat,venue.location_lng AS lng, booking.ticket_details,event_date_time.date,event_date_time.time')->where('booking.bookId',$data['bookingCode'])->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', 'LEFT')->join('customer','customer.customer_id = booking.customer_id')->get()->row();
if(count($result)>0){
$res = array('status'=>1,'data'=>$result);
} else {
$res = array('status'=>0,'message'=>'Invalid booking code','code'=>'ER24');
}
// } else {
// $res = array('status'=>0,'message'=>'Confirm submission failed','code'=>'ER26');
// }
$result = $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,event_gallery.media_url,venue.location,
customer.name AS customer_name,customer.profile_image,venue.venue_name,
venue.venue_name_ar,venue.location_lat AS lat,booking.ticket_details,
venue.location_lng AS lng,event_date_time.date,event_date_time.time')->
where('booking.bookId',$data['bookingCode'])->
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', 'LEFT')->
join('customer','customer.customer_id = booking.customer_id')->get()->row();
if(count($result)>0){
$res = array('status'=>1,'data'=>$result);
} else {
$res = array('status'=>0,'message'=>'Invalid booking code','code'=>'ER24');
}
} else {
$res = array('status'=>0,'message'=>'Invalid booking code','code'=>'ER24');
}
......@@ -564,6 +567,42 @@ class Api_model extends CI_Model {
$res = array('status'=>1,
'data'=>array('user_id'=>$user_id,
'bookingCode'=>$post_data['bookId']));
if($status == 1){
$bkData = $this->db->query("
SELECT EVT.event_name,CUST.name,CUST.email,CUST.phone,
CONCAT(EDATE.date,' ',EDATE.time) AS show_time
FROM booking AS BK
INNER JOIN events AS EVT ON (EVT.event_id=BK.event_id)
INNER JOIN customer AS CUST ON (CUST.customer_id=BK.customer_id)
INNER JOIN event_date_time AS EDATE ON (EDATE.id=BK.event_date_id)
WHERE BK.bookId='".$post_data['bookId']."' AND EVT.status='1' AND
BK.status='1' AND EDATE.status='1'")->row_array();
$subject = "Your Tickets - TimeOut";
$showTime = date("d'S F Y - h:i, (l)",strtotime($bkData['show_time']));
$msgContent = "Hi, Your booking is confirmed for the event '".
$bkData['event_name']."' and show is on '".$showTime."'.
Booking ID ".$post_data['bookId'];
$message = "<html><body><p>".$msgContent."</p></body></html>";
$template = getNotifTemplate();
if(isset($template['booking_mail']) && !empty($template['booking_mail'])){
$msgContent = str_replace(
array('{:event_name}','{:booking_id}','{:time}'),
array($bkData['event_name'],$post_data['bookId'],$showTime),
$template['booking_mail']);
}
$this->send_mail($subject,$bkData['email'],$message);
if(isset($template['booking_sms']) && !empty($template['booking_sms'])){
$msgContent = str_replace(
array('{:event_name}','{:booking_id}','{:time}'),
array($bkData['event_name'],$post_data['bookId'],$showTime),
$template['booking_sms']);
}
$this->sendSMS($bkData['phone'],$msgContent);
}
} else {
$res = array('status'=>0,'message'=>'Seat booking failed','code'=>'ER37');
}
......@@ -582,10 +621,22 @@ class Api_model extends CI_Model {
function recommend($data) {
try {
$locCond = '';
$per_page = 10;
$user_id = $this->auth_token_get($data['auth_token']);
$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 +648,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,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";
......@@ -636,6 +714,8 @@ class Api_model extends CI_Model {
'event_name_ar'=>$rs->event_name_ar,
'event_description'=>$rs->event_description,
'event_description_ar'=>$rs->event_discription_ar,
'venue_name'=>$rs->venue_name,
'venue_location'=>$rs->location,
'media_url'=>$rs->media_url,
'fav_status'=>$rs->fav_status,
'price'=>$price,
......@@ -679,10 +759,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);
......@@ -695,6 +792,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,
......@@ -836,8 +934,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':
......@@ -866,12 +962,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'];
......@@ -884,7 +979,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) {
......@@ -898,28 +993,60 @@ 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, AVG(review.rate) AS rate,
MAX(booking.id) AS attendees, 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`,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 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
LEFT JOIN review ON events.event_id=review.event_id
WHERE events.status=1 $where GROUP BY events.event_id ORDER BY attendees 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";
$rating = $this->db->query($sql)->row_array();
$rate = isset($rating['rate'])&&!empty($rating['rate'])?
$rating['rate']:'0.0';
$sql = "SELECT SUM(booking.no_of_ticket) AS attend FROM booking
WHERE status IN (1,2) AND event_id=$rs->event_id";
$atten = $this->db->query($sql)->row_array();
$atte = isset($atten['attend'])&&!empty($atten['attend'])?
$atten['attend']:'0';
if($rs->layout!=''){
if($rs->custom_seat_layout!=''){
$pricelist = json_decode($rs->custom_seat_layout, TRUE);
......@@ -940,12 +1067,14 @@ class Api_model extends CI_Model {
'event_name_ar'=>$rs->event_name_ar,
'event_description'=>$rs->event_description,
'event_description_ar'=>$rs->event_discription_ar,
'venue_name'=>$rs->venue_name,
'venue_location'=>$rs->location,
'media_url'=>$rs->media_url,
'fav_status'=>$rs->fav_status,
'price'=>$price,
'event_id'=>$rs->event_id,
'attendees'=>$rs->attendees,
'rate'=>$rs->rate,
'attendees'=>$atte,
'rate'=>$rate,
'tag'=>$tags,
'tag_ar'=>$tags_ar
);
......@@ -979,10 +1108,41 @@ 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();
$response = array('events'=>$event->result(), 'cityList'=>$region->result());
$str = urldecode(strtolower($data['str']));
$this->db->query("SET SESSION group_concat_max_len = 20000");
$sql = "SELECT GROUP_CONCAT(DISTINCT CONCAT_WS('#',EDATE.id,EDATE.date,EDATE.time))
AS date_time,EVT.event_name,EVT.event_id
FROM events AS EVT
INNER JOIN event_date_time AS EDATE ON (EVT.event_id=EDATE.event_id)
WHERE (EVT.event_name LIKE '%$str%' OR EVT.event_name_ar LIKE '%$str%') AND
EDATE.date>=DATE_FORMAT(NOW(),'%Y-%m-%d') AND EVT.status='1' AND EDATE.status='1'
GROUP BY EVT.event_id LIMIT 5";
$resCount = $this->db->query($sql)->result();
if(!empty($resCount)){
foreach ($resCount AS $key => $rs) {
if(!empty($dates = explode(',',$rs->date_time))){
$checkTime = 0;
foreach ($dates as $date) {
if(empty($date)){ unset($resCount[$key]); continue; }
$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)){ unset($resCount[$key]); continue; }
} else { unset($resCount[$key]); continue; }
unset($resCount[$key]->date_time);
}
}
$sEvents = (!empty($resCount))?$resCount:[];
$region = $this->db->select('id,name')->from('region')->where("name LIKE '%$str%'")
->where('status',1)->limit(5)->get();
$response = array('events'=>$sEvents, 'cityList'=>$region->result());
$res = array('status'=>1,'data'=>$response);
return $res;
}
......@@ -1031,6 +1191,41 @@ class Api_model extends CI_Model {
$this->db->update('booking',array('status'=>'1'),
array('bookId'=>$trBook['booking_id']));
$bkData = $this->db->query("
SELECT EVT.event_name,CONCAT(EDATE.date,' ',EDATE.time) AS show_time,
CUST.name,CUST.email,CUST.phone
FROM booking AS BK
INNER JOIN events AS EVT ON (EVT.event_id=BK.event_id)
INNER JOIN customer AS CUST ON (CUST.customer_id=BK.customer_id)
INNER JOIN event_date_time AS EDATE ON (EDATE.id=BK.event_date_id)
WHERE BK.bookId='".$trBook['booking_id']."' AND EVT.status='1' AND
BK.status='1' AND EDATE.status='1'")->row_array();
if(!empty($bkData)){
$subject = "Your Tickets - TimeOut";
$showTime = date("d'S F Y - h:i, (l)",strtotime($bkData['show_time']));
$msgContent = "Hi, Your booking is confirmed for the event '".$bkData['event_name'].
"' and show is on '".$showTime."'. Booking ID ".$trBook['booking_id'];
$message = "<html><body><p>".$msgContent."</p></body></html>";
$template = getNotifTemplate();
if(isset($template['booking_mail']) && !empty($template['booking_mail'])){
$msgContent = str_replace(
array('{:event_name}','{:booking_id}','{:time}'),
array($bkData['event_name'],$trBook['booking_id'],$showTime),
$template['booking_mail']);
}
$this->send_mail($subject,$bkData['email'],$message);
if(isset($template['booking_sms']) && !empty($template['booking_sms'])){
$msgContent = str_replace(
array('{:event_name}','{:booking_id}','{:time}'),
array($bkData['event_name'],$trBook['booking_id'],$showTime),
$template['booking_sms']);
}
$this->sendSMS($bkData['phone'],$msgContent);
}
}
$res = array('status'=>1);
}catch(Exception $e){
......@@ -1148,6 +1343,9 @@ class Api_model extends CI_Model {
$result->seat_class = $ticketDetls->color;
}
}
$this->db->insert('checker_bookings',
array('checker_id'=>$data['checker_id'],'booking_id'=>$data['qr_pin'],
'checked_time'=>date('Y-m-d H:i:s')));
$res = array('status'=>1,'data'=>$result);
} else {
......@@ -1188,18 +1386,142 @@ class Api_model extends CI_Model {
public function verifyMail($data = ''){
try{
$cust = $this->db->query("SELECT CUST.customer_id FROM customer AS CUST
$cust = $this->db->query("SELECT CUST.customer_id,CUST.email,CUST.phone
FROM customer AS CUST
INNER JOIN users AS USER ON (USER.id=CUST.customer_id)
WHERE CUST.confirm_link='".$data['unique_id']."' AND USER.status!='2'");
if(!empty($cust)){
$cust = $cust->row_array();
if(!empty($cust) && !empty($cust = $cust->row_array())){
$email = $cust['email'];
$subject = "New account created successfully";
$message = "Hi, Welcome to TimeOut. Please use username: ".$email.
" for access your account";
if(isset($template['registration_mail']) && !empty($template['registration_mail'])){
$message=str_replace(array('{:email}'),array($email),$template['registration_mail']);
}
$this->send_mail($subject,$email,$message);
if(isset($template['registration_sms']) && !empty($template['registration_sms'])){
$message=str_replace(array('{:email}'),array($email),$template['registration_sms']);
}
$this->sendSMS($cust['phone'],$message);
if($this->db->update('customer',array('confirm_link'=>'','email_verified'=>'1'),
array('customer_id'=>$cust['customer_id']))){
header('Location:https://projects.nuvento.com/location?login=1');
header('Location:https://timeout.sa/staging/location?login=1');
}
}
}catch(Exception $e){}
header('Location:https://projects.nuvento.com/location');
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['custom_seat_layout']))
?json_decode($evtData['custom_seat_layout'],true)
:json_decode($evtData['layout_details'],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;
}
function sendSMS($phone_no, $message) {
$phone_no = trim($phone_no);
$phone_no = trim($phone_no,'+');
if(empty($phone_no) && count($phone_no) < 10 && empty($message)){
return;
}
$user = "eventstimeout";
$senderid = "SMSCountry";
$password = "timeout2030";
$url = "http://www.smscountry.com/SMSCwebservice_Bulk.aspx";
$message = urlencode($message);
if($ch = curl_init()){
$ret = curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "User=$user&passwd=$password&mobilenumber=$phone_no&message=$message&sid=$senderid&mtype=N&DR=Y");
$ret = curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$curlresponse = curl_exec ($ch);
}
}
}
?>
......@@ -42,15 +42,15 @@ class Region_model extends CI_Model {
}
public function getlocalityData($region_id = '',$locality_id = '', $status = '0'){
$where = array('status'=>$status);
$cond = "status IN (".$status.") ";
if(!empty($region_id)){
$where['region_id'] = $region_id;
$cond .= " AND region_id='$region_id' ";
}
if(!empty($locality_id)){
$where['id'] = $locality_id;
$cond .= " AND id='$locality_id' ";
}
$data = $this->db->get_where('locality',$where);
return $data->result();
$locData = $this->db->query("SELECT * FROM locality WHERE ".$cond);
return (!empty($locality_id))?$locData->row():$locData->result();
}
}
?>
......@@ -4,7 +4,8 @@ class Validation_app_model extends CI_Model {
public $validation_array = array(
'login'=> array('email'=>array('required'=>array('code'=>'ER02', 'message'=>'Email id is null or empty'),
'email'=>array('code'=>'ER03', 'message'=>'Invalid Email id')),
'password'=>array('required'=>array('code'=>'ER04', 'message'=>'Password is null or empty'),)),
'password'=>array('required'=>array('code'=>'ER04', 'message'=>'Password is null or empty')),
'language'=>array('required'=>array('code'=>'ER05','message'=>'Language is null or empty'))),
'check_email_availability'=> array('email'=>array('required'=>array('code'=>'ER02', 'message'=>'Email id is null or empty'),
'email'=>array('code'=>'ER03', 'message'=>'Invalid Email id')
),
......@@ -13,16 +14,14 @@ class Validation_app_model extends CI_Model {
),
),
'registration'=> array('email'=>array('required'=>array('code'=>'ER02', 'message'=>'Email id is null or empty'),
'email'=>array('code'=>'ER03', 'message'=>'Invalid Email id')
),
'email'=>array('code'=>'ER03', 'message'=>'Invalid Email id')),
'phone'=>array('required'=>array('code'=>'ER07', 'message'=>'Phone no is null or empty'),
'phone'=>array('code'=>'ER08', 'message'=>'Invalid Phone no'),
),
'name'=>array('required'=>array('code'=>'ER04', 'message'=>'Name is null or empty'),
),
'password'=>array('required'=>array('code'=>'ER04', 'message'=>'Password is null or empty'),
)
),
'password'=>array('required'=>array('code'=>'ER04','message'=>'Password is null or empty')),
'password'=>array('required'=>array('code'=>'ER04','message'=>'Password is null or empty'))),
'get_events_list'=>array('auth_token'=>array('required'=>array('code'=>'ER17', 'message'=>'User Id is null or empty'),
)
),
......@@ -35,6 +34,7 @@ class Validation_app_model extends CI_Model {
'get_category_list'=>array('auth_token'=>array('required'=>array('code'=>'ER17', 'message'=>'User Id is null or empty'),
)
),
'event_search'=>array(),
'get_last_booking'=>array('auth_token'=>array('required'=>array('code'=>'ER17', 'message'=>'User Id is null or empty'),
......
......@@ -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(
......
......@@ -42,10 +42,20 @@ class Venue_model extends CI_Model {
return $status;
}
public function updateVenues($venue_id = '', $venueData = array()){
public function updateVenues($venue_id = '', $venueData = array(), $locality = array()){
if(empty($venue_id) || empty($venueData)){
return 0;
}
if(!empty($locality)){
$status = $this->db->insert('locality',
array('locality'=>$locality['locality'],
'locality_ar'=>$locality['locality_ar'],
'region_id'=>$venueData['region_id']));
if($status){
$venueData['locality_id'] = $this->db->insert_id();
}
}
$status = $this->db->update('venue',$venueData,array('id'=>$venue_id));
return $status;
}
......
......@@ -4,6 +4,7 @@ class Webservice_model extends CI_Model {
public function _consruct(){
parent::_construct();
$this->load->model('Api_model');
}
function update_fcm_token($data) {
......@@ -62,6 +63,9 @@ class Webservice_model extends CI_Model {
'is_phone_verified'=>$result->is_phone_verified === 'true'? true: false,
'is_location_updated'=>$result->is_location_updated === 'true'? true: false,
);
$this->db->update('customer',array('language'=>$data['language']),
array('customer_id'=>$result->user_id));
$response = array('user'=>$resultArray,'auth_token'=>$auth_token);
$this->generateAuth($result->user_id,$auth_token);
$res = array('status'=>1,'data'=>$response);
......@@ -158,10 +162,24 @@ class Webservice_model extends CI_Model {
'language'=>$data['language']
);
$this->db->insert('customer', $customer_data);
$subject = "New account created successfully";
$email_id = $data['email'];
$message = "Hi,\n\r Welcome to TimeOut.\r\n Please use username: ".$email_id." and Password: ".$temp_password." for access your account";
$this->send_mail($subject,$email_id,$message);
$email = $data['email'];
$subject = "New account created successfully";
$message = "Hi, Welcome to TimeOut. Please use username: ".$email.
" for access your account";
if(isset($template['registration_mail']) && !empty($template['registration_mail'])){
$message = str_replace(array('{:email}'),
array($email),$template['registration_mail']);
}
$this->send_mail($subject,$email,$message);
if(isset($template['registration_sms']) && !empty($template['registration_sms'])){
$message = str_replace(array('{:email}'),
array($email),$template['registration_sms']);
}
$this->sendSMS($data['phone'],$message);
$this->db->select("customer.name AS user_name,customer.phone,customer.email,customer.profile_image AS profile_photo,users.id AS user_id, IF(customer.phone_verified = 0,'false','true') AS is_phone_verified");
$this->db->where('users.id',$id);
$this->db->from('users');
......@@ -198,7 +216,14 @@ class Webservice_model extends CI_Model {
try {
$user_id = $this->auth_token_get($data['auth_token']);
if($user_id > 0) {
$settingsDetails = $this->db->query("SELECT faq_en AS faq,contact_number FROM privacy_policy")->row_array();
$lang = $this->getUserLang($user_id);
$field = 'faq_en';
if($lang == 'ar'){
$field = 'faq_ar';
}
$settingsDetails = $this->db->query("SELECT $field AS faq,contact_number FROM privacy_policy")->row_array();
$userDetails = $this->db->query("SELECT customer.name AS name, customer.profile_image AS profile_photo,customer.gender AS gender, customer.email, customer.dob, customer.profile_city AS city_name, users.notification_status, users.email_status FROM customer INNER JOIN users ON users.id = customer.customer_id WHERE customer.customer_id = ".$user_id." AND users.status = 1 ")->row_array();
if(count($settingsDetails)>0 && count($userDetails)){
$resultData = array();
......@@ -222,32 +247,25 @@ class Webservice_model extends CI_Model {
$per_page = 10;
$user_id = $this->auth_token_get($data['auth_token']);
if($user_id > 0) {
$where = '';
$lang = $this->getUserLang($user_id);
$cityField = "region.name AS city";
if($lang == 'ar') {
$cityField = 'region.name_ar AS city';
}
$sql = "SELECT $cityField FROM customer
$sql = "SELECT region.id,$cityField FROM customer
INNER JOIN region ON customer.city=region.id
WHERE customer.customer_id='$user_id' AND region.status='1'";
$cityName = $this->db->query($sql)->row_array();
if(empty($cityName)){
$cityName['city'] = 'null';
}
$where = '';
$case = "AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d')";
/******************* CATEGORY *********************/
$cityName['city'] = (empty($cityName))?'null':$cityName['city'];
if(isset($data['category_id'])) {
$where = ' AND events.category_id = '.$data['category_id'];
}
/******************* END CATEGORY *********************/
/******************* LATITUDE AND LONGITUDE *********************/
$case = "AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d')";
if(isset($data['latitude']) && isset($data['longitude'])) {
$radius = 25;
$res = $this->db->query("SELECT events.event_id,venue.id,venue.status, (((acos(sin((".$data['latitude']."*pi()/180)) * sin((venue.location_lat*pi()/180)) + cos((".$data['latitude']."*pi()/180)) * cos((venue.location_lat*pi()/180)) * cos(((".$data['longitude']." - venue.location_lng)*pi()/180))))*180/pi())*60*1.1515) as distance FROM venue RIGHT JOIN events ON events.venue_id = venue.id HAVING distance < ".$radius." AND venue.status = '1'")->result_array();
......@@ -264,13 +282,9 @@ class Webservice_model extends CI_Model {
}
}
/******************* END LATITUDE AND LONGITUDE ***/
/******************* CITY ID *********************/
if(isset($data['city_id'])) {
$where = ' AND venue.region_id = '.$data['city_id'];
if(isset($cityName['id'])) {
$where .= ' AND venue.region_id = '.$cityName['id'];
}
/******************* END CITY ID *********************/
/******************* FILTER ***************************/
if(isset($data['filters'])){
$filtersElement = json_decode($data['filters'], true);
......@@ -285,8 +299,6 @@ class Webservice_model extends CI_Model {
$where = ' AND events.category_id='.$categoryId;
}
//$case = "AND event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d')";
if($dateId != '') {
switch ($dateId) {
case '1':
......@@ -325,47 +337,95 @@ class Webservice_model extends CI_Model {
}
}
if($locality_id!=''){
$venue_res = $this->db->select('id')->where('locality_id',$locality_id)->get('venue')->result_array();
$list = implode(',', array_map(function($v) { return $v['id']; }, $venue_res));
$where .= ' AND events.venue_id IN('.$list.')';
}
// $count = $this->db->query("SELECT events.event_id FROM events INNER JOIN event_date_time ON events.event_id = event_date_time.event_id $case WHERE events.status = 1 $where GROUP BY events.event_id")->num_rows();
}
/******************* END FILTER *********************/
/******************* PAGINATION *********************/
$count = $this->db->query("SELECT events.event_id 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 WHERE events.status = 1 $where GROUP BY events.event_id")->num_rows();
//echo "hai";exit();
if($count > 0) {
$resCount = $this->db->query("
SELECT 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
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 event_category ON events.category_id = event_category.cat_id
LEFT JOIN review ON review.event_id = events.event_id
INNER JOIN venue ON venue.id = events.venue_id
LEFT JOIN favourite ON favourite.event_id = events.event_id AND
favourite.user_id = $user_id AND favourite.status = 1
WHERE events.status = 1 $where
GROUP BY events.event_id")->result();
if(empty($resCount)){
return array('status'=>1,'data'=>array('city_name'=>$cityName['city']));
}
if(isset($data['page'])) {
$page = $data['page'];
foreach ($resCount AS $key => $rs) {
if(!empty($dates = explode(',',$rs->date_time))){
$checkTime = 0;
foreach ($dates as $date) {
if(empty($date)){
unset($resCount[$key]);
continue;
}
$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)){
unset($resCount[$key]);
}
} else {
$page = 1;
unset($resCount[$key]);
}
}
$count = count($resCount);
if($count > 0) {
$page = (isset($data['page']))?$data['page']:1;
$page_limit = ($page - 1)*$per_page;
if($lang == 'ar') {
$cat_field = 'event_category.category_ar';
} else {
$cat_field = 'event_category.category';
}
// End
$page_limit = ($page - 1)*$per_page;
if($count > $page_limit) {
/******************* END PAGINATION *********************/
$result = $this->db->query("SELECT events.seat_pricing,events.custom_seat_layout,venue.location_lat AS latitude,venue.location_lng AS longitude,venue.layout,venue.layout_details,events.event_id AS event_id, events.event_name AS name,events.event_name_ar AS name_ar,`event_gallery`.`media_url` AS image, (SELECT SUM(booking.no_of_ticket) FROM booking WHERE booking.event_id = events.event_id AND booking.status IN (1,2)) AS attendees, $cat_field AS category, CAST(AVG (review.rate) AS DECIMAL (12,1)) AS rating, venue.location, IF(events.avg_price = 0, '100','150') AS rate, IF(events.provider_id = 1,'true','false') AS is_editors_choice, IF(favourite.is_favorite = 1, 'true','false') AS is_favorite FROM events INNER JOIN event_date_time ON events.event_id = event_date_time.event_id ".$case." 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 event_category ON events.category_id = event_category.cat_id LEFT JOIN review ON review.event_id = events.event_id INNER JOIN venue ON venue.id = events.venue_id LEFT JOIN favourite ON favourite.event_id = events.event_id AND favourite.user_id = ".$user_id." AND favourite.status = 1 WHERE events.status = 1 ".$where." GROUP BY events.event_id LIMIT ". $page_limit.", ".$per_page)->result();
$result = $this->db->query("
SELECT events.seat_pricing,events.custom_seat_layout,venue.location_lat AS latitude,venue.location_lng AS longitude,venue.layout,venue.layout_details,events.event_id AS event_id, events.event_name AS name,events.event_name_ar AS name_ar,`event_gallery`.`media_url` AS image, (SELECT SUM(booking.no_of_ticket) FROM booking WHERE booking.event_id = events.event_id AND booking.status IN (1,2)) AS attendees, $cat_field AS category, CAST(AVG (review.rate) AS DECIMAL (12,1)) AS rating, venue.venue_name, venue.location, IF(events.avg_price = 0, '100','150') AS rate, IF(events.provider_id = 1,'true','false') AS is_editors_choice, IF(favourite.is_favorite = 1, 'true','false') AS is_favorite, GROUP_CONCAT(DISTINCT CONCAT_WS('#',event_date_time.id,event_date_time.date,event_date_time.time)) AS date_time
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
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 event_category ON events.category_id=event_category.cat_id
LEFT JOIN review ON review.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
WHERE events.status = 1 $where $case
GROUP BY events.event_id
LIMIT $page_limit,$per_page")->result();
$response = array();
foreach ($result as $key=>$rs) {
if(!empty($dates = explode(',',$rs->date_time)) && count($dates) > 0){
$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);
......@@ -386,13 +446,12 @@ class Webservice_model extends CI_Model {
'category'=>$rs->category,
'name'=>($lang == 'en')?$rs->name:$rs->name_ar,
'rating'=>(!empty($rs->rating))?$rs->rating:'0',
'location'=>$rs->location,
'location'=>$rs->venue_name.', '.$rs->location,
'rate'=>$price,
'is_editors_choice'=>$rs->is_editors_choice,
'is_favorite'=>$rs->is_favorite === 'true'? true: false,
'latitude'=>$rs->latitude,
'longitude'=>$rs->longitude
);
array_push($response, $resData);
}
......@@ -448,103 +507,79 @@ class Webservice_model extends CI_Model {
function event($data) {
try {
$user_id = $this->auth_token_get($data['auth_token']);
if($user_id > 0) {
$event_id = $data['event_id'];
$cTime = date("H:i", strtotime('+15 minutes'));
$this->db->query("SET SESSION group_concat_max_len = 20000");
$rs = $this->db->query("SELECT IF(host_categories.show_layout = 0,'false','true') AS is_layout,IF(events.has_payment = 0,'false','true') AS is_payment_required,IF(favourite.is_favorite = 1,'true','false') AS is_favorite,events.event_id, CAST(AVG (review.rate) AS DECIMAL (12,1)) AS rate, (SELECT SUM(no_of_ticket) FROM booking WHERE event_id = events.event_id AND status IN (1,2)) AS attendees, 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,venue.venue_name,venue.venue_details,venue.location,venue.location_lat AS lat,venue.location_lng AS lng,venue.venue_name AS address_name,venue.venue_name_ar AS address_name_ar,venue.location AS address, GROUP_CONCAT(DISTINCT `event_gallery`.`media_url`) AS media_url,IF(favourite.status = 1,'true','false') 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, events.max_booking 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`.`status` != 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 LEFT JOIN review ON events.event_id = review.event_id INNER JOIN host_categories ON venue.host_cat_id = host_categories.host_cat_id WHERE event_date_time.date >= DATE_FORMAT(NOW(),'%Y-%m-%d') AND events.event_id = ".$event_id." GROUP BY events.event_id, event_date_time.event_id")->row();
$rs = $this->db->query("
SELECT host_categories.show_layout AS is_layout,events.has_payment AS is_payment_required,
favourite.is_favorite AS is_favorite,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,venue.venue_name,venue.venue_details,
venue.location,venue.location_lat AS lat,venue.location_lng AS lng,
venue.venue_name AS address_name,venue.venue_name_ar AS address_name_ar,
venue.location AS address, events.max_booking,
GROUP_CONCAT(DISTINCT tags.tag_name) AS tag,
GROUP_CONCAT(DISTINCT tags.tag_name_ar) AS tag_ar,
GROUP_CONCAT(DISTINCT `event_gallery`.`media_url`) AS 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
INNER JOIN venue ON venue.id=events.venue_id
LEFT JOIN event_gallery ON events.event_id=event_gallery.event_id AND
event_gallery.status != 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
LEFT JOIN review ON events.event_id = review.event_id
INNER JOIN host_categories ON venue.host_cat_id = host_categories.host_cat_id
WHERE event_date_time.date>='".date('Y-m-d')."' AND events.event_id=$event_id
GROUP BY events.event_id, event_date_time.event_id")->row();
if(count($rs)>0){
$resultData = array();
$event_layout = '';
$colorData = array();
$booking = $this->db->where('event_id',$event_id)->select('ticket_details')->get('booking')->result();
if(count($booking) > 0){
foreach ($booking as $row) {
$priceData[] = json_decode($row->ticket_details);
if(count($priceData) > 0){
foreach ($priceData as $value) {
// $colorData[$value->color] = isset($colorData[$value->color]) ? + $colorData[$value->color] + $value->no_ticket: $value->no_ticket;
}
}
}
}
$resultData = array();
$sql = "SELECT AVG(review.rate) AS rate
FROM review WHERE event_id=$event_id";
$rating = $this->db->query($sql)->row_array();
$rate = isset($rating['rate'])&&!empty($rating['rate'])?
$rating['rate']:'0.0';
$sql = "SELECT SUM(booking.no_of_ticket) AS attend FROM booking
WHERE status IN (1,2) AND event_id=$event_id";
$atten = $this->db->query($sql)->row_array();
$atte = isset($atten['attend'])&&!empty($atten['attend'])?
$atten['attend']:'0';
if($rs->layout!=''){
if($rs->custom_seat_layout!=''){
$pricelist = json_decode($rs->custom_seat_layout, TRUE);
$price = min(array_column($pricelist, 'price'));
$event_layout = $rs->custom_seat_layout;
} else {
$pricelist = json_decode($rs->layout_details, TRUE);
$price = min(array_column($pricelist, 'price'));
$event_layout = $rs->layout_details;
}
} else {
$pricelist = json_decode($rs->seat_pricing, TRUE);
$price = $pricelist['price'];
$event_layout = $rs->seat_pricing;
}
$bookedCount = 0;
$sql = "SELECT SUM(no_of_ticket) AS bookCount
FROM booking AS BOK
WHERE event_id='$event_id' AND customer_id='$user_id' AND status IN (1)";
$result = $this->db->query($sql)->row_array();
if(!empty($result)){
$bookedCount = $result['bookCount'];
}
$event_layout = json_decode($event_layout);
$event_layouts = array();
if(is_array($event_layout)){
foreach ($event_layout as $value) {
if(isset($colorData[$value->color])) {
$avaliable = $value->capacity - $colorData[$value->color];
} else {
$avaliable = $value->capacity;
}
$priceLayout = array('class_name' => $value->color,
'rate'=>$value->price,
'total_tickets'=>$value->capacity,
'available_tickets'=>$avaliable,
"max_ticket"=>$rs->max_booking-$bookedCount
);
array_push($event_layouts, $priceLayout);
}
} else {
$event_layouts[] = array('class_name' => null,
'rate'=>$event_layout->price,
'total_tickets'=>null,
'available_tickets'=>null,
"max_ticket"=>$rs->max_booking-$bookedCount
);
}
$dates = explode(',', $rs->date_time);
$time_spec = array();
$data_array = array();
foreach ($dates as $rss) {
list($id,$date,$time) = explode('#', $rss);
if($date == date("Y-m-d")){
$time_array = explode(':', $time);
if($time_array['0'] > date('H')) {
$time_spec[] = array('id'=>$id, 'date'=>$date, 'time'=>$time);
$data_array[$date][] = array('id'=>$id, 'time'=>$time);
}
} else {
$data_array[$date][] = array('id'=>$id, 'time'=>$time);
$sTime = $date.' '.$time;
$cTime = date("Y-m-d H:i", strtotime('+15 minutes'));
if($cTime < $sTime){
$time_spec[] = array('id'=>$id, 'date'=>$date, 'time'=>$time);
$data_array[$date][] = array('id'=>$id, 'time'=>$time);
}
}
$date_list = array();
foreach ($data_array as $key => $value) {
......@@ -552,8 +587,7 @@ class Webservice_model extends CI_Model {
}
$lang = $this->getUserLang($user_id);
if($rs->is_layout && !empty($pData = json_decode($rs->seat_pricing, TRUE))){
if($rs->is_layout == 1 && !empty($pData = json_decode($rs->seat_pricing, TRUE))){
if($lang == 'en'){
$rs->event_description .= '<p>'.$pData['price_details'].' '.'(SAR '.$pData['price'].')'.'</p>';
}
......@@ -561,18 +595,25 @@ class Webservice_model extends CI_Model {
$rs->event_discription_ar .= '<p>'.$pData['price_details_ar'].' '.'(SAR '.$pData['price'].')'.'</p>';
}
}
$event_layouts = [];
if(isset($data['event_date_id']) && !empty($eDateId = $data['event_date_id'])){
$param = array('user_id'=>$user_id,'event_id'=>$event_id,'time_id'=>$eDateId);
$event_layouts = $this->checkSeatAvailability($param);
}
$tags = ($lang == 'en')? explode(',', $rs->tag) : explode(',', $rs->tag_ar);
$media_url = explode(',', $rs->media_url);
$resData = array(
'event_id'=>$rs->event_id,
'name'=>($lang == 'en')?$rs->event_name:$rs->event_name_ar,
'description'=>($lang == 'en')?$rs->event_description:$rs->event_discription_ar,
'rating'=>$rs->rate,
'total_attendees'=>$rs->attendees == ''? '0': $rs->attendees,
'rating'=>$rate,
'total_attendees'=>$atte,
'layout_image'=>$rs->layout,
'is_favorite'=>$rs->is_favorite === 'true'? true: false,
'is_payment_required'=>$rs->is_payment_required === 'true'? true: false,
'is_layout'=>$rs->is_layout === 'true'? true: false,
'is_favorite'=>$rs->is_favorite == '1'? true: false,
'is_payment_required'=>$rs->is_payment_required == '1'? true: false,
'is_layout'=>$rs->is_layout == '1'? true: false,
'photos'=>$media_url,
'time'=>$time_spec[0]['time'],
'date'=>$time_spec[0]['date'],
......@@ -642,6 +683,31 @@ class Webservice_model extends CI_Model {
return $ci->email->send();
}
function sendSMS($phone_no, $message) {
$phone_no = trim($phone_no);
$phone_no = trim($phone_no,'+');
if(empty($phone_no) && count($phone_no) < 10 && empty($message)){
return;
}
$user = "eventstimeout";
$senderid = "SMSCountry";
$password = "timeout2030";
$url = "http://www.smscountry.com/SMSCwebservice_Bulk.aspx";
$message = urlencode($message);
if($ch = curl_init()){
$ret = curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "User=$user&passwd=$password&mobilenumber=$phone_no&message=$message&sid=$senderid&mtype=N&DR=Y");
$ret = curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$curlresponse = curl_exec ($ch);
}
}
function get_category_list($data) {
try {
......@@ -1002,6 +1068,42 @@ class Webservice_model extends CI_Model {
$id = $this->db->insert_id();
if($id){
$res = array('status'=>1,'data'=>array('bookingCode'=>$post_data['bookId']));
if($post_data['status'] == 1){
$bkData = $this->db->query("
SELECT EVT.event_name,CUST.name,CUST.email,CUST.phone,
CONCAT(EDATE.date,' ',EDATE.time) AS show_time
FROM booking AS BK
INNER JOIN events AS EVT ON (EVT.event_id=BK.event_id)
INNER JOIN customer AS CUST ON (CUST.customer_id=BK.customer_id)
INNER JOIN event_date_time AS EDATE ON (EDATE.id=BK.event_date_id)
WHERE BK.bookId='".$post_data['bookId']."' AND EVT.status='1' AND
BK.status='1' AND EDATE.status='1'")->row_array();
$subject = "Your Tickets - TimeOut";
$showTime = date("d'S F Y - h:i, (l)",strtotime($bkData['show_time']));
$msgContent = "Hi, Your booking is confirmed for the event '".
$bkData['event_name']."' and show is on '".$showTime."'.
Booking ID ".$post_data['bookId'];
$message = "<html><body><p>".$msgContent."</p></body></html>";
$template = getNotifTemplate();
if(isset($template['booking_mail']) && !empty($template['booking_mail'])){
$msgContent = str_replace(
array('{:event_name}','{:booking_id}','{:time}'),
array($bkData['event_name'],$post_data['bookId'],$showTime),
$template['booking_mail']);
}
$this->send_mail($subject,$bkData['email'],$message);
if(isset($template['booking_sms']) && !empty($template['booking_sms'])){
$msgContent = str_replace(
array('{:event_name}','{:booking_id}','{:time}'),
array($bkData['event_name'],$post_data['bookId'],$showTime),
$template['booking_sms']);
}
$this->sendSMS($bkData['phone'],$msgContent);
}
} else {
$res = array('status'=>0,'message'=>'Seat booking failed','code'=>'ER37');
}
......@@ -1050,25 +1152,59 @@ class Webservice_model extends CI_Model {
try {
$user_id = $this->auth_token_get($data['auth_token']);
if($user_id > 0) {
$where = array(
'favourite.status'=>1,
'favourite.is_favorite'=>1,
'favourite.user_id'=>$user_id,
'events.status'=>1
);
$lang = $this->db->select('language')->where('customer_id', $user_id)->get('customer')->row();
if($lang->language == 'ar') {
$lang = $this->getUserLang($user_id);
if($lang == 'ar') {
$cat_field = 'event_category.category_ar AS category';
$cat_field .= ',events.event_name_ar AS event_name';
} else {
$cat_field = 'event_category.category AS category';
$cat_field .= ',events.event_name AS event_name';
}
$result = $this->db->select("events.event_id,event_gallery.media_url,(SELECT COUNT(booking.id) FROM booking WHERE booking.event_id = events.event_id) AS attendees,
$cat_field,CAST(AVG (review.rate) AS DECIMAL (12,1)) AS rating,venue.location,IF(favourite.is_favorite = 0,'false','true') AS is_favorite,IF(events.provider_id = 0,'false','true') AS is_editors_choice,events.seat_pricing,events.custom_seat_layout,venue.layout,venue.layout_details")->where($where)->from('favourite')->join('review', 'review.event_id = favourite.event_id','LEFT')->join('events', 'events.event_id = favourite.event_id')->join('booking', 'booking.event_id = events.event_id','LEFT')->join('venue', 'venue.id = events.venue_id')->join('event_category', 'events.category_id = event_category.cat_id')->join('event_gallery', 'events.event_id = event_gallery.event_id AND event_gallery.media_type = 0', 'LEFT')->group_by('events.event_id')->get()->result();
$result = $this->db->query("
SELECT events.event_id, event_gallery.media_url, (SELECT COUNT(booking.id) FROM booking WHERE booking.event_id = events.event_id) AS attendees, event_category.category AS category, events.event_name AS event_name, CAST(AVG (review.rate) AS DECIMAL (12, 1)) AS rating, venue.location, IF(favourite.is_favorite = 0, 'false', 'true') AS is_favorite, IF(events.provider_id = 0, 'false', 'true') AS is_editors_choice, events.seat_pricing, events.custom_seat_layout, venue.layout, venue.layout_details, GROUP_CONCAT(DISTINCT CONCAT_WS('#', event_date_time.id, event_date_time.date, event_date_time.time)) AS date_time
FROM favourite
INNER JOIN events ON events.event_id=favourite.event_id
INNER JOIN venue ON venue.id=events.venue_id
INNER JOIN event_date_time ON event_date_time.event_id=events.event_id
INNER JOIN event_category ON events.category_id=event_category.cat_id
LEFT JOIN review ON review.event_id=favourite.event_id
LEFT JOIN booking ON booking.event_id=events.event_id
LEFT JOIN event_gallery ON events.event_id=event_gallery.event_id AND
event_gallery.media_type=0
WHERE favourite.status=1 AND favourite.is_favorite=1 AND
favourite.user_id='$user_id' AND events.status=1 AND
event_date_time.date>=DATE_FORMAT(NOW(),'%Y-%m-%d')
GROUP BY events.event_id")->result();
if(empty($result)){
return array('status'=>1,'data' => []);
}
if(count($result)>0){
foreach ($result AS $key => $rs) {
if(!empty($dates = explode(',',$rs->date_time))){
$checkTime = 0;
foreach ($dates as $date) {
if(empty($date)){
unset($result[$key]);
continue;
}
$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)){
unset($result[$key]);
}
} else {
unset($result[$key]);
}
}
if(($count = count($result)) > 0){
$response = array();
foreach ($result as $rs) {
if($rs->layout!=''){
......@@ -1223,13 +1359,26 @@ class Webservice_model extends CI_Model {
try {
$user_id = $this->auth_token_get($data['auth_token']);
if($user_id > 0) {
$settingsDetails = $this->db->query("SELECT privacy_policy_en,terms_and_conditions_en,contact_number FROM privacy_policy")->row_array();
$notificationDetails = $this->db->query("SELECT notification_status, email_status FROM users WHERE id = ".$user_id."")->row_array();
$lang = $this->getUserLang($user_id);
$fields = 'privacy_policy_en AS privacy_policy,
terms_and_conditions_en AS terms_and_conditions,';
if($lang == 'ar'){
$fields = 'privacy_policy_ar AS privacy_policy,
terms_and_conditions_ar AS terms_and_conditions,';
}
$settingsDetails = $this->db->query("SELECT $fields contact_number FROM privacy_policy")
->row_array();
$notificationDetails = $this->db->query("SELECT notification_status, email_status
FROM users WHERE id = ".$user_id."")
->row_array();
if(count($settingsDetails)>0 && count($notificationDetails)>0){
$resultData = array_merge($settingsDetails, $notificationDetails);
$resultArray = array(
'privacy_policy'=>$resultData['privacy_policy_en'],
'terms_and_conditions'=>$resultData['terms_and_conditions_en'],
'privacy_policy'=>$resultData['privacy_policy'],
'terms_and_conditions'=>$resultData['terms_and_conditions'],
'contact_number'=>$resultData['contact_number'],
'notification_status'=>$resultData['notification_status'] == 0? 0: 1,
'email_status'=>$resultData['email_status'] == 0? 0: 1
......@@ -1336,12 +1485,12 @@ class Webservice_model extends CI_Model {
if(!EMPTY($locality)) {
$locality = $locality;
}else{
$locality = 'null';
$locality = array();
}
if(!EMPTY($category)) {
$category = $category;
}else{
$category = 'null';
$category = array();
}
if(isset($dateArray)){
$resultData = array();
......@@ -1371,7 +1520,8 @@ class Webservice_model extends CI_Model {
$data = array('android_version_code'=>$settings['android_version'],
'ios_version_code'=>$settings['ios_version'],
'android_playstore_link'=>$settings['android_playstore_url'],
'ios_playstore_link'=>$settings['ios_playstore_url']);
'ios_playstore_link'=>$settings['ios_playstore_url'],
'is_force_update'=>($settings['force_update'])?true:false);
$res = array('status'=>1,'data'=>$data);
}else {
......@@ -1403,6 +1553,207 @@ class Webservice_model extends CI_Model {
}
return $res;
}
function event_search($data) {
$res = array();
try{
$user_id = $this->auth_token_get($data['auth_token']);
if($user_id > 0) {
$per_page = 10;
$str = urldecode(strtolower($data['query']));
$this->db->query("SET SESSION group_concat_max_len = 20000");
$sql = "SELECT GROUP_CONCAT(DISTINCT CONCAT_WS('#',EDATE.id,EDATE.date,EDATE.time))
AS date_time
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 event_gallery AS IMG ON
(IMG.event_id=EVT.event_id AND IMG.media_type=0)
WHERE (EVT.event_name LIKE '%$str%' OR
EVT.event_name_ar LIKE '%$str%') AND
EDATE.date>=DATE_FORMAT(NOW(),'%Y-%m-%d') AND EVT.status='1' AND
VEN.status='1' AND IMG.status='1' AND EDATE.status='1'
GROUP BY EVT.event_id";
$resCount = $this->db->query($sql)->result();
if(empty($resCount)){
return array('status'=>0,'message'=>'No Data Found','code'=>'ER18');
}
foreach ($resCount AS $key => $rs) {
if(!empty($dates = explode(',',$rs->date_time))){
$checkTime = 0;
foreach ($dates as $date) {
if(empty($date)){
unset($resCount[$key]);
continue;
}
$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)){
unset($resCount[$key]);
}
} else {
unset($resCount[$key]);
}
}
$count = count($resCount);
$page = (isset($data['page']))?$data['page']:1;
$page_limit = ($page - 1) * $per_page;
$meta = array('total_pages'=>ceil($count/$per_page),'total'=>$count,
'current_page'=>$page,'per_page'=>$per_page);
if($count > 0 && $count > $page_limit) {
$lang = $this->getUserLang($user_id);
if($lang == 'en') $event_name = 'events.event_name AS event_name';
else $event_name = 'events.event_name_ar AS event_name';
$limit = $page_limit.','.$per_page;
$this->db->query("SET SESSION group_concat_max_len = 20000");
$sql = "SELECT EVT.event_id,EVT.event_name,VEN.location,
IMG.media_url AS event_image,
GROUP_CONCAT(DISTINCT CONCAT_WS('#',EDATE.id,EDATE.date,EDATE.time))
AS date_time
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 event_gallery AS IMG ON
(IMG.event_id=EVT.event_id AND IMG.media_type=0)
WHERE (EVT.event_name LIKE '%$str%' OR
EVT.event_name_ar LIKE '%$str%') AND
EDATE.date>=DATE_FORMAT(NOW(),'%Y-%m-%d') AND EVT.status='1' AND
VEN.status='1' AND IMG.status='1' AND EDATE.status='1'
GROUP BY EVT.event_id
ORDER BY EVT.event_id DESC
LIMIT $limit";
$result = $this->db->query($sql)->result();
foreach ($result AS $key => $rs) {
if(!empty($dates = explode(',',$rs->date_time)) && count($dates) > 0){
$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)){
unset($result[$key]);
}
} else {
unset($result[$key]);
}
unset($result[$key]->date_time);
}
$res = array('status'=>1,'data'=>array('events'=>$result,'meta'=>$meta));
} else {
$res = array('status'=>1,'data'=>array('events'=>[],'meta'=>$meta));
}
} else {
$res = array('status'=>0,'message'=>'User Authentication Failed','code'=>'ER15');
}
} catch(Exception $e) {
$res = array('status'=>0,'message'=>'Ohh No!! Something went South!!','code'=>'ER06');
}
return $res;
}
public function checkSeatAvailability($data = ''){
$user_id = $data['user_id'];
$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);
$evtData = $evtSql->row_array();
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);
$lyCapacity['price'] = $lyout['price'];
$lyCapacity['capacity'] = $lyout['capacity'];
} else {
$lyout = (!empty($evtData['custom_seat_layout']))
?json_decode($evtData['custom_seat_layout'],true)
:json_decode($evtData['layout_details'],true);
foreach($lyout AS $custLy) {
$lyCapacity[$custLy['color']] = array('price'=>$custLy['price'],
'capacity'=>$custLy['capacity'],
'weekend_price'=>$custLy['weekend_price']);
}
}
$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){
$lyCapacity['capacity'] = $lyCapacity['capacity']-$value['no_of_ticket'];
} else {
$tkDtls = json_decode($value['ticket_details'],true);
$aval = $lyCapacity[$tkDtls['color']]['capacity'];
$aval = ($tkDtls['no_ticket']>$aval)?0:$aval-$tkDtls['no_ticket'];
$lyCapacity[$tkDtls['color']]['capacity'] = $aval;
}
}
}
$event_layouts = array();
if($evtData['show_layout'] == 0){
$capacity = $lyCapacity['capacity'];
$lyCapacity['capacity'] = ($capacity < $maxBooking)? $capacity : $maxBooking;
$event_layouts[] = array('rate' => $lyCapacity['price'],
'class_name' => null,
'max_ticket' => $lyCapacity['capacity']);
} else {
foreach($lyCapacity AS $block => $sData) {
$capacity = $sData['capacity'];
$lyCapacity[$block]['capacity'] = ($capacity < $maxBooking)? $capacity : $maxBooking;
$event_layouts[] = array('rate' => $lyCapacity[$block]['price'],
'class_name' => $block,
'max_ticket' => $lyCapacity[$block]['capacity']);
}
}
return $event_layouts;
}
}
?>
......
......@@ -44,7 +44,7 @@
<th width="130px;">Scheduled On</th>
<th width="50px;">Amount</th>
<th width="50px;">Status</th>
<th width="150px;">Action</th>
<th width="40px;">Action</th>
</tr>
</thead>
<tbody>
......@@ -75,9 +75,9 @@
<a class="btn btn-sm btn-info" id="viewBooking" booking_id="<?= encode_param($booking->booking_id) ?>">
<i class="fa fa-fw fa-eye"></i>View
</a>
<a class="btn btn-sm btn-danger" status="2" onclick="confirmDelete(jQuery(this),'Booking/changeStatus',{'booking_id':'<?= encode_param($booking->booking_id) ?>'})">
<!-- <a class="btn btn-sm btn-danger" status="2" onclick="confirmDelete(jQuery(this),'Booking/changeStatus',{'booking_id':'<?= encode_param($booking->booking_id) ?>'})">
<i class="fa fa-fw fa-trash"></i>Delete
</a>
</a> -->
<?php } ?>
</td>
</tr>
......
......@@ -269,22 +269,29 @@
<div class="form-group">
<label>Price</label>
<input type="text" class="form-control required" placeholder="Price"
data-parsley-trigger="change" data-parsley-minlength="2" data-parsley-pattern="^[0-9\ . \/]+$" name="price"
required>
data-parsley-trigger="change" data-parsley-minlength="1" data-parsley-pattern="^[0-9\ . \/]+$" name="price">
</div>
</div>
<div class="col-sm-5">
<div class="col-sm-2">
<div class="form-group">
<label>Capacity</label>
<input type="text" class="form-control required" placeholder="Provide Capacity"
data-parsley-trigger="change" data-parsley-minlength="1"
name="capacity" data-parsley-pattern="^[0-9\ . \/]+$">
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label>About Price Division (English)</label>
<textarea type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Price Division (English)" name="price_details" required
style="height:35px; min-height:35px; max-width: 410px; min-width: 410px;" data-parsley-trigger="change" data-parsley-minlength="2"></textarea>
style="height:35px; min-height:35px; max-width: 300px; min-width: 330px;" data-parsley-trigger="change" data-parsley-minlength="2"></textarea>
</div>
</div>
<div class="col-sm-5">
<div class="col-sm-4">
<div class="form-group">
<label>About Price Division (Arabic)</label>
<textarea type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Price Division (Arabic)" name="price_details_ar" required
style="height:35px; min-height:35px; max-width: 410px; min-width: 410px;" data-parsley-trigger="change" data-parsley-minlength="2"></textarea>
style="height:35px; min-height:35px; max-width: 300px; min-width: 330px;" data-parsley-trigger="change" data-parsley-minlength="2"></textarea>
</div>
</div>
</div>
......
......@@ -303,21 +303,28 @@
<div class="form-group">
<label>Price</label>
<input type="text" class="form-control required" placeholder="Price"
data-parsley-trigger="change" data-parsley-minlength="2" data-parsley-pattern="^[0-9\ . \/]+$" name="price"
value="<?= $seat_pricing['price'] ?>"
required>
name="price" data-parsley-trigger="change" data-parsley-minlength="1" data-parsley-pattern="^[0-9\ . \/]+$" value="<?= $seat_pricing['price'] ?>">
</div>
</div>
<div class="col-sm-5">
<div class="col-sm-2">
<div class="form-group">
<label>Capacity</label>
<input class="form-control required" placeholder="Provide Capacity"
type="text" data-parsley-trigger="change" data-parsley-minlength="1"
value="<?=isset($seat_pricing['capacity'])?$seat_pricing['capacity']:''?>"
name="capacity" data-parsley-pattern="^[0-9\ . \/]+$">
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label>About Price Division</label>
<label>About Price Division (English)</label>
<textarea type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Price Division (English)" name="price_details" required
style="height:35px;" data-parsley-trigger="change" data-parsley-minlength="2"><?= $seat_pricing['price_details'] ?></textarea>
</div>
</div>
<div class="col-sm-5">
<div class="col-sm-4">
<div class="form-group">
<label>About Price Division</label>
<label>About Price Division (Arabic)</label>
<textarea type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Price Division (Arabic)" name="price_details_ar" required
style="height:35px;" data-parsley-trigger="change" data-parsley-minlength="2"><?= (isset($seat_pricing['price_details_ar']))?$seat_pricing['price_details_ar']:'' ?></textarea>
</div>
......
......@@ -85,6 +85,17 @@
</div>
</div>
</div>
<div class="col-sm-12">
<div class="col-sm-6">
<div class="form-group">
<label>Booking Mail</label>
<p>Event Name => {:event_name} , Booking ID => {:booking_id} , Time => {:time}</p>
<textarea id="rich_editor_10" type="text" class="ip_reg_form_input form-control reset-form-custom" placeholder="Booking Mail" name="booking_mail"
style="height:108px;" data-parsley-trigger="change"><?= $notificationData->booking_mail ?></textarea>
</div>
</div>
</div>
</div>
<div class="box-header with-border">
......@@ -95,15 +106,25 @@
<div class="col-sm-6">
<div class="form-group">
<label>Registration SMS</label>
<p>Email => {:email}</p>
<textarea type="text" class="ip_reg_form_input form-control reset-form-custom" placeholder="Registration SMS" name="registration_sms" style="height:108px;" data-parsley-trigger="change"><?= $notificationData->registration_sms ?></textarea>
</div>
</div>
<div class="col-sm-6">
<!-- <div class="col-sm-6">
<div class="form-group">
<label>Forgot SMS</label>
<p>URL => {:url}</p>
<textarea type="text" class="ip_reg_form_input form-control reset-form-custom" placeholder="Forgot SMS" name="forgot_sms" style="height:108px;" data-parsley-trigger="change"><?= $notificationData->forgot_sms ?></textarea>
</div>
</div> -->
<div class="col-sm-6">
<div class="form-group">
<label>Booking SMS</label>
<p>Event Name => {:event_name} , Booking ID => {:booking_id} , Time => {:time}</p>
<textarea type="text" class="ip_reg_form_input form-control reset-form-custom" placeholder="Booking SMS" name="booking_sms" style="height:108px;" data-parsley-trigger="change"><?= $notificationData->booking_sms ?></textarea>
</div>
</div>
</div>
......
......@@ -124,6 +124,10 @@
<label>Android Playstore URL</label>
<input type="text" name="android_playstore_url" class="form-control required" placeholder="Enter Android Playstore URL" value="<?= $data['android_playstore_url'] ?>">
</div>
<div class="form-group col-xs-6">
<label>Force Update App</label>
<input type="text" name="force_update" class="form-control required" placeholder="Force Update App (0/1)" value="<?=$data['force_update']?>" data-parsley-pattern="^[0,1]+$">
</div>
</div>
</div>
<div class="box-footer" style="padding-left:46%">
......
......@@ -15,7 +15,7 @@
<script src="<?= base_url('assets/js/bootbox.min.js') ?>"></script>
<script src="<?= base_url('assets/js/app.min.js') ?>"></script>
<script src="<?= base_url('assets/js/locationpicker.js') ?>" type="text/javascript"></script>
<script src="<?= base_url('assets/js/custom-script.js') ?>"></script>
<script src="<?= base_url('assets/js/custom-script.js?ts='.time()) ?>"></script>
<script src="<?= base_url('assets/js/parsley.min.js') ?>"></script>
<script src="https://cdn.ckeditor.com/4.5.7/standard/ckeditor.js"></script>
<script src="<?= base_url('assets/js/bootstrap-datepicker.js') ?>"></script>
......@@ -32,6 +32,7 @@
if(jQuery('#rich_editor_6').length==1){CKEDITOR.replace('rich_editor_6');}
if(jQuery('#rich_editor_8').length==1){CKEDITOR.replace('rich_editor_8');}
if(jQuery('#rich_editor_9').length==1){CKEDITOR.replace('rich_editor_9');}
if(jQuery('#rich_editor_10').length==1){CKEDITOR.replace('rich_editor_10');}
if(jQuery('#rich_editor_3').length==1){CKEDITOR.replace('rich_editor_3',{language:'ar'});}
if(jQuery('#rich_editor_4').length==1){CKEDITOR.replace('rich_editor_4',{language:'ar'});}
......
......@@ -28,7 +28,7 @@
<div class="col-md-12">
<div class="box box-warning">
<div class="box-body">
<form role="form" action="<?= base_url($url) ?>" method="post"
<form name="venueForm" role="form" action="<?= base_url($url) ?>" method="post"
class="validate" data-parsley-validate="" enctype="multipart/form-data">
<div class="col-md-6">
<?php if(!empty($regionData)){ ?>
......@@ -83,7 +83,7 @@
<span class="glyphicon form-control-feedback"></span>
</div>
<?php if(!isset($venue_id) || empty($venue_id)){ ?>
<div class="form-group" style="padding-top: 5px;">
<div id="locality_block" class="form-group disable-div" style="padding-top: 5px;">
<label id="localityLabel">Venue Locality</label>
<div id="showType" class="hide">
<div class="col-md-5">
......@@ -109,17 +109,58 @@
<select name="locality_id" class="form-control" placeholder="Select Locality"></select>
</div>
</div>
<?php } else { ?>
<div id="locality_block" class="form-group" style="padding-top: 5px;">
<label id="localityLabel">Venue Locality</label>
<div id="showType">
<div class="col-md-5">
<input type="radio" name="locality_type" value="0" checked>
<label class="padAll-10">Use Existing Locality</label>
</div>
<div class="col-md-4">
<input class="marginLeft15" type="radio" name="locality_type" value="1">
<label class="padAll-10">Add New Locality</label>
</div>
</div>
<div id="addNew" class="form-group hide">
<div style="width:49%;display:inline-block;">
<input type="text" class="form-control" data-parsley-trigger="change"
name="locality" placeholder="Locality (English)">
</div>
<div style="width:49%;display:inline-block;">
<input type="text" class="form-control" data-parsley-trigger="change"
name="locality_ar" placeholder="Locality (Arabic)">
</div>
</div>
<div id="useExist" class="form-group">
<select name="locality_id" class="form-control required"
placeholder="Select Locality">
<option selected disabled>Choose a Locality</option>
<?php
if(!empty($localityData)){
foreach ($localityData as $locality) {
$select = (isset($venue_data->locality_id) && $venue_data->locality_id == $locality->id)?'selected':'';
echo '<option '.$select.' value="'.$locality->id.'">'.
$locality->locality.
'</option>';
}
}
?>
</select>
</div>
</div>
<?php } ?>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Venue Address</label>
<input type="text" class="form-control required" data-parsley-trigger="change" required name="location" placeholder="Venue Address" value="<?= (isset($venue_data->location))?$venue_data->location:'' ?>">
<input type="text" class="form-control" data-parsley-trigger="change" name="location" placeholder="Venue Address" value="<?= (isset($venue_data->location))?$venue_data->location:'' ?>">
</div>
<input type="hidden" id="gooLocLat" value="<?= (isset($venue_data->location_lat) && !empty($venue_data->location_lat))?$venue_data->location_lat:'' ?>" />
<input type="hidden" id="gooLocLng" value="<?= (isset($venue_data->location_lng) && !empty($venue_data->location_lng))?$venue_data->location_lng:'' ?>" />
<input type="hidden" id="gooLocZoom" value="<?= (isset($venue_data->location))?15:0 ?>"/>
<div id="locPointerMap" style="height: 352px;"></div>
<div id="locPointerMap" style="height:355px;"></div>
</div>
<input id="has_layout" type="hidden" name="has_layout" value='0'>
<div class="col-md-12" id="layoutCntr" class="hide">
......@@ -218,7 +259,7 @@
</div>
<div class="col-md-12 padTop10">
<div class="box-footer textCenterAlign">
<button type="submit" class="btn btn-primary">Submit</button>
<button id="venueAddBtn" type="button" class="btn btn-primary">Submit</button>
<a href="<?= base_url('Venue/listVenues') ?>" class="btn btn-primary">Cancel</a>
</div>
</div>
......
......@@ -682,4 +682,12 @@
.datepicker{
z-index: 9999 !important;
}
.disable-div {
-webkit-filter: blur(1px) !important;
pointer-events: none;
cursor: default;
text-decoration: none;
color: black;
}
\ No newline at end of file
......@@ -804,6 +804,8 @@ jQuery('[name="region_id"]').on('change',function(){
jQuery('[id="useExist"]').addClass('hide');
jQuery('[name="locality_id"]').prop("disabled",true);
jQuery('[name="locality_id"]').removeClass("required");
jQuery('[id="locality_block"]').removeClass("disable-div");
}
if(resp_data['status'] == 1){
......@@ -825,6 +827,8 @@ jQuery('[name="region_id"]').on('change',function(){
jQuery.each(resp_data['data'], function(key, data) {
jQuery('[name="locality_id"]').append(jQuery("<option></option>").attr("value",data['id']).text(data['locality']));
});
jQuery('[id="locality_block"]').removeClass("disable-div");
}
}
});
......@@ -935,3 +939,8 @@ function confirmDelete(thisObj,fnName,params){
updateStatus(thisObj,fnName,params,status);
}
}
jQuery('[id="venueAddBtn"]').on('click',function(event) {
jQuery('[name="location"]').addClass('required');
jQuery('[name="venueForm"]').submit();
});
This source diff could not be displayed because it is too large. You can view the blob instead.
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