<?php class Webservice_mechanic_model extends CI_Model { function __construct() { parent::__construct(); date_default_timezone_set("Africa/Lagos"); } /***************************************************************************************/ /****************************************Mobile API's***********************************/ function checkMechanicLogin($userLogData){ $respArr = array('status'=>'error'); if(empty($userLogData)){ return $respArr; } $this->db->select("MCH.mechanic_id as user_id,TRIM(CONCAT(MCH.first_name,' ' ,IFNULL(MCH.last_name,''))) as name,MCH.email_id,MCH.phone as phone_number,IFNULL(MCHSHP.shop_name,'') as workshop_name,MCH.city,MCH.location as place,MCH.is_online"); $this->db->from('admin_users as AU'); $this->db->join('mechanic as MCH','MCH.mechanic_id = AU.id'); $this->db->join('mechanic_shop as MCHSHP','MCHSHP.shop_id = MCH.shop_id','LEFT'); $this->db->where(array('AU.username'=>$userLogData['user_name'],'AU.password'=>$userLogData['password'])); $result = $this->db->get(); if(empty($result) || $result->num_rows() < 0 || empty($mechData = $result->row())){ $respArr['message'] = "Username or Password is Incorrect"; return $respArr; } if($this->db->update('mechanic',array('device_id'=>$userLogData['device_id']),array('mechanic_id'=>$mechData->user_id))){ $authdata = $this->insert_auth($mechData->user_id); if($authdata){ $mechData->auth_token = $authdata; $respArr['data'] = $mechData; $respArr['status'] = 'success'; } } return $respArr; } public function insert_auth($id){ $static_string = time(); $authToken = 'Dcarfixs'.sha1($static_string); $mechData = $this->db->get_where('authtable_mechanic',array('mechanic_id'=>$id)); if(!empty($mechData) && $mechData->num_rows() > 0){ $mechData = $mechData->row(); $authToken = $mechData->authtoken; }else { $this->db->insert('authtable_mechanic',array('mechanic_id'=>$id,'authtoken'=>$authToken)); } return $authToken; } public function get_mechanic_authtoken($auth = ''){ $respArr = array('status'=>0,'error'=>'901','message'=>'Something Went Wrong.'); if(empty($auth)){ return $respArr; } $auth = $this->db->get_where('authtable_mechanic',array('authtoken'=>$auth)); if(!empty($auth) && $auth->num_rows() >= 1 && !empty($mechAuth = $auth->row_array())){ $respArr['status'] = 'success'; $respArr['data'] = $mechAuth; }else{ $respArr['status'] = 'error'; $respArr['error'] = '902'; $respArr['message'] = 'Authtoken is not Valid'; } return $respArr; } public function getBookedService($postData = array(),$start = '',$per_page = '',$type=0,$status=1){ $respArr = array('status'=>'error','message'=>'Something Went Wrong.. Try Again Later'); if(empty($postData)){ $respArr['message'] = "All Field is Required"; return $respArr; } if($status == 1){ $stat = array('1','6'); }else{ $stat = array('3'); } $where = array('MCHBUK.mechanic_id'=>$postData['mechanic_id']); if(isset($postData['service_id']) && !empty($postData['service_id'])){ $where['BUK.booking_id'] = $postData['service_id']; } if($type == 1){ $this->db->where('BUK.scheduled_date >=', date('Y-m-d')); $this->db->order_by('BUK.scheduled_date','ASC'); } $this->db->select("BUK.scheduled_date as date,BUK.scheduled_time as time,BUK.booking_id as service_id,BUK.status,CSTVEH.car_name,BUK.mileage,BUK.issues_selected,BUK.custom_issue_data,BUK.service_type as type,MCHBUK.amount,BUK.cost,TRIM(CONCAT(CUST.first_name,' ' ,IFNULL(CUST.last_name,''))) as customer_name,CUST.phone as phone_number,CSTVEH.vehicle_data,CSTVEH.car_loc_lat as cust_lat,CSTVEH.car_loc_lng as cust_lng,CSTVEH.car_location as cust_address,BUK.car_loc_lat,BUK.car_loc_lng,BUK.car_location"); $this->db->from('bookings as BUK'); $this->db->join('customers as CUST','CUST.customer_id = BUK.customer_id'); $this->db->join('customer_vehicle as CSTVEH','CSTVEH.customer_veh_id = BUK.customer_veh_id'); $this->db->join('mechanic_booking as MCHBUK','MCHBUK.booking_id = BUK.booking_id'); $this->db->join('mechanic AS MCH','MCHBUK.mechanic_id=MCH.mechanic_id'); $this->db->where_in("BUK.status",$stat); $this->db->where($where); if($start != 0 || $per_page != 0){ $this->db->limit($per_page,$start); } $this->db->group_by('BUK.booking_id'); $this->db->order_by('BUK.booking_id','DESC'); $bookData = $this->db->get(); if(!empty($bookData) && $bookData->num_rows() > 0){ $bookData = $bookData->result_array(); foreach ($bookData as $key => $value) { $issues_selected = json_decode($value['issues_selected']); $custom_issue_data = json_decode($value['custom_issue_data']); $bookData[$key]['trim'] = json_decode($value['vehicle_data'])->trim; $bookData[$key]['engine_no'] = json_decode($value['vehicle_data'])->engine; $bookData[$key]['service_image'] = (isset($custom_issue_data->optionalImages))?$custom_issue_data->optionalImages:[]; $bookData[$key]['service_message'] = (isset($custom_issue_data->optionlaDescription))?$custom_issue_data->optionlaDescription:''; $bookData[$key]['total_amount'] = ($value['type'] == '1')?$value['amount']:$value['cost']; unset($bookData[$key]['issues_selected'],$bookData[$key]['custom_issue_data'],$bookData[$key]['amount'],$bookData[$key]['cost']); if($value['type'] == '2'){ // unset($bookData[$key]['cust_lat'],$bookData[$key]['cust_lng'],$bookData[$key]['cust_address']); $bookData[$key]['cust_lat'] = $bookData[$key]['car_loc_lat']; $bookData[$key]['cust_lng'] = $bookData[$key]['car_loc_lng']; $bookData[$key]['cust_address'] = $bookData[$key]['car_location']; } unset($bookData[$key]['car_loc_lat'],$bookData[$key]['car_loc_lng'],$bookData[$key]['car_location']); if(!empty($issues_selected)){ $new = array(); foreach ($issues_selected as $issue_key => $issue_value) { $sql = "SELECT IC.*, MI.custom_description, MI.custom_service_fee FROM issues_category AS IC LEFT JOIN mechanic_issues AS MI ON (MI.issue_cat_id=IC.issue_cat_id AND MI.mechanic_id='".$postData['mechanic_id']."' AND MI.status='1') WHERE IC.status='1' AND IC.issue_cat_id='".$issue_value->sub_issue_id."'"; $issue_data = $this->db->query($sql)->row(); if(!empty($issue_data)){ if($issue_data->custom_description != '' && $issue_data->custom_service_fee != ''){ $new[$issue_key]['description'] = $issue_data->custom_description; $new[$issue_key]['service_fee'] = $issue_data->custom_service_fee; }else{ $new[$issue_key]['description'] = $issue_data->default_description; $new[$issue_key]['service_fee'] = $issue_data->default_service_fee; } $new[$issue_key]['issue_name'] = $issue_data->issue_category; } $bookData[$key]['service_name'] = $new; } } } $respArr['status'] = 'success'; $respArr['message'] = 'success'; $respArr['data'] = $bookData; } return $respArr; } public function mechanic_logout($mechanic_id){ $respArr = array('status'=>'error'); $status = $this->db->delete('authtable_mechanic',array('mechanic_id'=>$mechanic_id)); $this->db->update('mechanic',array('device_id'=>''),array('mechanic_id'=>$mechanic_id)); if($status){ $respArr['status'] = "success"; $respArr['message'] = "Logged Out Successfully"; } return $respArr; } public function forgot_password($username){ $respArr = array('status'=>'error'); $result = $this->db->query("SELECT MCH.phone AS phone_number,AU.username AS user_name FROM admin_users AS AU INNER JOIN mechanic AS MCH ON MCH.mechanic_id = AU.id WHERE AU.username LIKE '$username'"); if(empty($result) || $result->num_rows() < 0 || empty($result = $result->row())){ $respArr['message'] = "Username Doesnot Exist"; return $respArr; } $respArr['status'] = "success"; $respArr['message'] = "success"; $respArr['data'] = $result; return $respArr; } public function change_password($postData = array()){ $respArr = array('status'=>'error'); $result = $this->db->query("SELECT * FROM admin_users WHERE username LIKE '".$postData['user_name']."'"); if(empty($result) || $result->num_rows() < 0 || empty($result = $result->row())){ $respArr['message'] = "Username doesnot Exist"; return $respArr; } if($this->db->update('admin_users',array('password'=>md5($postData['password'])),array('id'=>$result->id))){ $respArr['status'] = "success"; $respArr['message'] = "Password Updated Successfully"; } return $respArr; } public function start_service($postData = array(),$type = 0){ $respArr = array('status'=>'error'); if(empty($postData)){ return $respArr; } $status = ($type == '1')?3:6; $cost = ($postData['emergency'] == '2')?$postData['amount']:0; if($this->db->update('bookings',array('service_type'=>$postData['emergency'],'cost'=>$cost,'status'=>$status),array('booking_id'=>$postData['service_id']))){ $respArr['status'] = "success"; $respArr['message'] = ($type == '1')?"Service Completed Successfully":"Service Started Successfully"; } return $respArr; } public function update_profile_status($postData = array()){ $respArr = array('status'=>'error'); if(empty($postData)){ return $respArr; } if($this->db->update('mechanic',array('is_online'=>$postData['status']),array('mechanic_id'=>$postData['mechanic_id']))){ $respArr['status'] = "success"; $respArr['data']['profile_status'] = $postData['status']; } return $respArr; } public function add_location($postData){ $respArr = array('status'=>'error'); if(empty($postData)){ return $respArr; } if($this->db->update('mechanic',array('location'=>$postData['location'],'location_lat'=>$postData['location_lat'],'location_lng'=>$postData['location_lng']),array('mechanic_id'=>$postData['mechanic_id']))){ $respArr['status'] = "success"; $respArr['message'] = "Location Updated Successfully"; } return $respArr; } } ?>