From ca1cdefaf89012933affb77e96e04b4cb6d5ed31 Mon Sep 17 00:00:00 2001
From: Tobin <tobin@techware.in>
Date: Mon, 7 Jan 2019 18:40:56 +0530
Subject: [PATCH] daily commit

---
 application/controllers/Mechanic.php        |  24 +++++++++++++++++++++++-
 application/controllers/Webservices.php     | 392 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 application/models/Mechanic_model.php       |  28 ++++++++++++++++++++++++++++
 application/views/Mechanic/mechanicForm.php |   6 ++++++
 assets/js/custom-script.js                  |   5 +++++
 5 files changed, 268 insertions(+), 187 deletions(-)

diff --git a/application/controllers/Mechanic.php b/application/controllers/Mechanic.php
index 715dbf1..d92c355 100644
--- a/application/controllers/Mechanic.php
+++ b/application/controllers/Mechanic.php
@@ -109,7 +109,16 @@ class Mechanic extends CI_Controller {
         }else if($err == 0 && (!isset($_POST['address']) || empty($_POST['address']))){
             $err = 1;
 			$errMsg = 'Provide an address';
+        }else if($err == 0 && (!isset($_POST['location']) || empty($_POST['location']))){
+            $err = 1;
+			$errMsg = 'Provide a Functional Area';
         }
