diff --git a/application/controllers/Api.php b/application/controllers/Api.php index 0c628a8..344fa77 100644 --- a/application/controllers/Api.php +++ b/application/controllers/Api.php @@ -214,7 +214,7 @@ class Api extends CI_Controller { $data = $_POST; if(isset($_FILES['profile_picture'])) { $data['file'] = $_FILES['profile_picture']; - } + } $data['auth_token'] = $this->auth_token; $res = $this->Api_model->update_profile($data); if($res['status']!=0){ @@ -287,6 +287,19 @@ class Api extends CI_Controller { } } + public function searchEvent($str = null) { + $data['str'] = $str; + $res = $this->Api_model->searchEvent($data); + if($res['status']!=0){ + $this->response($res['data']); + } + else{ + $this->errorResponse($res['code'],$res['message']); + } + } + + + } \ No newline at end of file diff --git a/application/controllers/Venue.php b/application/controllers/Venue.php index 5934844..95c3601 100644 --- a/application/controllers/Venue.php +++ b/application/controllers/Venue.php @@ -28,6 +28,7 @@ class Venue extends CI_Controller { function addVenues(){ $this->load->model('Host_model'); $this->load->model('Region_model'); + $template['host_data'] = $this->Host_model->getHostCategories('','1'); $template['regionData'] = $this->Region_model->getRegionData('','1'); @@ -73,7 +74,6 @@ class Venue extends CI_Controller { $err = 1; $errMsg = 'Provide Proper Layout details'; } - if(isset($_POST['has_layout']) && $_POST['has_layout'] == 1){ $config = set_upload_service("assets/uploads/services"); $this->load->library('upload'); @@ -115,9 +115,14 @@ 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 = ''; + if(isset($_POST['locality']) && !empty($_POST['locality'])){ + $locality = $_POST['locality']; + } + unset($_POST['locality'],$_POST['locality_type'],$_POST['has_layout'],$_POST['seat_color'], + $_POST['seat_price'],$_POST['seat_capacity']); - $status = $this->Venue_model->createVenue($_POST); + $status = $this->Venue_model->createVenue($_POST,$locality); if($status == 1){ $flashMsg['class'] = 'success'; $flashMsg['message'] = 'Venue Created'; @@ -264,5 +269,20 @@ class Venue extends CI_Controller { } echo json_encode($resArr);exit; } + + function getLocalityData(){ + $resArr = array('status'=>0); + if(!isset($_POST) || empty($_POST) || !isset($_POST['region_id']) || empty($_POST['region_id'])){ + echo json_encode($resArr);exit; + } + + $this->load->model('Region_model'); + $localityData = $this->Region_model->getlocalityData($_POST['region_id'],'','1'); + if(!empty($localityData)){ + $resArr['status'] = 1; + $resArr['data'] = $localityData; + } + echo json_encode($resArr);exit; + } } ?> diff --git a/application/controllers/Webservice.php b/application/controllers/Webservice.php new file mode 100644 index 0000000..2cca146 --- /dev/null +++ b/application/controllers/Webservice.php @@ -0,0 +1,120 @@ +<?php +defined('BASEPATH') OR exit('No direct script access allowed'); +if (isset($_SERVER['HTTP_ORIGIN'])) { + header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); + header('Access-Control-Allow-Credentials: true'); + header('Access-Control-Max-Age: 86400'); + } + + if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { + if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) + header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); + + if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) + header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); + + exit(0); + } + +class Webservice extends CI_Controller { + var $auth_token; + + public function __construct() { + parent::__construct(); + $this->load->model('Webservice_model'); + $this->load->model('Validation_app_model'); + $method = $this->router->fetch_method(); + $data = (array) json_decode(file_get_contents('php://input')); + if($method == 'profile') { + $data = $_POST; + } + if (isset(apache_request_headers()['Auth'])) { + $this->auth_token = apache_request_headers()['Auth']; + $data['auth_token'] = $this->auth_token; + } + $res = $this->Validation_app_model->validation_check($method, $data); + if($res['state'] == 1) { + $this->errorResponse($res['response']['code'], $res['response']['message']); + die; + } + } + + public function login() { + $data = (array) json_decode(file_get_contents('php://input')); + $res = $this->Webservice_model->login($data); + if($res['status']!=0){ + $this->response($res['data']); + } + else{ + $this->errorResponse($res['code'],$res['message']); + } + } + + + public function check_email_availability() { + $data = (array) json_decode(file_get_contents('php://input')); + $res = $this->Webservice_model->availability($data); + if($res['status']!=0){ + $this->response($res['data']); + } + else{ + $this->errorResponse($res['code'],$res['message']); + } + } + + public function registration(){ + $data = (array) json_decode(file_get_contents('php://input')); + $res = $this->Webservice_model->register($data); + if($res['status']!=0){ + $this->response($res['data']); + } + else{ + $this->errorResponse($res['code'],$res['message']); + } + } + + public function get_places_list($cat_id = null) { + $data['cat_id'] = $cat_id; + $data['auth_token'] = $this->auth_token; + $res = $this->Webservice_model->discover($data); + if($res['status']!=0){ + $this->response($res['data']); + } + else{ + $this->errorResponse($res['code'],$res['message']); + } + } + + public function place_details($event_id = null) { + if($event_id == null) { + $this->errorResponse("ER16","Event id is null or empty"); + die; + } + $data['event_id'] = $event_id; + $data['auth_token'] = $this->auth_token; + $res = $this->Webservice_model->event($data); + if($res['status']!=0){ + $this->response($res['data']); + } + else{ + $this->errorResponse($res['code'],$res['message']); + } + } + + public function response($data) { + $result = array( + 'status' => 'Success', + 'data' =>$data + ); + print json_encode($result); + } + + public function errorResponse($errorCode, $errorDesc) { + $result = array( + 'status' => 'error', + 'error'=> $errorCode, + 'message'=> $errorDesc + ); + print json_encode($result); + } +} \ No newline at end of file diff --git a/application/models/Api_model.php b/application/models/Api_model.php index 72e3c6b..0479bfd 100644 --- a/application/models/Api_model.php +++ b/application/models/Api_model.php @@ -8,7 +8,7 @@ class Api_model extends CI_Model { public function login($data){ try{ - $this->db->select('customer.name,customer.phone,customer.email,customer.profile_image AS image,customer.gender,users.id AS userId, customer.city'); + $this->db->select('customer.name,customer.dob,customer.phone,customer.email,customer.profile_image AS image,customer.gender,users.id AS userId, customer.city,customer.dob'); $this->db->where('users.status',1); $this->db->where('users.password',md5($data['password'])); $this->db->where('customer.email',$data['email_id']); @@ -66,7 +66,7 @@ class Api_model extends CI_Model { $email_id = $data['email_id']; $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); - $this->db->select('customer.name,customer.phone,customer.email,customer.profile_image AS image,customer.gender,users.id AS userId, customer.city'); + $this->db->select('customer.name,customer.dob,customer.phone,customer.email,customer.profile_image AS image,customer.gender,users.id AS userId, customer.city,customer.dob'); $this->db->where('users.id',$id); $this->db->from('users'); $this->db->join('customer','customer.customer_id = users.id'); @@ -294,7 +294,7 @@ class Api_model extends CI_Model { $page_limit = ($page - 1) * $per_page; if($count > $page_limit) { - $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_discription,event_gallery.media_url,venue.location')->where('customer_id',$user_id)->where('booking.status!=',3)->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')->limit($per_page,$page_limit)->get()->result(); + $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_discription,event_gallery.media_url,venue.location')->where('customer_id',$user_id)->where('booking.status!=',3)->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')->limit($per_page,$page_limit)->get()->result(); $meta = array('total_pages'=>ceil($count/$per_page), 'total'=>$count, 'current_page'=>$page, @@ -453,7 +453,7 @@ class Api_model extends CI_Model { } if($img_error == 1) { - $this->db->select('customer.name,customer.phone,customer.email,customer.profile_image AS image,customer.gender,users.id AS userId, customer.city'); + $this->db->select('customer.name,customer.dob,customer.phone,customer.email,customer.profile_image AS image,customer.gender,users.id AS userId, customer.city'); $this->db->where('users.id',$user_id); $this->db->from('users'); $this->db->join('customer','customer.customer_id = users.id'); @@ -593,8 +593,9 @@ class Api_model extends CI_Model { $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0) { $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_discription AS event_description,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." GROUP BY events.event_id")->result(); + $result = $this->db->query("SELECT events.event_id, events.event_name,events.event_discription AS event_description,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(); if(count($result)>0){ $resultData = array(); foreach ($result as $rs) { @@ -642,7 +643,8 @@ class Api_model extends CI_Model { $user_id = $this->auth_token_get($data['auth_token']); if($user_id > 0) { $event_id = $data['event_id']; - $result = $this->db->query("SELECT events.event_id, AVG(review.rate) AS rate, MAX(booking.id) AS attendees, events.event_name,events.event_discription AS event_description,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, GROUP_CONCAT(DISTINCT `event_gallery`.`media_url`) AS media_url,favourite.status AS fav_status, GROUP_CONCAT(DISTINCT tags.tag_name) AS tag, GROUP_CONCAT(DISTINCT CONCAT_WS('#',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 WHERE events.event_id = ".$event_id." GROUP BY events.event_id, event_date_time.event_id")->result(); + $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_discription AS event_description,events.seat_pricing, events.custom_seat_layout, events.seat_pricing, venue.layout, venue.layout_details,venue.venue_name,venue.venue_details,venue.location,venue.location_lat AS lat,venue.location_lng AS lng, GROUP_CONCAT(DISTINCT `event_gallery`.`media_url`) AS media_url,favourite.status AS fav_status, events.max_booking, host_categories.show_layout, GROUP_CONCAT(DISTINCT tags.tag_name) AS tag, 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 events.event_id = ".$event_id." GROUP BY events.event_id, event_date_time.event_id")->result(); if(count($result)>0){ $resultData = array(); $event_layout = ''; @@ -667,8 +669,8 @@ class Api_model extends CI_Model { $time_spec = array(); $latlng = array('lat'=>$rs->lat, 'lng'=>$rs->lng); foreach ($dates as $rss) { - list($date,$time) = explode('#', $rss); - $time_spec[$date][] = $time; + $timeArray = explode('#', $rss); + $time_spec[$timeArray[1]][] = array("id"=>$timeArray[0],"time"=>$timeArray[2]); } $tags = explode(',', $rs->tag); $media_url = explode(',', $rs->media_url); @@ -684,12 +686,15 @@ class Api_model extends CI_Model { 'event_tags'=>$tags, 'event_layout_url'=>$rs->layout, 'event_price_layout'=>$event_layout, + 'seat_pricing'=>$rs->seat_pricing, 'event_times'=>$time_spec, 'fav_status'=>$rs->fav_status, 'event_id'=>$rs->event_id, 'venue_name'=>$rs->venue_name, 'venue_details'=>$rs->venue_details, 'venue_location'=>$rs->location, + 'max_booking'=>$rs->max_booking, + 'show_layout'=>$rs->show_layout, 'latlng'=>$latlng ); array_push($resultData, $resData); @@ -838,6 +843,16 @@ class Api_model extends CI_Model { } return $res; } + + + 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()); + $res = array('status'=>1,'data'=>$response); + return $res; + } } ?> \ No newline at end of file diff --git a/application/models/Region_model.php b/application/models/Region_model.php index d591076..40ab788 100644 --- a/application/models/Region_model.php +++ b/application/models/Region_model.php @@ -40,5 +40,17 @@ class Region_model extends CI_Model { array('id'=>$region_id)); return $status; } + + public function getlocalityData($region_id = '',$locality_id = '', $status = '0'){ + $where = array('status'=>$status); + if(!empty($region_id)){ + $where['region_id'] = $region_id; + } + if(!empty($locality_id)){ + $where['id'] = $locality_id; + } + $data = $this->db->get_where('locality',$where); + return $data->result(); + } } ?> \ No newline at end of file diff --git a/application/models/Validation_app_model.php b/application/models/Validation_app_model.php new file mode 100644 index 0000000..c23f2ff --- /dev/null +++ b/application/models/Validation_app_model.php @@ -0,0 +1,80 @@ +<?php + +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'), + ) + ), + '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') + ), + 'phone'=>array('required'=>array('code'=>'ER07', 'message'=>'Phone no is null or empty'), + 'phone'=>array('code'=>'ER08', 'message'=>'Invalid Phone no') + ), + ), + 'registration'=> array('email'=>array('required'=>array('code'=>'ER02', 'message'=>'Email id is null or empty'), + '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'), + ), + 'password'=>array('required'=>array('code'=>'ER04', 'message'=>'Password is null or empty'), + ) + ), + 'get_places_list'=>array('auth_token'=>array('required'=>array('code'=>'ER17', 'message'=>'User Id is null or empty'), + ) + ), + 'place_details'=>array('auth_token'=>array('required'=>array('code'=>'ER17', 'message'=>'User Id is null or empty'), + ) + ), + ); + + public function validation_check($method_name, $parms) { + $state = 0; + $rules = $this->validation_array[$method_name]; + $error_key = ''; + foreach ($rules as $key => $value) { + foreach ($value as $keys => $values) { + switch ($keys) { + case 'required': + if(!isset($parms[$key]) || $parms[$key]=='' || $parms[$key]== null){ + $state = 1; + $error_key = $values; + } + break; + case 'email': + if (isset($parms[$key]) && !filter_var($parms[$key], FILTER_VALIDATE_EMAIL)) { + $state = 1; + $error_key = $values; + } + break; + case 'phone': + if(isset($parms[$key])){ + $phone = preg_replace('/[^0-9]/', '', $parms[$key]); + if (strlen($phone) !== 10) { + $state = 1; + $error_key = $values; + } + } + break; + + + + default: + # code... + break; + } + if($state==1){ + break; + } + } + if($state==1){ + break; + } + } + return array('state'=>$state,'response'=>$error_key); + } +} \ No newline at end of file diff --git a/application/models/Validation_model.php b/application/models/Validation_model.php index 2660985..12b16e6 100644 --- a/application/models/Validation_model.php +++ b/application/models/Validation_model.php @@ -96,6 +96,7 @@ class Validation_model extends CI_Model { 'event_id'=>array('required'=>array('code'=>'ER16', 'message'=>'Event id is null or empty') ), ), + 'searchEvent'=>array() ); diff --git a/application/models/Venue_model.php b/application/models/Venue_model.php index c84b3a8..545a9ba 100644 --- a/application/models/Venue_model.php +++ b/application/models/Venue_model.php @@ -22,11 +22,20 @@ class Venue_model extends CI_Model { return 0; } - public function createVenue($venueData = array()){ + public function createVenue($venueData = array(),$locality = ''){ if(empty($venueData)){ return 0; } + if(!empty($locality)){ + $status = $this->db->insert('locality', + array('locality'=>$locality,'region_id'=>$venueData['region_id'])); + + if($status){ + $venueData['locality_id'] = $this->db->insert_id(); + } + } $status = $this->db->insert('venue',$venueData); + return $status; } diff --git a/application/models/Webservice_model.php b/application/models/Webservice_model.php new file mode 100644 index 0000000..aed3881 --- /dev/null +++ b/application/models/Webservice_model.php @@ -0,0 +1,287 @@ +<?php + +class Webservice_model extends CI_Model { + + public function _consruct(){ + parent::_construct(); + } + + function login($data){ + try{ + $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.status',1); + $this->db->where('users.password',md5($data['password'])); + $this->db->where('customer.email',$data['email']); + $this->db->from('users'); + $this->db->join('customer','customer.customer_id = users.id'); + $result = $this->db->get()->row(); + if($result){ + $auth_token = md5(microtime().rand()); + $response = array('user'=>$result,'auth_token'=>$auth_token); + $this->generateAuth($result->user_id,$auth_token); + $res = array('status'=>1,'data'=>$response); + } else { + $res = array('status'=>0,'message'=>'Invalid username / Password','code'=>'ER05'); + } + } catch(Exception $e) { + $res = array('status'=>0,'message'=>'Ohh No!! Something went South!!','code'=>'ER06'); + } + return $res; + } + + + function availability($data) { + try{ + $is_email_available = "true"; + $is_phone_available = "true"; + $res_count = $this->db->where('email',$data['email'])->or_where('phone',$data['phone'])->get('customer')->result(); + if(count($res_count) > 0) { + foreach ($res_count as $rs) { + if($rs->email == $data['email']) { + $is_email_available = "false"; + } + + if($rs->phone == $data['phone']) { + $is_phone_available = "false"; + } + } + } + + $data = array( + 'is_email_available'=>$is_email_available, + 'is_phone_available'=>$is_phone_available + ); + $res = array('status'=>1,'data'=>$data); + + } catch(Exception $e) { + $res = array('status'=>0,'message'=>'Ohh No!! Something went South!!','code'=>'ER06'); + } + return $res; + } + + + function register($data) { + try{ + $res_count = $this->db->where('email',$data['email'])->or_where('phone',$data['phone'])->get('customer')->row(); + if(count($res_count) > 0) { + if($res_count->email == $data['email'] && $res_count->phone == $data['phone']){ + $res = array('status'=>0,'message'=>'Already have an account with email id and phone no. Please login','code'=>'ER12'); + } else if($res_count->email == $data['email']){ + $res = array('status'=>0,'message'=>'Email id already exists','code'=>'ER09'); + } else if($res_count->phone == $data['phone']) { + $res = array('status'=>0,'message'=>'Phone no already exists','code'=>'ER10'); + } + } else { + $temp_password = $data['password']; + $data['password'] = md5($data['password']); + + $user_data = array( + 'password'=>$data['password'], + 'display_name'=>'Customer', + 'user_type'=> 3 + ); + $this->db->insert('users',$user_data); + $id = $this->db->insert_id(); + if($id) { + $customer_data = array( + 'customer_id'=>$id, + 'phone'=>$data['phone'], + 'email'=>$data['email'] + ); + $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); + $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'); + $this->db->join('customer','customer.customer_id = users.id'); + $result = $this->db->get()->row(); + if($result){ + $auth_token = md5(microtime().rand()); + $this->generateAuth($result->user_id,$auth_token); + $response = array('user'=>$result,'auth_token'=>$auth_token); + $res = array('status'=>1,'data'=>$response); + } else { + $res = array('status'=>0,'message'=>'No record found','code'=>'ER13'); + } + } else { + $res = array('status'=>0,'message'=>'Registration failed please try again','code'=>'ER11'); + } + } + } catch(Exception $e) { + $res = array('status'=>0,'message'=>'Ohh No!! Something went South!!','code'=>'ER06'); + } + return $res; + } + + + function discover($data) { + + try { + if($data['auth_token']) { + $user_id = $this->auth_token_get($data['auth_token']); + } else { + $user_id = 0; + } + if(isset($data['cat_id'])) { + $where = ' AND events.category_id = '.$data['cat_id']; + } else { + $where = ''; + } + $result = $this->db->query("SELECT events.event_id AS event_id, events.event_name AS name,`event_gallery`.`media_url` AS image, COUNT(booking.id) AS attendees, event_category.category, AVG(review.rate) AS rating, venue.location, IF(favourite.status = 1, 'true','false') AS is_favorite, IF(events.provider_id = 1,'true','false') AS is_editors_choice, events.avg_price AS rate 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') 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 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(count($result)>0){ + $resultData = array(); + $resultData['events'] = $result; + $res = array('status'=>1,'data'=>$resultData); + } else { + $res = array('status'=>0,'message'=>'No records found','code'=>'ER13'); + } + } catch(Exception $e) { + $res = array('status'=>0,'message'=>'Ohh No!! Something went South!!','code'=>'ER06'); + } + return $res; + } + + function event($data) { + + try { + $user_id = $this->auth_token_get($data['auth_token']); + if($user_id > 0) { + $event_id = $data['event_id']; + $this->db->query("SET SESSION group_concat_max_len = 20000"); + $rs = $this->db->query("SELECT events.event_id, AVG(review.rate) AS rate, MAX(booking.id) AS attendees, events.event_name,events.event_discription AS event_description,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, 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 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 WHERE 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; + } + } + } + } + + + //foreach ($result as $rs) { + 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; + } + $event_layout = json_decode($event_layout); + $event_layouts = array(); + 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 + ); + array_push($event_layouts, $priceLayout); + + } + + $dates = explode(',', $rs->date_time); + $time_spec = array(); + foreach ($dates as $rss) { + list($id,$date,$time) = explode('#', $rss); + $time_spec[] = array('id'=>$id, 'date'=>$date, 'time'=>$time); + } + + $tags = explode(',', $rs->tag); + $media_url = explode(',', $rs->media_url); + + $resData = array( + 'event_id'=>$rs->event_id, + 'name'=>$rs->event_name, + 'description'=>$rs->event_description, + 'rating'=>$rs->rate, + 'total_attendees'=>$rs->attendees, + 'layout_image'=>$rs->layout, + 'is_favorite'=>$rs->fav_status, + 'photos'=>$media_url, + 'time'=>$time_spec[0]['time'], + 'date'=>$time_spec[0]['date'], + 'date_list'=>$time_spec, + 'classes'=>$event_layouts, + 'latitude'=>$rs->lat, + 'longitude'=>$rs->lng + ); + /*array_push($resultData, $resData); + }*/ + $res = array('status'=>1,'data'=>$resData); + } else { + $res = array('status'=>0,'message'=>'No records found','code'=>'ER13'); + } + + } else { + $res = array('status'=>0,'message'=>'Invalid user','code'=>'ER19'); + } + + + } catch(Exception $e) { + $res = array('status'=>0,'message'=>'Ohh No!! Something went South!!','code'=>'ER06'); + } + return $res; + } + + function generateAuth($userId,$auth_token) { + $this->db->insert('customer_auth',array('user_id'=>$userId, 'auth_token'=>$auth_token)); + } + + function auth_token_get($token) { + $rs = $this->db->select('user_id')->where('auth_token', $token)->get('customer_auth')->row(); + if(count($rs) > 0) { + return $rs->user_id; + } else { + return 0; + } + } + + function send_mail($subject,$email,$message,$attach=null) { + $ci =& get_instance(); + $ci->load->library('email'); + $ci->email->initialize(array( + 'protocol' => 'smtp', + 'smtp_host' => 'smtp.sendgrid.net', + 'smtp_user' => 'adarsh@techware.in', + 'smtp_pass' => 'Golden_123', + 'smtp_port' => 587, + 'crlf' => "\r\n", + 'newline' => "\r\n" + )); + + $ci->email->from('no-reply@nuvento.com', 'TimeOut'); + $ci->email->to($email); + $ci->email->cc('epocnova@gmail.com'); + $ci->email->subject($subject); + $ci->email->message($message); + if($attach!=null) { + $ci->email->attach($attach); + } + return $ci->email->send(); + } + } \ No newline at end of file diff --git a/application/views/Event/eventAddForm.php b/application/views/Event/eventAddForm.php index ec7d56f..590b43e 100644 --- a/application/views/Event/eventAddForm.php +++ b/application/views/Event/eventAddForm.php @@ -224,7 +224,7 @@ <div class="col-sm-6"> <div class="form-group"> <label>Event Description</label> - <textarea type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Venue Description" name="event_discription" required + <textarea id="rich_editor" type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Venue Description" name="event_discription" required style="height:108px;" data-parsley-trigger="change" data-parsley-minlength="2"></textarea> </div> </div> diff --git a/application/views/Event/eventEditForm.php b/application/views/Event/eventEditForm.php index 82dc892..d15c15c 100644 --- a/application/views/Event/eventEditForm.php +++ b/application/views/Event/eventEditForm.php @@ -217,7 +217,7 @@ <div class="col-sm-6"> <div class="form-group"> <label>Event Description</label> - <textarea type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Venue Description" name="event_discription" required + <textarea id="rich_editor" type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Venue Description" name="event_discription" required style="height:108px;" data-parsley-trigger="change" data-parsley-minlength="2"><?= $event_data->event_discription ?></textarea> </div> </div> diff --git a/application/views/Venue/venueAddForm.php b/application/views/Venue/venueAddForm.php index d6b1e4b..ed1a005 100644 --- a/application/views/Venue/venueAddForm.php +++ b/application/views/Venue/venueAddForm.php @@ -34,8 +34,7 @@ <?php if(!empty($regionData)){ ?> <div class="form-group"> <label>Region</label> - <select name="region_id" class="form-control required" - placeholder="Select Region" required> + <select name="region_id" class="form-control required" placeholder="Select Region" required> <option selected disabled>Choose a Region</option> <?php foreach ($regionData as $region) { @@ -51,15 +50,13 @@ <div class="form-group"> <label>Venue Title</label> <input type="text" class="form-control required" data-parsley-trigger="change" - data-parsley-minlength="1" name="venue_name" required="" - placeholder="Enter Venue Title" value="<?= (isset($venue_data->venue_name))?$venue_data->venue_name:'' ?>"> - <span class="glyphicon form-control-feedback"></span> + data-parsley-minlength="1" name="venue_name" required="" placeholder="Enter Venue Title" + value="<?= (isset($venue_data->venue_name))?$venue_data->venue_name:'' ?>"> </div> <div class="form-group"> <label>Venue Address</label> <input type="text" class="form-control required" data-parsley-trigger="change" id="loc_search_1" name="location" placeholder="Venue Address" value="<?= (isset($venue_data->location))?$venue_data->location:'' ?>" required> - <span class="glyphicon form-control-feedback"></span> </div> </div> <div class="col-md-6"> @@ -83,9 +80,30 @@ <?php } ?> <div class="form-group"> <label>Venue Details</label> - <textarea type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Venue Details" name="venue_details" data-parsley-trigger="change" data-parsley-minlength="1" required="" style="height:108px;"><?= (isset($venue_data->venue_details))?$venue_data->venue_details:'' ?></textarea> + <textarea type="text" class="ip_reg_form_input form-control reset-form-custom required" placeholder="Venue Details" name="venue_details" data-parsley-trigger="change" data-parsley-minlength="1" required="" style="height:34px;"><?= (isset($venue_data->venue_details))?$venue_data->venue_details:'' ?></textarea> <span class="glyphicon form-control-feedback"></span> </div> + <?php if(!isset($venue_id) || empty($venue_id)){ ?> + <div class="form-group"> + <label id="localityLabel">Venue Locality</label> + <div id="showType" class="hide"> + <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"> + <input type="text" class="form-control required" data-parsley-trigger="change" name="locality" placeholder="Locality"> + </div> + <div id="useExist" class="form-group hide"> + <select name="locality_id" class="form-control required" placeholder="Select Locality"></select> + </div> + </div> + <?php } ?> </div> <input id="has_layout" type="hidden" name="has_layout" value='0'> <div class="col-md-12" id="layoutCntr" class="hide"> @@ -263,4 +281,3 @@ data-parsley-trigger="change" data-parsley-minlength="1" name="seat_price[]"data-parsley-pattern="^[0-9\ . \/]+$" placeholder="Default Seat Price"> </div> </div> - diff --git a/assets/js/custom-script.js b/assets/js/custom-script.js index c23cbaf..f4262f6 100644 --- a/assets/js/custom-script.js +++ b/assets/js/custom-script.js @@ -733,4 +733,79 @@ function slideTo(id){ jQuery('html, body').animate({ scrollTop: jQuery('[id="'+id+'"]').offset().top }, 800); -} \ No newline at end of file +} + +jQuery('[name="locality_type"]').on('click',function(event) { + var type = jQuery(this).val(); + + if(type == 0){ + jQuery('[id="useExist"]').removeClass('hide'); + jQuery('[name="locality_id"]').prop("disabled",false); + jQuery('[name="locality_id"]').addClass("required"); + + jQuery('[id="addNew"]').addClass('hide'); + jQuery('[name="locality"]').prop("disabled",true); + jQuery('[name="locality"]').removeClass("required"); + } else { + jQuery('[id="addNew"]').removeClass('hide'); + jQuery('[name="locality"]').prop("disabled",false); + jQuery('[name="locality"]').addClass("required"); + + jQuery('[id="useExist"]').addClass('hide'); + jQuery('[name="locality_id"]').prop("disabled",true); + jQuery('[name="locality_id"]').removeClass("required"); + } +}); + +jQuery('[name="region_id"]').on('change',function(){ + var thisObj = jQuery(this), + region_id = thisObj.val(); + + if(region_id == '' || region_id == 'undefined' || region_id == undefined || region_id == 'null' || region_id == null){ + return false; + } + + jQuery.ajax({ + url : base_url+"Venue/getLocalityData", + type : 'POST', + data : {'region_id':region_id}, + success: function(resp){ + if(resp == '' || resp == undefined || resp == 'undefined' || resp == null || resp == 'null'){ + return false; + } + var resp_data = jQuery.parseJSON(resp); + if(resp_data['status'] == 0){ + + jQuery('[id="showType"]').addClass('hide'); + jQuery('[id="localityLabel"]').removeClass('hide'); + + jQuery('[id="addNew"]').removeClass('hide'); + jQuery('[name="locality"]').prop("disabled",false); + jQuery('[name="locality"]').addClass("required"); + + jQuery('[id="useExist"]').addClass('hide'); + jQuery('[name="locality_id"]').prop("disabled",true); + jQuery('[name="locality_id"]').removeClass("required"); + } + + if(resp_data['status'] == 1){ + jQuery('[id="addNew"]').addClass('hide'); + jQuery('[name="locality"]').prop("disabled",true); + jQuery('[name="locality"]').removeClass("required"); + + jQuery('[id="useExist"]').removeClass('hide'); + jQuery('[name="locality_id"]').prop("disabled",false); + jQuery('[name="locality_id"]').addClass("required"); + + jQuery('[id="showType"]').removeClass('hide'); + jQuery('[id="localityLabel"]').addClass('hide'); + + jQuery('[name="locality_id"]').html(''); + jQuery('[name="locality_id"]').html('<option selected disabled>Choose Venue Locality</option>'); + jQuery.each(resp_data['data'], function(key, data) { + jQuery('[name="locality_id"]').append(jQuery("<option></option>").attr("value",data['id']).text(data['locality'])); + }); + } + } + }); +}); \ No newline at end of file