HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: //var/www/html/pmw24/app/application/controllers/Api_15_01_2019.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Api extends CI_Controller {
    var $arr;
    var $obj;
	var $logo='';
	function __construct(){
		parent::__construct();
		$this->load->model('mapi');
		$this->arr=array();
		$this->obj=new stdClass();
		$this->logo=base_url().'/public/admin_assets/images/Logo.png';
  }
    private function displayOutput($response){
        header('Content-Type: application/json');
        echo json_encode($response);
        exit(0);
    }	
	
	
	//Login
	public function login()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		if(sizeof($ap)){
			if(empty($ap['email'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Email field is required'),'result'=>array('userdetails'=>$this->obj));
              $this->displayOutput($response);
            }
			
			if(empty($ap['password'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Password field is required'),'result'=>array('userdetails'=>$this->obj));
              $this->displayOutput($response);
            }
			
			$ap['password']=sha1($ap['password']);	

			if(!empty($ap['device_token']) && !empty($ap['device_type']))
			{
				$device_token=$ap['device_token'];
				$device_type=$ap['device_type'];
			}
			
			
			unset($ap['device_token']);
            unset($ap['device_type']);	

			
			$userdetails=$this->mapi->checkUser($ap);
			
			//print_r($userdetails);exit;
			
			if(empty($userdetails)){
            	$response=array('status'=>array('error_code'=>1,'message'=>'Invalid Email or password'),'result'=>array('userdetails'=>$this->obj));
            }else{
				if($userdetails['status'] == 0)
				{
					$response=array('status'=>array('error_code'=>1,'message'=>'Your account is still pending.please contact admin for approval'),'result'=>array('userdetails'=>$this->obj));
				}else{
					
					$condition=array('email'=>$ap['email']);
					$data=array('date_of_lastlogin'=>date('Y-m-d H:i:s'),'loggedin_status'=>1);
					$this->mapi->update('admins',$condition,$data);
					
					$user_detail = $this->mapi->getRow('admins',$condition);
					$userdetails['date_of_lastlogin'] = $user_detail['date_of_lastlogin'];
					$userdetails['loggedin_status'] = $user_detail['loggedin_status'];
					
					if(!empty($device_token) && !empty($device_type))
					{
						$device_condition=array('device_type'=>$device_type,'user_id'=>$userdetails['admin_id']);
						$checkDeviceExist=$this->mapi->getRow('devices',$device_condition);	
						if(empty($checkDeviceExist)){
							  $dv['device_type']= $device_type;
							  $dv['device_token']=$device_token;
							  $dv['user_id']=$userdetails['user_id'];
							  $dv['date_of_creation']=date('Y-m-d h:i:s');
							  $this->mapi->insert('devices',$dv);
							}else{
							  $dv['device_token']=$device_token;
							  $dv['date_of_creation']=date('Y-m-d h:i:s');
							  $this->mapi->update('devices',$device_condition,$dv);	
							}
					}
					$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('userdetails'=>$userdetails));
				}		
				
			}
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>array('userdetails'=>$this->obj));
      	}
      	$this->displayOutput($response);
	}
	
	//Profile Detail
	public function profileDetail()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		if(sizeof($ap)){
			if(empty($ap['user_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'User Id field is required'),'result'=>array('userdetails'=>$this->obj));
              $this->displayOutput($response);
            }
			
			$condition=array('admin_id'=>$ap['user_id']);
			$userDetail=$this->mapi->getRow('admins',$condition);
			if($userDetail['dob']=='--')
			{
				$userDetail['dob']='';
			}	
			//print_r($userDetail); die;		
			
			if(!empty($userDetail))
			{
				$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('userdetails'=>$userDetail));
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('userdetails'=>$this->obj));
			}
					
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>array('userdetails'=>$this->obj));
      	}
      	$this->displayOutput($response);
	}
	
	//Update Profile
	public function profileUpdate()
	{
		 $ap=json_decode(file_get_contents('php://input'), true);
		  if(sizeof($ap)){
			  if(empty($ap['admin_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'User id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
			}
			
			 if(empty($ap['first_name'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'First name is required'),'result'=>$this->obj);
              $this->displayOutput($response);
			}
			if(empty($ap['phoneno'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Phone No is required'),'result'=>$this->obj);
              $this->displayOutput($response);
			}
			if(empty($ap['post_code'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Post code is required'),'result'=>$this->obj);
              $this->displayOutput($response);
			}
			
			// if(empty($ap['last_name'])){
   //            $response=array('status'=>array('error_code'=>1,'message'=>'Last name field is required'),'result'=>$this->obj);
   //            $this->displayOutput($response);
			// }
			
			// if(empty($ap['employee_id'])){
   //            $response=array('status'=>array('error_code'=>1,'message'=>'Employee Id field is required'),'result'=>$this->obj);
   //            $this->displayOutput($response);
			// }
			
			// if(empty($ap['dob'])){
   //            $response=array('status'=>array('error_code'=>1,'message'=>'Date Of Birth field is required'),'result'=>$this->obj);
   //            $this->displayOutput($response);
			// }
			
			// if(empty($ap['emergency_contact'])){
   //            $response=array('status'=>array('error_code'=>1,'message'=>'Emergency Contact No field is required'),'result'=>$this->obj);
   //            $this->displayOutput($response);
			// }	
			
			// if(empty($ap['tfn'])){
   //            $response=array('status'=>array('error_code'=>1,'message'=>'TFN field is required'),'result'=>$this->obj);
   //            $this->displayOutput($response);
			// }
			
			// if(empty($ap['abn'])){
   //            $response=array('status'=>array('error_code'=>1,'message'=>'ABN field is required'),'result'=>$this->obj);
   //            $this->displayOutput($response);
			// }
			
			// if(empty($ap['address'])){
   //            $response=array('status'=>array('error_code'=>1,'message'=>'Address field is required'),'result'=>$this->obj);
   //            $this->displayOutput($response);
			// }
			
		
			$condition=array('admin_id'=>$ap['admin_id']);
			$this->mapi->update('admins',$condition,$ap);			
			$response=array('status'=>array('error_code'=>0,'message'=>'Profile updated successfully'),'result'=>$this->obj);
		  }else{
				$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
		  }
      $this->displayOutput($response);
	}
	
	//Change Password
	public function changePassword(){
    	$ap=json_decode(file_get_contents('php://input'), true);
      	if(sizeof($ap)){
      		if(empty($ap['old_password'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Old password field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            if(empty($ap['new_password'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'New password field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            if(empty($ap['confirm_password'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Confirm password field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            if(empty($ap['user_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'User id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            $condition=array('admin_id'=>$ap['user_id']);
            $userdetails=$this->mapi->getRow('admins',$condition);
            if(strtolower($userdetails['org_password'])!=strtolower($ap['old_password'])){
            	$response=array('status'=>array('error_code'=>1,'message'=>'Old password is wrong'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            if(strtolower($ap['new_password'])!=strtolower($ap['confirm_password'])){
            	$response=array('status'=>array('error_code'=>1,'message'=>'New password does not match with confirm password'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            if(strtolower($ap['new_password'])==strtolower($ap['old_password'])){
            	$response=array('status'=>array('error_code'=>1,'message'=>'New password same as old password,try something else'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            $condition=array('admin_id'=>$ap['user_id']);
            $data=array('date_of_update'=>date('Y-m-d H:i:s'),'password'=>sha1($ap['new_password']),'org_password'=>$ap['new_password']);
            $this->mapi->update('admins',$condition,$data);
            $response=array('status'=>array('error_code'=>0,'message'=>'Password changed successfully'),'result'=>$this->obj);
      	}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
    }
	
	//Forgot Password
	public function forgotPassword(){ 
    	$ap=json_decode(file_get_contents('php://input'), true);
      	if(sizeof($ap)){
      		if(empty($ap['email'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Email field is required'),'result'=>array('details'=>$this->obj));
              $this->displayOutput($response);
            }
			
			// $password = rand(000,999);
			 $condition=array('email'=>$ap['email']);
   //          $data=array('password'=>sha1($password),'org_password'=>$password);
   //          $this->mapi->update('admins',$condition,$data);			
            
            $userDetails=$this->mapi->getRow('admins',$condition);
            if(empty($userDetails)){
            	$response=array('status'=>array('error_code'=>1,'message'=>'This email does not exist'),'result'=>array('details'=>$this->obj));
            }else{
            	$mail_temp = file_get_contents('./global/mail/password.html');
            	$mail_temp=str_replace("{shop_name}","Punjab Motor Work Shop",$mail_temp);
            	$mail_temp=str_replace("{shop_logo}",$this->logo,$mail_temp);
				$mail_temp=str_replace("{name}",$userDetails['name'],$mail_temp);
            	$mail_temp=str_replace("{username}",$userDetails['email'],$mail_temp);
            	$mail_temp=str_replace("{email}",$userDetails['email'],$mail_temp);
            	$mail_temp=str_replace("{passwd}",$userDetails['org_password'],$mail_temp);
            	$data['to']=$userDetails['email'];
            	$data['name']='Punjab Motor Work Shop';
            	$data['subject']='Punjab Motor Work Shop - new login credential';
            	$data['message']=$mail_temp;
            	$data['from']='punjabmotorworkshop@gmail.com';				
            	if($this->sendMail($data)){
                $response=array('status'=>array('error_code'=>0,'message'=>'Your login credential has been sent to your email'),'result'=>array('details'=>$this->obj));
              }else{
                $response=array('status'=>array('error_code'=>0,'message'=>'Due to server error mail could not be sent'),'result'=>array('details'=>$this->obj));
              }
            }
      	}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>array('details'=>$this->obj));
      	}
      	 $this->displayOutput($response);
    }
	
	//Question List
	public function questionList()
	{
		$condition = array();
		$questionList = $this->mapi->getRows('question',$condition);
		
		if(!empty($questionList)){
			$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$questionList));
		}else{
			$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
		}
		
		$this->displayOutput($response);
		
	}
	
	//Car List
	public function carList()
	{
		$condition = array();
		$carList = $this->mapi->getRows('car',$condition);
		
		if(!empty($carList)){
			$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$carList));
		}else{
			$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
		}
		
		$this->displayOutput($response);
	}
	
	//save Inspection
	public function saveInspection()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		//print_r($ap);die;
		if(sizeof($ap)){
			if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			if(empty($ap['car_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Car Id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			if(empty($ap['question_answer'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Question Answer field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }	
			
			
			$question_answers =  $ap['question_answer'];
			
			$inspection_data['car_id'] = $ap['car_id'];
			$inspection_data['mechanic_id'] = $ap['mechanic_id'];
			$inspection_data['date_of_creation'] = date('Y-m-d');
			$inspection_data['time_of_creation'] = date('H:i:s');
			
			$inspection_id = $this->mapi->insert('inspection',$inspection_data);
			
			if (!empty($inspection_id))
			{
			
				foreach($question_answers as $question_answer)
				{
					$inspection_answer_data['inspection_id'] = $inspection_id;
					$inspection_answer_data['question_id'] = $question_answer['question_id'];
					$inspection_answer_data['option'] = $question_answer['option'];
					
					$inspection_answer_id = $this->mapi->insert('inspection_answer',$inspection_answer_data);
					
					if(!empty($inspection_answer_id))
					{
						foreach($question_answer['images'] as $question_answer_image)
						{
							$inspection_answer_image_data=array();
							$filename='';
							$filename=uniqid().'.png';  
							$path='./public/admin_assets/images/inspection/';  
							$this->imageUpload($question_answer_image,$filename,$path);
							$inspection_answer_image_data['image']=$filename;	 				     
							$inspection_answer_image_data['inspection_answer_id']=$inspection_answer_id;
							$inspection_answer_image_data['date_of_creation']=date('Y-m-d');
							$this->mapi->insert('inspection_answer_image',$inspection_answer_image_data); 
						}
					}
				}
				
				 $response=array('status'=>array('error_code'=>0,'message'=>'Inspection done successfully'),'result'=>$this->obj);
			}else{
				$response=array('status'=>array('error_code'=>1,'message'=>'Something Went Wrong'),'result'=>$this->obj);
			}
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	//My Inspection List
	public function myInspectionList()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$myInspectionCondition = array("mechanic_id"=>$ap['mechanic_id']);			
			$myinspections = $this->mapi->getRows('inspection',$myInspectionCondition);
			
			if(!empty($myinspections))
			{
				foreach($myinspections as $key=>$myinspection)
				{
					$car_information_condition = array("car_id"=>$myinspection['car_id']);
					$car_information = $this->mapi->getRow('car',$car_information_condition);
					$myinspections[$key]['car_no'] = $car_information['car_no'];
				}

				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('myinspectionList'=>$myinspections));			
				
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('myinspectionList'=>$this->arr));
			}
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	//Inspection Details
	public function inspectionDetails()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			if(empty($ap['inspection_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("inspection_id"=>$ap['inspection_id']);
			$inspection_answers = $this->mapi->getRows('inspection_answer',$condition);
			
			
			if(!empty($inspection_answers))
			{
				foreach($inspection_answers as $key=>$inspection_answer)
				{
					$question_condition = array("question_id"=>$inspection_answer['question_id']);
					$question = $this->mapi->getRow('question',$question_condition);
					$inspection_answers[$key]['question'] = $question['question'];
					
					$inspection_answer_image_condition = array("inspection_answer_id"=>$inspection_answer['inspection_answer_id']);
					$inspection_answers[$key]['image'] = $this->mapi->getRows('inspection_answer_image',$inspection_answer_image_condition);
				}
			}
			
			if(!empty($inspection_answers)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('inspectionDetails'=>$inspection_answers));
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('inspectionDetails'=>$this->arr));
			}
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	
	
	private function imageUpload($base64_string,$filename,$path){
    	$ifp = fopen($path.$filename, "wb"); 
    	fwrite($ifp, base64_decode($base64_string)); 
    	fclose($ifp); 
		return true;    
    }
	
	//job List
	public function jobList()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			
			if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			//$condition = array("mechanic_id"=>$ap['mechanic_id'],"job_status"=>0);
			$condition = array("mechanic_id"=>$ap['mechanic_id'],"assign_status"=>2);
			$assignjobList = $this->mapi->assignedJob($condition);
			
			$jobList = array();
			
			if(!empty($assignjobList))
			{
				foreach($assignjobList as $key=>$assignjob)
				{
					
					$job_condition = array("job_id"=>$assignjob['job_id']);
					$job = $this->mapi->getRow('job',$job_condition);
					
					//if(!empty($job)){
					
					
						$services = $this->mapi->getServices($assignjob['job_id']);	

						$service_date_condition = array("job_id"=>$assignjob['job_id']);
						$job_service_date = $this->mapi->getRow("job_service_date",$service_date_condition);
								
						
						$car_condition = array("car_id"=>$assignjob['car_id']);
						$car = $this->mapi->getRow('car',$car_condition);
						
						$assigned_by_condition = array("admin_id"=>$assignjob['created_by']);
						$assigned_by = $this->mapi->getRow('admins',$assigned_by_condition);
						
						//$service = explode(',',$job['service']);
						$jobList[$key]['job_id'] = $assignjob['job_id'];
						$jobList[$key]['service_date'] = $job_service_date['service_date'];
						$jobList[$key]['company_name'] = $car['company_name'];
						$jobList[$key]['car_no'] = $car['car_no'];
						$jobList[$key]['assigned_by'] = $assigned_by['name'];
						$jobList[$key]['service_count'] = sizeof($services);
					//}					
				}
			}			
			
			
			if(!empty($jobList)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$jobList));
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
			}		
		
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	//Job Details
	public function jobDetails()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			if(empty($ap['job_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Job Id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("job_id"=>$ap['job_id']);
			$jobDetails = $this->mapi->getRow('job',$condition);
			
			if(!empty($jobDetails))
			{	
				$services = $this->mapi->getServices($jobDetails['job_id']);
				
				$jobDetails['service'] = $services;
				
				$service_date_condition = array("job_id"=>$jobDetails['job_id']);
				$job_service_date = $this->mapi->getRow("job_service_date",$service_date_condition);
				
				$jobDetails['service_date'] = $job_service_date['service_date'];
				
				$carCondition = array("car_id"=>$jobDetails['car_id']);
				$other_details = $this->mapi->getRow('car',$carCondition);
				
				$assigned_by_condition = array("admin_id"=>$jobDetails['created_by']);
				$assigned_by = $this->mapi->getRow('admins',$assigned_by_condition);
				$jobDetails['assigned_by'] = $assigned_by['name'];
				$jobDetails['car'] = $other_details['car_no'];				
				
				$jobDetails['other_details'] = $other_details;
			}
			
			if(!empty($jobDetails))
			{
				$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('jobDetails'=>$jobDetails));
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('jobDetails'=>$this->obj));
			}
		
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	//Accept or deny job By Mechanic
	
	public function acceptOrDenyJob()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			if(empty($ap['job_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			if(!isset($ap['assign_status'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Assign Status field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }		
			
			
			
			$assignJobCondition = array("mechanic_id"=>$ap['mechanic_id'],"job_id"=>$ap['job_id']);			
			$assignedJob = $this->mapi->getRow('assign_job',$assignJobCondition);
			
			if(!empty($assignedJob))
			{			
				$data['assign_status'] = $ap['assign_status'];
				$data['remarks'] = $ap['remarks'];
				$this->mapi->update('assign_job',$assignJobCondition,$data);
				$job_condition = array("job_id"=>$ap['job_id']);
				$job = $this->mapi->getRow('job',$job_condition);
				$car_id = $job['car_id'];
				////for job acceptence...................................................
				if($ap['assign_status'] == 1)
				{
					
					$job_data['job_status'] = 1;
					$this->mapi->update('job',$job_condition,$job_data);
					
					$job = $this->mapi->getRow('job',$job_condition);
					$car_id = $job['car_id'];
					
					$car_data['car_assign_status'] = 1;
					$car_condition = array("car_id"=>$car_id);
					$this->mapi->update('car',$car_condition,$car_data);

					////////for notification//////////////////////////////////////
					$data_notification['description'] = 'Job accepted by mechanic';
					$data_notification['type'] = 1;	
					$data_notification['details_id'] = $ap['job_id'];					
					$this->mapi->insert('notification',$data_notification);	

					$response=array('status'=>array('error_code'=>0,'message'=>'Job successfully accepted by you'),'result'=>array('details'=>$this->obj));
					
				}
				////for job rejection...................................................
				else{
					// $car_data['car_assign_status'] = 0;
					// $car_condition = array("car_id"=>$car_id);
					// $this->mapi->update('car',$car_condition,$car_data);

					///delete from user roaster/////////////////////////////////////////////////
					$job_service_condition['job_id']=$ap['job_id'];
					$job_service_date = $this->mapi->getRowLast('job_service_date',$job_service_condition);
					$roaster_cond['mechanic_id']=$ap['mechanic_id'];
					$roaster_cond['available_date']=$job_service_date['service_date'];
					$this->mapi->delete('user_roaster',$roaster_cond);
					

					////////for notification//////////////////////////////////////
					$data_notification['description'] = 'Job rejected by mechanic';
					$data_notification['type'] = 2;	
					$data_notification['details_id'] = $ap['job_id'];					
					$this->mapi->insert('notification',$data_notification);	
					//echo $this->db->last_query(); die;
					$response=array('status'=>array('error_code'=>0,'message'=>'You rejected this job'),'result'=>array('details'=>$this->obj));
				}
				
			}else{
				$response=array('status'=>array('error_code'=>1,'message'=>'Job Does Not Exsits'),'result'=>array('details'=>$this->obj));
			}
			
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	//On Going Job List
	/*public function onGoingJob()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			
			if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("mechanic_id"=>$ap['mechanic_id'],"job_status"=>1,"assign_status"=>1);			
			$ongoingjob = $this->mapi->onGoiningJobList($condition);			
			

			
				
				$services = $this->mapi->getServices($ongoingjob['job_id']);				
				
				
				foreach($services as $key1=>$service)				
				{
					$task_condition = array("service_id"=>$service['service_id'],"status"=>1);
					$task = $this->mapi->getRows('task',$task_condition);
					$services[$key1]['task'] = $task;
					
				}
				
				
				$ongoingjob['service'] = $services;
				
				$image_condition = array("job_id"=>$ongoingjob['job_id']);
				
				$images = $this->mapi->getRows('job_images',$image_condition);
				
				//print_r($images);
				
				$ongoingjob['images'] = $images;
				
				
				$car_condition = array("car_id"=>$ongoingjob['car_id']);
				$car = $this->mapi->getRow('car',$car_condition);
				
				$ongoingjob['car'] = $car['car_no'];		
			
			}
			
			
			
			if(!empty($ongoingjob)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$ongoingjob));
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
			}
			
			
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}*/
	
	//On Going Job List
	public function onGoingJob()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			
			if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("mechanic_id"=>$ap['mechanic_id'],"job_status"=>1,"assign_status"=>1);			
			$ongoingjob = $this->mapi->onGoiningJobList($condition);
			
			//print_r($ongoingjob);exit;
			
			//print_r($ongoingjob);exit;
			
			$full_service_condition =array();
			$full_services = $this->mapi->getRows('service',$full_service_condition);		
			
			
			if(!empty($ongoingjob)){
			/*foreach($ongoingjobList as $key=>$ongoingjob)
			{*/
				
				$services = $this->mapi->getServices($ongoingjob['job_id']);

				$new_selected_service = array();
				
				foreach($services as $select_service)
				{
					$new_selected_service[] = $select_service['service_id'];
				}
				
				
				foreach($full_services as $key1=>$service)				
				{
					$task_condition = array("service_id"=>$service['service_id'],"status"=>1);
					
					if(in_array($service['service_id'],$new_selected_service))
					{
						$full_services[$key1]['is_active'] = 1;
					}else{
						$full_services[$key1]['is_active'] = 0;
					}
					$task = $this->mapi->getRows('task',$task_condition);
					$full_services[$key1]['task'] = $task;
					
				}
				
				
				$ongoingjob['service'] = $full_services;
				
				$image_condition = array("job_id"=>$ongoingjob['job_id']);
				
				$images = $this->mapi->getRows('job_images',$image_condition);
				
				//print_r($images);
				
				$ongoingjob['images'] = $images;
				
				
				$car_condition = array("car_id"=>$ongoingjob['car_id']);
				$car = $this->mapi->getRow('car',$car_condition);
				
				$ongoingjob['car'] = $car['car_no'];		
			
			}
			
			
			
			
			
			if(!empty($ongoingjob)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$ongoingjob));
			}else{
				$response=array('status'=>array('error_code'=>1,'message'=>'No Job Available'),'result'=>array('list'=>$this->arr));
			}
			
			
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	//Apply Task under service
	public function applyTaskUnderService()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			
			if(empty($ap['task'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Task Ids field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			if(empty($ap['job_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'job Id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }			
			
			$tasks = $ap['task'];
			
			$data  = array();
			
			$mechanic_job_task_condition = array("job_id"=>$ap['job_id']);
			$this->mapi->delete('mechanic_job_task',$mechanic_job_task_condition);
			
			$service_ids = array();
			
			foreach($tasks as $key=>$task)
			{
				$task_ids = explode(',',$task['task_id']);				
				
				foreach($task_ids as $key1=>$task_id)
				{
					$data['service_id'] = $task['service_id'];
					$data['task_id'] = $task_id;	
					$data['job_id'] = $ap['job_id'];					
					$this->mapi->insert('mechanic_job_task',$data);				
					
				}

				$service_ids[$key]['service_id'] = $task['service_id'];
				$service_ids[$key]['additional_note'] = $task['additional_note'];
				
			}
			
			
			
			$job_services_condition = array("job_id"=>$ap['job_id']);	
			$this->mapi->delete('job_services',$job_services_condition);
			
			foreach($service_ids as $service_id){			
				$additional_data['job_id'] = $ap['job_id'];
				$additional_data['additional_note'] = $service_id['additional_note'];
				$additional_data['service_id'] = $service_id['service_id'];
				$this->mapi->insert('job_services',$additional_data);
			
			}
			
			if(!empty($ap['km_reading']))
			{
				$udata['km_reading'] = $ap['km_reading'];
			}else{
				$udata['km_reading'] = "";
			}	

			
			if(!empty($ap['job_additional_note']))
			{
				$udata['additional_note'] = $ap['job_additional_note'];
			}else{
				$udata['additional_note'] = "";
			}
			
			$udata['job_status'] = 2;
			
			
			
			//$this->mapi->batch_insert('mechanic_job_task',$data);
			
			$condition = array("job_id"=>$ap['job_id']);
			$this->mapi->update('job',$condition,$udata);		
			
			$servic_date_data['service_end_date'] = date('Y-m-d');
			$servic_date_data['service_end_time'] = date('H:i:s');
			$this->mapi->update('job_service_date',$condition,$servic_date_data);
			
			$job_condition = array("job_id"=>$ap['job_id']);
			
			$job = $this->mapi->getRow('job',$job_condition);
			$car_id = $job['car_id'];
			
			$car_data['car_assign_status'] = 0;
			//$car_condition = array("car_id",$car_id);
			$car_condition['car_id'] = $car_id;
			$this->mapi->update('car',$car_condition,$car_data);
			
			$response=array('status'=>array('error_code'=>0,'message'=>'Job Completed successfully'),'result'=>$this->obj);
			
			
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	
	//Save Multiple Images
	public function saveMultipleImage()
	{
		if(isset($_POST)){
			$job_id = $this->input->post('job_id');
			
			if(empty($job_id)){
              $response=array('status'=>array('error_code'=>1,'message'=>'Job Id field is required'),'result'=>array('result'=>$this->obj));
              $this->displayOutput($response);
            }
			
			$file_ary = $this->reArrayFiles($_FILES['imgInp']);
			foreach($file_ary as $key=>$file)
			{
				$file_name = time()."_".$file['name'];	
				$image_path = './public/admin_assets/images/job/'.$file_name;
				move_uploaded_file($file['tmp_name'],$image_path);
				$udata['image'] = $file_name;
				$udata['job_id'] = $job_id ;										
				$this->mapi->insert('job_images',$udata);
			}
			
			$response=array('status'=>array('error_code'=>0,'message'=>'Image Saved successfully'),'result'=>$this->obj);
			
		}else{
			$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
		}
		$this->displayOutput($response);
	}
	
	//Job History
	public function jobHistory()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){			
			if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("mechanic_id"=>$ap['mechanic_id'],"assign_status"=>1);
			$assignjobList = $this->mapi->getRows('assign_job',$condition);			
			
			$jobList = [];
			//$key=0;
			
			 if(!empty($assignjobList))
			 {
				foreach($assignjobList as $key=>$assignjob)
				{
					$jobEachArr=array();
					$job_condition = array("job_id"=>$assignjob['job_id'],"job_status"=>2);
					$job = $this->mapi->getRow('job',$job_condition);
					
					$services = $this->mapi->getServices($assignjob['job_id']);	

					$service_date_condition = array("job_id"=>$assignjob['job_id']);
					$job_service_date = $this->mapi->getRow("job_service_date",$service_date_condition);							
					
					$car_condition = array("car_id"=>$job['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);
					
					$assigned_by_condition = array("admin_id"=>$job['created_by']);
					$assigned_by = $this->mapi->getRow('admins',$assigned_by_condition);
					
					//$service = explode(',',$job['service']);
					
					// $jobList[$key]['job_id'] = $assignjob['job_id'];
					// $jobList[$key]['service_end_date'] = $job_service_date['service_end_date'];	
					// $jobList[$key]['service_end_time'] = $job_service_date['service_end_time'];
					// $jobList[$key]['car_no'] = $car['car_no'];					
					// $jobList[$key]['service_count'] = sizeof($services);
					
				 if(!empty($job))
				 {
					$jobEachArr['job_id'] = $assignjob['job_id'];
					$jobEachArr['service_end_date'] = $job_service_date['service_end_date'];	
					$jobEachArr['service_end_time'] = $job_service_date['service_end_time'];
					$jobEachArr['car_no'] = $car['car_no'];					
					$jobEachArr['service_count'] = sizeof($services);
					//$key++;
					$jobList[] =$jobEachArr;
				}
				}
			}
			
			if(!empty($jobList)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$jobList));
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
			}
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	//Search Job History
	public function serachJobHistory()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			
			if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			
			if(empty($ap['car_no'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Car Id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			if(empty($ap['start_date'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Start Date field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			if(empty($ap['end_date'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Start Date field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$car_information_condition = array("car_no"=>$ap['car_no']);
			$car_information = $this->mapi->getRow('car',$car_information_condition);
			
			//$condition = array("mechanic_id"=>$ap['mechanic_id'],"assign_job.assign_status"=>1,
			//"job.car_id"=>$car_information['car_id'],"service_end_date>="=>$ap['start_date'],"service_end_date>="=>$ap['end_date']);
			$assignjobList = $this->mapi->searchJobHistory($ap['mechanic_id'],$car_information['car_id'],$ap['start_date'],$ap['end_date']);	
			
			$jobList = array();

			if(!empty($assignjobList))
			{
				foreach($assignjobList as $key=>$assignjob)
				{
					$job_condition = array("job_id"=>$assignjob['job_id'],"job_status"=>2);
					$job = $this->mapi->getRow('job',$job_condition);
					
					
					$services = $this->mapi->getServices($assignjob['job_id']);										
					
					$car_condition = array("car_id"=>$assignjob['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);
					
					$assigned_by_condition = array("admin_id"=>$job['created_by']);
					$assigned_by = $this->mapi->getRow('admins',$assigned_by_condition);					
					
					$jobList[$key]['job_id'] = $assignjob['job_id'];
					$jobList[$key]['service_end_date'] = $assignjob['service_end_date'];	
					$jobList[$key]['service_end_time'] = $assignjob['service_end_time'];
					$jobList[$key]['car_no'] = $car['car_no'];					
					$jobList[$key]['service_count'] = sizeof($services);
				}
			}
			
			if(!empty($jobList)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$jobList));
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
			}
			
		
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	public function jobHistoryDetails()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			
			if(empty($ap['job_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Job Id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$finalJobHistoryDetails = array();
			$condition = array("job_id"=>$ap['job_id']);
			$jobDetails = $this->mapi->getRow('job',$condition);
			
			
			$carCondition = array("car_id"=>$jobDetails['car_id']);
			$carDetails = $this->mapi->getRow('car',$carCondition);
			
			$finalJobHistoryDetails['km_reading'] = $jobDetails['km_reading'];
			$finalJobHistoryDetails['additional_note'] = $jobDetails['additional_note'];
			
			$finalJobHistoryDetails['car_no'] = $carDetails['car_no'];
			$finalJobHistoryDetails['company_name'] = $carDetails['company_name'];	
			
			
				
			$jobhistoryDetails = $this->mapi->jobHostoryDetails($ap['job_id']);			
			
			
			$newjobhistoryDetailsarrays = array();
			foreach($jobhistoryDetails as $key_d=>$jobhistoryDetail)
			{				
				$newjobhistoryDetailsarrays[] = $jobhistoryDetail['service_id'];
			}
			
			
			
			
			$newJobHistoryDetails = array();
			
			//print_r(array_values(array_unique($newjobhistoryDetailsarrays)));exit;
			
			foreach(array_values(array_unique($newjobhistoryDetailsarrays)) as $key=>$newjobhistoryDetailsarray)
			{
				$newJobHistoryDetails[$key]['service_id'] = $newjobhistoryDetailsarray;
				
				$service_condition = array('service_id'=>$newjobhistoryDetailsarray);
				$service = $this->mapi->getRow('service',$service_condition);			
				
				$newJobHistoryDetails[$key]['service_name'] = $service['service_name'];
				
				$jobhistoryDetails = $this->mapi->jobHostoryDetailswithServiceId($ap['job_id'],$newjobhistoryDetailsarray);	
				
				//$newJobHistoryDetails[$key]['service_name'] = $jobhistoryDetails['service_name'];
				
				foreach( $jobhistoryDetails as  $key1=>$jobhistoryDetail)
				{
					$task_condition = array('task_id'=>$jobhistoryDetail['task_id']);
					$task = $this->mapi->getRow('task',$task_condition);
					$newJobHistoryDetails[$key]['task'][$key1] = (empty($task) ? new stdClass():$task); 
				}
				
				
				$additional_note_condition = array("service_id"=>$newjobhistoryDetailsarray,"job_id"=>$ap['job_id']);
				$additional_note = $this->mapi->getRow('job_services',$additional_note_condition);
				$newJobHistoryDetails[$key]['additional_note'] = $additional_note['additional_note'];
			
			}		
			
						
			
			$finalJobHistoryDetails['services'] = $newJobHistoryDetails;
			
			$jobImages = $this->mapi->getRows('job_images',$condition);
			$finalJobHistoryDetails['images'] = $jobImages;
			
			if(!empty($finalJobHistoryDetails))
			{
				$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('jobHistoryDetails'=>$finalJobHistoryDetails));
			}else{
				$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('jobHistoryDetails'=>$this->obj));
			}		
			
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}
	
	private function reArrayFiles(&$file_post) {

		$file_ary = array();
		$file_count = count($file_post['name']);
		$file_keys = array_keys($file_post);

		for ($i=0; $i<$file_count; $i++) {
			foreach ($file_keys as $key) {
				$file_ary[$i][$key] = $file_post[$key][$i];
			}
		}

		return $file_ary;
	}
		
	private function sendMail($data){
		$config['protocol']    	= 'smtp';
        $config['protocol']      = 'smtp';
        $config['smtp_host']     = 'ssl://mail.fitser.com';
        $config['smtp_port']     = '465';  
        $config['smtp_user']     = 'test123@fitser.com';
        $config['smtp_pass']     = 'Test123@';
        $config['charset']    	= 'utf-8';
        $config['newline']    	= "\r\n";
        $config['mailtype'] 	= 'html';
        $config['validation'] 	= TRUE;   

        $this->email->initialize($config);

        $this->email->set_crlf( "\r\n" );

        $this->email->from('info@punjabmotorworkshop.com', 'Punjab Motor Work Shop');
        $this->email->to($data['to']); 
        //$this->email->to('ishani.banerjee@met-technologies.com'); 

        $this->email->subject($data['subject']);
        $this->email->message($data['message']);  

        $this->email->send();
		return true;   	
    } 
    
    public function privacy(){
		
		$condition = array("page_slug"=>'privacy');
		$cms = $this->mapi->getRow($table='cms', $condition);
		
		if(!empty($cms)){
			$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('cms'=>$cms['description']));
		}else{
			$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('cms'=>''));
		}	
		
      	$this->displayOutput($response);
	}
	
}