+        $fnLocation = getLocationLatLng($_POST['location']);
+    	if(empty($fnLocation)){
+    		$err = 1;
+			$errMsg = 'Provide a Valid Functional Area';
+    	}
+
         if($err == 0){
 	        $config = set_upload_service("assets/uploads/services");
 	        $this->load->library('upload');
@@ -139,6 +148,8 @@ class Mechanic extends CI_Controller {
             redirect(base_url('Mechanic/addMechanic'));
 		}
 		$_POST['password'] = md5($_POST['password']);
+		$_POST['location_lat'] = $fnLocation['lat'];
+		$_POST['location_lng'] = $fnLocation['lng'];
 
         $status = $this->Mechanic_model->addMechanic($_POST);
         if($status == 1){
@@ -214,7 +225,16 @@ class Mechanic extends CI_Controller {
         }else if($err == 0 && (!isset($_POST['address']) || empty($_POST['address']))){
             $err = 1;
 			$errMsg = 'Provide your address';
+        }else if($err == 0 && (!isset($_POST['location']) || empty($_POST['location']))){
+            $err = 1;
+			$errMsg = 'Provide a Functional Area';
         }
+        $fnLocation = getLocationLatLng($_POST['location']);
+    	if(empty($fnLocation)){
+    		$err = 1;
+			$errMsg = 'Provide a Valid Functional Area';
+    	}
+    	
         if($err == 0){
 	        $config = set_upload_service("assets/uploads/services");
 	        $this->load->library('upload');
@@ -239,7 +259,9 @@ class Mechanic extends CI_Controller {
 			$this->session->set_flashdata('message',$flashMsg);
             redirect(base_url('Mechanic/addMechanic'));
 		}
-
+		
+		$_POST['location_lat'] = $fnLocation['lat'];
+		$_POST['location_lng'] = $fnLocation['lng'];
         $status = $this->Mechanic_model->updateMechanic(decode_param($mechanic_id),$_POST);
         if($status == 1){
             $flashMsg =array('message'=>'Successfully Updated User Details..!','class'=>'success');
diff --git a/application/controllers/Webservices.php b/application/controllers/Webservices.php
index c3a6792..0e47c84 100644
--- a/application/controllers/Webservices.php
+++ b/application/controllers/Webservices.php
@@ -4,199 +4,219 @@ header('Content-Type: text/html; charset=utf-8');
 
 // Allow from any origin
 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'); // cache for 1 day
+	header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
+	header('Access-Control-Allow-Credentials: true');
+	header('Access-Control-Max-Age: 86400'); // cache for 1 day
 }
 
 // Access-Control headers are received during OPTIONS requests
 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);
+	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 Webservices extends CI_Controller {
 
-   public function __construct() {
-      parent::__construct();
-      $this->load->model('Webservice_model');
-      $this->load->library('form_validation');
-
-      $auth = '';
-      $class = $this->router->fetch_class();
-      $method = $this->router->fetch_method();
-
-      if($this->input->server('REQUEST_METHOD') == 'GET')
-         $postdata = json_encode($_GET);
-
-      else if ($this->input->server('REQUEST_METHOD') == 'POST')
-         $postdata = file_get_contents("php://input");
-
-      if (isset(apache_request_headers()['Auth'])) {
-         $auth = apache_request_headers()['Auth'];
-      }
-      // $this->last_id = set_log($class, $method, $postdata, $auth);
-   }
-
-   // customer_login
-   public function customer_login(){
-      header('Content-type: application/json');
-      $post = file_get_contents("php://input");
-      $postData = json_decode($post, true);
-      $this->load->model('Customer_model');
-
-      $respArr = array('status'=>'0','message'=>'Required Fields are empty.');
-      if(!isset($postData['email']) || empty($postData['email']) || 
-         !isset($postData['password']) || empty($postData['password'])){
-          echo json_encode($respArr);exit;
-      }
-
-      $custResp = $this->Customer_model->checkCustomerLogin($postData);
-      if(empty($custResp) || !isset($custResp['status']) || empty($custResp['status'])){
-          echo json_encode($respArr);exit;
-      }
-
-      if($custResp['status'] == '1'){
-         $respArr['data'] = $custResp['data'];
-         $respArr['status'] = '1';
-         $respArr['message'] = 'Success';
-         echo json_encode($respArr);exit;
-      }
-
-      if($custResp['status'] == '2'){
-         $respArr['status'] = '2';
-         $respArr['message'] = 'Invalid Email Address';
-         echo json_encode($respArr);exit;
-      }
-      
-      if($custResp['status'] == '3'){
-         $respArr['status'] = '3';
-         $respArr['message'] = 'Invalid Password';
-         echo json_encode($respArr);exit;
-      }
-      echo json_encode($respArr); exit;
-   }
-
-   // customer_forgot_password
-   public function customer_forgot_password(){
-      header('Content-type: application/json');
-      $post = file_get_contents("php://input");
-      $postData = json_decode($post, true);
-      $this->load->model('Customer_model');
-
-      $respArr = array('status'=>'0','message'=>'Required Fields are empty.');
-      if(empty($postData) || !isset($postData['email']) || empty($postData['email'])){
-          echo json_encode($respArr);exit;
-      }
-
-      $custResp = $this->Customer_model->genCustForgotPassLink($postData);
-      if(empty($custResp) || !isset($custResp['status']) || empty($custResp['status'])){
-          echo json_encode($respArr);exit;
-      }
-
-      if($custResp['status'] == '2'){
-         $respArr['status'] = '2';
-         $respArr['message'] = 'Invalid Email Address';
-         echo json_encode($respArr);exit;
-      }
-      
-      if($custResp['status'] == '1'){
-         /*
-            MAIL SENT CONFIGARATION -- TODO
-         */
-
-         $respArr['status'] = '1';
-         $respArr['message'] = 'Password Reset Email has been sent';
-      }
-      echo json_encode($respArr); exit;
-   }
-
-   // customer_registration
-   public function customer_registration(){
-      header('Content-type: application/json');
-      $post = file_get_contents("php://input");
-      $postData = json_decode($post, true);
-      $this->load->model('Customer_model');
-
-      $respArr = array('status'=>'0','message'=>'Something went wrong.');
-      if(empty($postData)){
-          echo json_encode($respArr);exit;
-      }
-
-      $err = 0;
-      $msg = '';
-      if(!isset($postData['email']) || empty($postData['email'])){
-         $err = 1;
-         $msg = 'Provide a valid Email ID';
-      } 
-      else if(!isset($postData['password']) || empty($postData['password'])){
-         $err = 1;
-         $msg = 'Provide a Password';
-      }
-      else if(!isset($postData['first_name']) || empty($postData['first_name'])){
-         $err = 1;
-         $msg = 'Provide valid Name';
-      }
-      else if(!isset($postData['last_name']) || empty($postData['last_name'])){
-         $err = 1;
-         $msg = 'Provide valid Name';
-      }
-
-      if($err == 1){
-         $respArr['message'] = $msg;
-         echo json_encode($respArr);exit;
-      }
-      
-      if(isset($postData['phone']) && empty($postData['phone'])){
-         unset($postData['phone']);
-      }
-      unset($postData['promocode']);
-
-      $custResp = $this->Customer_model->customer_registration($postData);
-      if(empty($custResp) || !isset($custResp['status']) || empty($custResp['status'])){
-          echo json_encode($respArr);exit;
-      }
-
-      if($custResp['status'] == '2'){
-         $respArr['status'] = '2';
-         $respArr['message'] = 'Email Address already in use';
-         echo json_encode($respArr);exit;
-      }
-
-      if($custResp['status'] == '1'){
-         $custResp = $this->Customer_model->checkCustomerLogin($postData);
-         if(empty($custResp) || !isset($custResp['status']) || empty($custResp['status'])){
-             echo json_encode($respArr);exit;
-         }
-
-         if($custResp['status'] == '1'){
-            $respArr['data'] = $custResp['data'];
-            $respArr['status'] = '1';
-            $respArr['message'] = 'Success';
-            echo json_encode($respArr);exit;
-         }
-      }
-      echo json_encode($respArr); exit;
-   }
-
-   // customer_registration
-   public function getGeneralIssues(){
-      header('Content-type: application/json');
-
-      $respArr = array('status'=>'0','message'=>'Something went wrong.');
-      $this->load->model('Issue_model');
-      $issue_data = $this->Issue_model->getGeneralIssues();
-
-      if(!empty($issue_data)){
-         $respArr['status'] = '1';
-         $respArr['message'] = 'Success';
-         $respArr['issue_data'] = $issue_data;
-      }
-      
-      echo json_encode($respArr); exit;
-   }
+	public function __construct() {
+	  parent::__construct();
+	  $this->load->model('Webservice_model');
+	  $this->load->library('form_validation');
+
+	  $auth = '';
+	  $class = $this->router->fetch_class();
+	  $method = $this->router->fetch_method();
+
+	  if($this->input->server('REQUEST_METHOD') == 'GET')
+	     $postdata = json_encode($_GET);
+
+	  else if ($this->input->server('REQUEST_METHOD') == 'POST')
+	     $postdata = file_get_contents("php://input");
+
+	  if (isset(apache_request_headers()['Auth'])) {
+	     $auth = apache_request_headers()['Auth'];
+	  }
+	  // $this->last_id = set_log($class, $method, $postdata, $auth);
+	}
+
+	// customer_login
+	public function customer_login(){
+	  header('Content-type: application/json');
+	  $post = file_get_contents("php://input");
+	  $postData = json_decode($post, true);
+	  $this->load->model('Customer_model');
+
+	  $respArr = array('status'=>'0','message'=>'Required Fields are empty.');
+	  if(!isset($postData['email']) || empty($postData['email']) || 
+	     !isset($postData['password']) || empty($postData['password'])){
+	      echo json_encode($respArr);exit;
+	  }
+
+	  $custResp = $this->Customer_model->checkCustomerLogin($postData);
+	  if(empty($custResp) || !isset($custResp['status']) || empty($custResp['status'])){
+	      echo json_encode($respArr);exit;
+	  }
+
+	  if($custResp['status'] == '1'){
+	     $respArr['data'] = $custResp['data'];
+	     $respArr['status'] = '1';
+	     $respArr['message'] = 'Success';
+	     echo json_encode($respArr);exit;
+	  }
+
+	  if($custResp['status'] == '2'){
+	     $respArr['status'] = '2';
+	     $respArr['message'] = 'Invalid Email Address';
+	     echo json_encode($respArr);exit;
+	  }
+	  
+	  if($custResp['status'] == '3'){
+	     $respArr['status'] = '3';
+	     $respArr['message'] = 'Invalid Password';
+	     echo json_encode($respArr);exit;
+	  }
+	  echo json_encode($respArr); exit;
+	}
+
+	// customer_forgot_password
+	public function customer_forgot_password(){
+	  header('Content-type: application/json');
+	  $post = file_get_contents("php://input");
+	  $postData = json_decode($post, true);
+	  $this->load->model('Customer_model');
+
+	  $respArr = array('status'=>'0','message'=>'Required Fields are empty.');
+	  if(empty($postData) || !isset($postData['email']) || empty($postData['email'])){
+	      echo json_encode($respArr);exit;
+	  }
+
+	  $custResp = $this->Customer_model->genCustForgotPassLink($postData);
+	  if(empty($custResp) || !isset($custResp['status']) || empty($custResp['status'])){
+	      echo json_encode($respArr);exit;
+	  }
+
+	  if($custResp['status'] == '2'){
+	     $respArr['status'] = '2';
+	     $respArr['message'] = 'Invalid Email Address';
+	     echo json_encode($respArr);exit;
+	  }
+	  
+	  if($custResp['status'] == '1'){
+	     /*
+	        MAIL SENT CONFIGARATION -- TODO
+	     */
+
+	     $respArr['status'] = '1';
+	     $respArr['message'] = 'Password Reset Email has been sent';
+	  }
+	  echo json_encode($respArr); exit;
+	}
+
+	// customer_registration
+	public function customer_registration(){
+	  header('Content-type: application/json');
+	  $post = file_get_contents("php://input");
+	  $postData = json_decode($post, true);
+	  $this->load->model('Customer_model');
+
+	  $respArr = array('status'=>'0','message'=>'Something went wrong.');
+	  if(empty($postData)){
+	      echo json_encode($respArr);exit;
+	  }
+
+	  $err = 0;
+	  $msg = '';
+	  if(!isset($postData['email']) || empty($postData['email'])){
+	     $err = 1;
+	     $msg = 'Provide a valid Email ID';
+	  } 
+	  else if(!isset($postData['password']) || empty($postData['password'])){
+	     $err = 1;
+	     $msg = 'Provide a Password';
+	  }
+	  else if(!isset($postData['first_name']) || empty($postData['first_name'])){
+	     $err = 1;
+	     $msg = 'Provide valid Name';
+	  }
+	  else if(!isset($postData['last_name']) || empty($postData['last_name'])){
+	     $err = 1;
+	     $msg = 'Provide valid Name';
+	  }
+
+	  if($err == 1){
+	     $respArr['message'] = $msg;
+	     echo json_encode($respArr);exit;
+	  }
+	  
+	  if(isset($postData['phone']) && empty($postData['phone'])){
+	     unset($postData['phone']);
+	  }
+	  unset($postData['promocode']);
+
+	  $custResp = $this->Customer_model->customer_registration($postData);
+	  if(empty($custResp) || !isset($custResp['status']) || empty($custResp['status'])){
+	      echo json_encode($respArr);exit;
+	  }
+
+	  if($custResp['status'] == '2'){
+	     $respArr['status'] = '2';
+	     $respArr['message'] = 'Email Address already in use';
+	     echo json_encode($respArr);exit;
+	  }
+
+	  if($custResp['status'] == '1'){
+	     $custResp = $this->Customer_model->checkCustomerLogin($postData);
+	     if(empty($custResp) || !isset($custResp['status']) || empty($custResp['status'])){
+	         echo json_encode($respArr);exit;
+	     }
+
+	     if($custResp['status'] == '1'){
+	        $respArr['data'] = $custResp['data'];
+	        $respArr['status'] = '1';
+	        $respArr['message'] = 'Success';
+	        echo json_encode($respArr);exit;
+	     }
+	  }
+	  echo json_encode($respArr); exit;
+	}
+
+	// getGeneralIssues
+	public function getGeneralIssues(){
+	  header('Content-type: application/json');
+
+	  $respArr = array('status'=>'0','message'=>'Something went wrong.');
+	  $this->load->model('Issue_model');
+	  $issue_data = $this->Issue_model->getGeneralIssues();
+
+	  if(!empty($issue_data)){
+	     $respArr['status'] = '1';
+	     $respArr['message'] = 'Success';
+	     $respArr['issue_data'] = $issue_data;
+	  }
+	  
+	  echo json_encode($respArr); exit;
+	}
+
+	// getNearByMechanics
+	public function getNearByMechanics(){
+	  header('Content-type: application/json');
+	  $post = file_get_contents("php://input");
+	  $postData = json_decode($post, true);
+	  $this->load->model('Mechanic_model');
+
+	  $respArr = array('status'=>'0','message'=>'Something went wrong.');
+
+	  $mechanic_data = $this->Mechanic_model->getNearByMechanics($postData);
+
+	  if(!empty($issue_data)){
+	     $respArr['status'] = '1';
+	     $respArr['message'] = 'Success';
+	     $respArr['mechanic_data'] = $mechanic_data;
+	  }
+	  
+	  echo json_encode($respArr); exit;
+	}
 }
 ?>
diff --git a/application/models/Mechanic_model.php b/application/models/Mechanic_model.php
index cfdb226..a240680 100644
--- a/application/models/Mechanic_model.php
+++ b/application/models/Mechanic_model.php
@@ -44,9 +44,12 @@ class Mechanic_model extends CI_Model {
 											  'shop_id'=>$mechanic_data['shop_id'],
 											  'address'=>$mechanic_data['address'],
 											  'licence'=>$mechanic_data['licence'],
+											  'location'=>$mechanic_data['location'],
 											  'email_id'=>$mechanic_data['email_id'],
 											  'last_name'=>$mechanic_data['last_name'],
 											  'first_name'=>$mechanic_data['first_name'],
+											  'location_lat'=>$mechanic_data['location_lat'],
+											  'location_lng'=>$mechanic_data['location_lng'],
 											  'licence_number'=>$mechanic_data['licence_number'],
 											  'licence_exp_date'=>$mechanic_data['licence_exp_date']));
  		return $status;
@@ -105,6 +108,9 @@ class Mechanic_model extends CI_Model {
  						  'state'=>$mechanic_data['state'],'shop_id'=>$mechanic_data['shop_id'],
  						  'address'=>$mechanic_data['address'],'email_id'=>$mechanic_data['email_id'],
  						  'last_name'=>$mechanic_data['last_name'],'phone'=>$mechanic_data['phone'],
+ 						  'location'=>$mechanic_data['location'],
+ 						  'location_lat'=>$mechanic_data['location_lat'],
+ 						  'location_lng'=>$mechanic_data['location_lng'],
  						  'licence_number'=>$mechanic_data['licence_number'],
  						  'licence_exp_date'=>$mechanic_data['licence_exp_date']);
 
@@ -122,5 +128,27 @@ class Mechanic_model extends CI_Model {
  		$status = $this->db->update('admin_users',array('status'=>$status),array('id'=>$mechanic_id));
  		return $status;
  	}
+
+ 	function getNearByMechanics($pickLocData = array()){
+ 		if(empty($pickLocData)){
+ 			return 0;
+ 		}
+
+ 		$current_lat = $pickLocData['pickup_lat'];
+        $current_lng = $pickLocData['pickup_lng'];
+
+        $sql = "SELECT ME.*, MS.*,
+        			   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 mechanic AS ME
+    			INNER JOIN admin_users AS AU ON (AU.id=ME.mechanic_id)
+    			LEFT JOIN mechanic_shop AS MS ON (MS.shop_id=ME.shop_id AND MS.status='1')
+                WHERE AU.status = '1'
+                HAVING distance<10";
+
+		pr($this->db->query($sql));
+
+ 	}
 }
 ?>
