<?php
class Customer_model extends CI_Model {
public function _consruct(){
parent::_construct();
}
public function getCustomerData($customer_id='',$view='',$provider_id=''){
$cond = (!empty($view))?" USR.status IN ($view) ":" USR.status != '2' ";
$cond .= (!empty($customer_id))?" AND CUST.customer_id='$customer_id' ":"";
$sql = "SELECT CUST.customer_id,CUST.name,CUST.email,CUST.phone,CUST.email,CUST.gender,
CUST.dob,CUST.profile_city,CUST.reset_key,CUST.social_id,CUST.profile_image,USR.status
FROM customer AS CUST
INNER JOIN users AS USR ON (USR.id=CUST.customer_id)
WHERE $cond";
if(!empty($provider_id)){
$sql = "SELECT CUST.customer_id,CUST.name,CUST.email,CUST.phone,CUST.email,CUST.gender,
CUST.dob,CUST.profile_city,CUST.reset_key,CUST.social_id,
CUST.profile_image,USR.status
FROM customer AS CUST
INNER JOIN users AS USR ON (USR.id=CUST.customer_id)
INNER JOIN booking AS BOK ON (BOK.customer_id=CUST.customer_id)
INNER JOIN events AS EVT ON (EVT.event_id=BOK.event_id)
WHERE $cond AND EVT.provider_id='$provider_id' AND BOK.status!='4'";
}
$customerData = $this->db->query($sql);
if(!empty($customerData)){
if(empty($customer_id)){
$custData = $customerData->result();
foreach ($custData AS $key => $value) {
$custData[$key]->dob = date("m/d/Y",$value->dob/1000);
}
return $custData;
} else {
$custData = $customerData->row();
$custData->dob = date("m/d/Y",$custData->dob/1000);
return $custData;
}
}
return 0;
}
public function addCustomer($customer_data = array()){
if(empty($customer_data))
return 0;
$userNameChk = $this->db->query("SELECT * FROM users
WHERE status!='2' AND username='".$customer_data['email']."' AND user_type='3'");
if(!empty($userNameChk) && $userNameChk->num_rows() > 0) return 4;
$emailChk = $this->db->query("SELECT * FROM customer AS CUST
INNER JOIN users AS USR ON (USR.id=CUST.customer_id)
WHERE USR.status!='2' AND CUST.email='".$customer_data['email']."' AND USR.user_type='3'");
if(!empty($emailChk) && $emailChk->num_rows() > 0) return 2;
$phoneChk = $this->db->query("SELECT * FROM customer AS CUST
INNER JOIN users AS USR ON (USR.id=CUST.customer_id)
WHERE USR.status!='2' AND CUST.phone='".$customer_data['phone']."' AND USR.user_type='3'");
if(!empty($phoneChk) && $phoneChk->num_rows() > 0) return 3;
$status = $this->db->insert('users',
array('username'=>$customer_data['email'],
'password'=>$customer_data['password'],
'display_name'=>$customer_data['name'],
'profile_image'=>$customer_data['profile_image'],
'user_type'=>'3','status'=>'1'));
if(!$status){
return 0;
}
$customer_id = $this->db->insert_id();
$status = $this->db->insert('customer',
array('customer_id'=>$customer_id,
'dob'=>$customer_data['dob'],
'profile_city'=>$customer_data['profile_city'],
'name'=>$customer_data['name'],
'email'=>$customer_data['email'],
'phone'=>$customer_data['phone'],
'gender'=>$customer_data['gender'],
'profile_image'=>$customer_data['profile_image']));
return $status;
}
function updateCustomer($customer_id = '', $customer_data = array()){
if(empty($customer_id) || empty($customer_data))
return 0;
$userIdChk = $this->db->query("SELECT * FROM customer AS CUST
INNER JOIN users AS USR ON (USR.id = CUST.customer_id)
WHERE USR.status!='2' AND USR.id!='".$customer_id."' AND
USR.username='".$customer_data['email']."'");
if(!empty($userIdChk) && $userIdChk->num_rows() > 0) { return 4; }
$emailChk = $this->db->query("SELECT * FROM customer AS CUST
INNER JOIN users AS USR ON (USR.id = CUST.customer_id)
WHERE USR.status!='2' AND USR.id!='".$customer_id."' AND
CUST.email='".$customer_data['email']."'");
if(!empty($emailChk) && $emailChk->num_rows() > 0) { return 2; }
$phoneChk = $this->db->query("SELECT * FROM customer AS CUST
INNER JOIN users AS USR ON (USR.id = CUST.customer_id)
WHERE USR.status!='2' AND USR.id!='".$customer_id."' AND
CUST.phone='".$customer_data['phone']."'");
if(!empty($phoneChk) && $phoneChk->num_rows() > 0) { return 3; }
$upMecArr = array('dob'=>$customer_data['dob'],
'profile_city'=>$customer_data['profile_city'],
'name'=>$customer_data['name'],
'phone'=>$customer_data['phone'],
'email'=>$customer_data['email'],
'gender'=>$customer_data['gender']);
$admUpdateArr = array('username'=>$customer_data['username'],
'display_name'=>$customer_data['display_name']);
if(isset($customer_data['profile_image']) && !empty($customer_data['profile_image'])){
$upMecArr['profile_image'] = $customer_data['profile_image'];
$admUpdateArr['profile_image'] = $customer_data['profile_image'];
}
$status = $this->db->update('users',$admUpdateArr,array('id'=>$customer_id));
if(!$status) { return 0; }
$status = $this->db->update('customer',$upMecArr,array('customer_id'=>$customer_id));
return $status;
}
function changeStatus($customer_id = '', $status = '0'){
if(empty($customer_id)){
return 0;
}
$status = $this->db->update('users',array('status'=>$status),array('id'=>$customer_id));
return $status;
}
function getNearByCustomers($location_data = array(),$sub_issues = array()){
if(empty($location_data) || empty($sub_issues)){
return 0;
}
$current_lat = $location_data['pickup_lat'];
$current_lng = $location_data['pickup_lng'];
$issue_cat_id = implode(',',$sub_issues);
$sql = "SELECT USR.display_name,USR.profile_image,ME.*,MS.shop_name,MS.address AS shop_address,
MS.phone AS shop_phone,MS.email_id AS shop_email_id,
3956*2*ASIN(SQRT(POWER(SIN(($current_lat-ME.location_lat)*pi()/180/2),2)+
COS($current_lat*pi()/180 )*COS(ME.location_lat*pi()/180)*
POWER(SIN(($current_lng-ME.location_lng)*pi()/180/2),2) )) AS distance
FROM customer AS ME
INNER JOIN users AS USR ON (USR.id=ME.customer_id)
LEFT JOIN customer_shop AS MS ON (MS.shop_id=ME.shop_id AND MS.status='1')
WHERE USR.status='1'
-- HAVING distance<30";
$mechData = $this->db->query($sql);
if(empty($mechData) || empty($mechData = $mechData->result_array())){
return 0;
}
$estimate = 0;
$mechDataArr = array();
foreach($mechData AS $index => $data){
if(empty($data['start_time']) || empty($data['end_time'])){
$scheduleTiming = array('09:00 AM','10:00 AM','11:00 AM','12:00 PM','01:00 PM',
'02:00 PM','03:00 PM','04:00 PM','05:00 PM','06:00 PM');
} else {
$endTime = strtotime($data['end_time']);
$schTime = strtotime($data['start_time']);
$scheduleTiming = array();
for( ; $schTime <= ($endTime-3600) ; $schTime += 3600){
$scheduleTiming[] = date('h:i A',$schTime);
}
}
$customer_id = $data['customer_id'];
$sql = "SELECT ISS.*, IC.*, MI.*
FROM issues_category AS IC
INNER JOIN issues AS ISS ON (IC.issue_id=ISS.issue_id)
LEFT JOIN customer_issues AS MI ON (MI.issue_cat_id=IC.issue_cat_id AND
MI.customer_id='$customer_id' AND MI.status='1')
WHERE ISS.status='1' AND IC.status='1' AND IC.issue_cat_id IN ($issue_cat_id)";
$subIssData = $this->db->query($sql);
$sIssueData = array();
if(!empty($subIssData) && !empty($subIssData = $subIssData->result_array())){
$sIssueData = $subIssData;
}
$estimate = 0;
foreach($sIssueData AS $sIndex => $sIssue){
if(!empty($sIssue['custom_service_fee'])){
$estimate += $sIssue['custom_service_fee'];
$sIssueData[$sIndex]['service_fee'] = $sIssue['custom_service_fee'];
} else {
$estimate += $sIssue['default_service_fee'];
$sIssueData[$sIndex]['service_fee'] = $sIssue['default_service_fee'];
}
}
$mechData[$index]['estimate'] = $estimate;
$mechData[$index]['sub_issues'] = $sIssueData;
$mechData[$index]['scheduleTiming'] = $scheduleTiming;
}
return $mechData;
}
}
?>