\ No newline at end of file
diff --git a/application/views/Mechanic/mechanicForm.php b/application/views/Mechanic/mechanicForm.php
index bd8791f..d58ae7d 100644
--- a/application/views/Mechanic/mechanicForm.php
+++ b/application/views/Mechanic/mechanicForm.php
@@ -112,6 +112,12 @@
                   required=""  name="state" placeholder="Enter email ID" value="<?= (isset($user_data->state))?$user_data->state:'' ?>">
                   <span class="glyphicon form-control-feedback"></span>
                 </div> 
+                <div class="form-group">
+                  <label>Functional Area</label>
+                  <input type="text" class="form-control" data-parsley-trigger="change" 
+                  id="loc_search_1" name="location" placeholder="Choose Functional Area" value="<?= (isset($user_data->location))?$user_data->location:'' ?>">
+                  <span class="glyphicon  form-control-feedback"></span>
+                </div>
                 <?php if(!empty($shop_data)){ ?>
                   <div class="form-group">
                     <label>Workshop</label>
diff --git a/assets/js/custom-script.js b/assets/js/custom-script.js
index 6143473..fe788d9 100644
--- a/assets/js/custom-script.js
+++ b/assets/js/custom-script.js
@@ -201,6 +201,11 @@ jQuery('[id="viewMechanic"]').on('click',function() {
                               '<div class="col-md-1">:</div>'+
                               '<div class="col-md-6"><label>'+mechanic_data['state']+'</label></div> '+
                             '</div> '+
+                            '<div class="row"> '+
+                              '<div class="col-md-4">Location</div>'+
+                              '<div class="col-md-1">:</div>'+
+                              '<div class="col-md-6"><label>'+mechanic_data['location']+'</label></div> '+
+                            '</div> '+
                             shopHtml+
                           '</div> '+
                           '<div class="col-md-5"> '+
--
libgit2 0.27.1