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.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->load->model('admin/minvoice');
		$this->arr=array();
		$this->obj=new stdClass();
		//$this->logo=base_url().'/public/admin_assets/images/Logo.png';
		$this->logo=base_url().'/public/admin_assets/images/logo_pdf.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']='info@pmw24.com.au';				
            	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,'car_id');
		$carList = $this->mapi->carList();   
		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'];
					$myinspections[$key]['date_of_creation'] = 
					date('d/m/Y',strtotime($myinspection['date_of_creation']));
					$myinspections[$key]['time_of_creation'] = date("g:i a", strtotime($myinspection['time_of_creation']));
				}

				$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);
			}
			
			if(empty($ap['job_type'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Job Type 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);
			
			
			
			//print_r($assignjobList);die;
			$assign_job_List=array();
			if(!empty($assignjobList))
			{
				foreach($assignjobList as $key=>$assignjob)
				{$jobList =array();
					
					$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']);
						if(($ap['job_type'] == 2)){
							
							if(($assignjob['created_by'] == $assignjob['mechanic_id'])){
								$jobList['job_id'] = $assignjob['job_id'];
								$jobList['service_date'] = date('d/m/Y',strtotime($job_service_date['service_date']));
								$jobList['company_name'] = $car['company_name'];
								$jobList['car_no'] = $car['car_no'];
								$jobList['assigned_by'] = $assigned_by['name'];
								$jobList['job_type'] = ($assignjob['created_by'] == $assignjob['mechanic_id'])?2:1; //1=>Admin Job,2=>Mechanic Job
								$jobList['service_count'] = sizeof($services);
								$jobList['paid_or_unpaid'] = $assignjob['paid_or_unpaid'];
								

							}
							
						}else{
							
							if(($assignjob['created_by'] != $assignjob['mechanic_id'])){
								$jobList['job_id'] = $assignjob['job_id'];
								$jobList['service_date'] = date('d/m/Y',strtotime($job_service_date['service_date']));
								$jobList['company_name'] = $car['company_name'];
								$jobList['car_no'] = $car['car_no'];
								$jobList['assigned_by'] = $assigned_by['name'];
								$jobList['job_type'] = ($assignjob['created_by'] == $assignjob['mechanic_id'])?2:1; //1=>Admin Job,2=>Mechanic Job
								$jobList['paid_or_unpaid'] = $assignjob['paid_or_unpaid'];
								$jobList['service_count'] = sizeof($services);

							}
							
						}
						if(!empty($jobList)){$assign_job_List[]=$jobList;}
					//}					
				}
			}			
			
			//echo '<pre>';print_r($jobList);die;
			if(!empty($assign_job_List)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$assign_job_List));
				echo json_encode($response);die;
			}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'=>'Job 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);
	}*/
	
	public function onGoingJobList()
	{
		$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);			
			$ongoingjobList = $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($ongoingjobList)){
			foreach($ongoingjobList as $key=>$ongoingjob){
			
				
				$services = $this->mapi->getServices($ongoingjob['job_id']);	
				$assigned_by_condition = array("admin_id"=>$ongoingjob['created_by']);
				$assigned_by = $this->mapi->getRow('admins',$assigned_by_condition);
				
				$car_condition = array("car_id"=>$ongoingjob['car_id']);
				$car = $this->mapi->getRow('car',$car_condition);
				
				

				/////////////////get service date//////////////////////////////////
				$jobservice_date_condition = array("job_id"=>$ongoingjob['job_id']);
				$jobservice_date = $this->mapi->getRow('job_service_date',$jobservice_date_condition);
				
				$ongoingjob['car'] = $car['car_no'];
				$ongoingjob['company_name'] = $car['company_name'];
				$ongoingjob['service_date'] = date('d/m/Y',strtotime($jobservice_date['service_date']));		
				$ongoingjob['assigned_by'] = $assigned_by['name'];
				
						
				$ongoingjob['service_count'] = count($services);		
			
				$ongoingjobList[$key] = $ongoingjob;
			}
		}
			
			
			
			
			if(!empty($ongoingjobList)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$ongoingjobList));
			}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);
	}


	//On Going Job List
	public function onGoingJob()
	{
		$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 is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("job.job_id"=>$ap['job_id']);			
			$ongoingjob = $this->mapi->onGoiningJobDetails($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)){
			
			
				
				$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'];

				/////////////////get service date//////////////////////////////////
				$jobservice_date_condition = array("job_id"=>$ongoingjob['job_id']);
				$jobservice_date = $this->mapi->getRow('job_service_date',$jobservice_date_condition);
				
				$ongoingjob['service_date'] = $jobservice_date['service_date'];		
			
				
		}
			
			
			
			
			if(!empty($ongoingjob)){
				$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('details'=>$ongoingjob));
			}else{
				$response=array('status'=>array('error_code'=>1,'message'=>'No Job Available'),'result'=>array('details'=>$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);

			///////delete from user roaster/////////////////////////////////////////////////
			$job_assign_condition = array("job_id"=>$ap['job_id']);			
			$job_assign_data = $this->mapi->getRow('assign_job',$job_assign_condition);
			$roaster_condition['mechanic_id'] = $job_assign_data['mechanic_id'];	
			$roaster_condition['available_date'] = date('Y-m-d');	
			$this->mapi->delete('user_roaster',$roaster_condition);


					$car_user = $this->mapi->getRow('car',$car_condition);
					$customer_data = $this->mapi->getRow('customer',array('customer_id'=>$car_user['customer_id']));
					$customer_name = ($customer_data['customer_type']=='B')?$customer_data['business_name']:$customer_data['first_name'].' '.(!empty($customer_data['middle_name'])?$customer_data['middle_name'].' ':'').$customer_data['last_name'];
					$customer_email = !empty($customer_data) ? $customer_data['email'] : $car_user['email'];
					
					$mail_temp = file_get_contents('./global/mail/job_complete_app.html');
					$mail_temp = str_replace("{shop_name}","Punjab Motor Workshop",$mail_temp);
					$mail_temp = str_replace("{shop_logo}",LOGOURL,$mail_temp);
					$mail_temp = str_replace("{name}",$customer_name,$mail_temp);
					$mail_temp = str_replace("{carnumber}",$car_user['car_no'],$mail_temp);
					
					
					$regmail['name']='Punjab Motor';
					$regmail['to']=$customer_email;
					$regmail['subject']='Job Completed';
					$regmail['message']=$mail_temp;
					//echo $mail_temp;exit;
					$regmail['from']='info@pmw24.com.au';				
           			$this->sendMail($regmail);
			//echo $this->db->last_query(); die;
			
			$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'] = date('d/m/Y',strtotime($job_service_date['service_end_date']));	
					$jobEachArr['service_end_time'] = date("g:i a", strtotime($job_service_date['service_end_time']));
					$jobEachArr['car_no'] = $car['car_no'];					
					$jobEachArr['service_count'] = sizeof($services);
					
					$jobEachArr['paid_or_unpaid'] = $job['paid_or_unpaid'];
					$jobEachArr['car_id']=$job['car_id']; 
					$jobEachArr['invoice_id']=''; 
					$jobEachArr['invoice_link']=''; 
					$jobEachArr['pdf_link']=''; 
					if($job['paid_or_unpaid'] == 1){
						
						$invoice_details = $this->mcommon->getRow('invoices',array('job_id'=>$assignjob['job_id']));
						if(!empty($invoice_details)){
							
							$jobEachArr['invoice_id']=$invoice_details['id']; 
							$jobEachArr['invoice_link']=base_url().'api/generate_pdf_html/'.$invoice_details['id']; 
							$jobEachArr['pdf_link']=base_url().'invoice/'.$invoice_details['invoice_file']; 
						}
					}
					//$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'] = date('d/m/Y',strtotime($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['paid_or_unpaid'] = $jobDetails['paid_or_unpaid'];
			
			
			$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['smtp_host']     = 'smtp.hostinger.com'; //'ssl://smtp.gmail.com';
		$config['smtp_port']     = '587';  
		$config['smtp_user']     = 'info@pmw24.com.au'; //'joysz2018@gmail'
		$config['smtp_pass']     = 'Kzlsdsxnsoevymxi@1';//'poker#2018';
		$config['charset']    	= 'utf-8';
		$config['newline']    	= "\r\n";
		$config['mailtype'] 	= 'html';
		$config['validation'] 	= TRUE;		

        $this->load->library('email');
        $this->email->initialize($config);
        $this->email->set_crlf( "\r\n" );

        $this->email->from('info@pmw24.com.au', 'Punjab Motor Work Shop');
        
        $this->email->to($data['to']); 
        //$this->email->bcc('ishani.banerjee@met-technologies.com', 'Dev');
       
        $this->email->subject($data['subject']);
        $this->email->message($data['message']);  
        if(isset($data['file_name']))
        {
         $attched_file= "invoice/".$data['file_name'];
		 $this->email->attach($attched_file);
		}
        $this->email->send();
         /* if($this->email->send())
         {
			//echo 'success'; die;
			return true; 
         }
         else
        {
           
        echo '<pre>';
        echo $this->email->print_debugger(); die;
        return false; 
        }*/
        
		return true;   	
	}
	
	
	// private function sendMail($data)
	// {

	// 	$config['protocol']    = 'smtp';
	// 	$config['smtp_host']    = 'ssl://mail.met-technologies.com';
	// 	$config['smtp_port']    = '465';
	// 	$config['smtp_user']    = 'developer.net@met-technologies.com';
	// 	$config['smtp_pass']    = 'Dot123@#$%';
	// 	$config['charset']    = 'utf-8';
	// 	$config['newline']    = "\r\n";
	// 	$config['mailtype'] = 'html'; // or html
	// 	$config['validation'] = TRUE;

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

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

	// 	$this->email->subject($data['subject']);
	// 	$this->email->message($data['message']);
	// 	if(isset($data['file_name']))
    //     {
    //      $attched_file= "invoice/".$data['file_name'];
	// 	 $this->email->attach($attched_file);
	// 	}
	// 	if($this->email->send())
    //     {
    //       return true; 
    //     }
    //      else
    //     {
    //        return false; 
	// 		//   echo '<pre>';
	// 		//   echo $this->email->print_debugger(); die;
    //     }
	// }
    
    	private function sendMail2($data){
			
			$config['protocol']      = 'smtp';
			$config['smtp_host']     = 'ssl://smtp.gmail.com'; //'ssl://smtp.gmail.com';
			$config['smtp_port']     = '465';  
			$config['smtp_user']     = 'info@pmw24.com.au'; //'joysz2018@gmail'
			$config['smtp_pass']     = 'kzlsdsxnsoevymxi';//'poker#2018';
			$config['charset']    	= 'utf-8';
			$config['newline']    	= "\r\n";
			$config['mailtype'] 	= 'html';
			$config['validation'] 	= TRUE;     

			$this->load->library('email');
			$this->email->initialize($config);
			$this->email->set_crlf( "\r\n" );

        $this->email->from('info@pmw24.com.au', 'Punjab Motor Work Shop');
        $this->email->to($data['to']); 
        $this->email->subject($data['subject']);
        $this->email->message($data['message']);  
        if(isset($data['file_name']))
        {
         $attched_file= "invoice/".$data['file_name'];
		 $this->email->attach($attched_file);
		}
        
          if($this->email->send()) 
         {
		  echo 'Email send.';
		  die;
         }
         else
        {
          echo '<pre>';
		  echo $this->email->print_debugger();
		  die;
        }
        
        die;
		//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);
	}
	public function remote_emailcheck(){
	    header("Access-Control-Allow-Origin: *");
	    $email = $_POST['email'];
	    $condition=array('email'=>$email);
	    $user_detail = $this->mapi->getRow('admins',$condition);
	    //print_r($user_detail);die;
	    if(!empty($user_detail)){
	        echo 1;
	    }
	    else{
	        echo 0;
	    }
	    
	}

	////////////////////////////////////////////New API List 05/06/2019 /////////////////////////
	
	public function CompletedJobList()
	{
		$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 Id 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']);	
					foreach($services as $key=>$service)
					{
						$new_service[$key] = $service['service_name'];
					}
					
					$service = implode(',',$new_service);	

					$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);
					
				 if(!empty($job))
				 {
					$jobEachArr['job_id'] = $assignjob['job_id'];
					$jobEachArr['job_name'] = $service;
					$jobEachArr['car_no'] = $car['car_no'];
					$jobEachArr['name'] = $car['name'];
					$jobEachArr['email'] = $car['email'];
					$jobEachArr['contact_no'] = $car['contact_no'];
					//$jobEachArr['service_end_date'] = date('d/m/Y',strtotime($job_service_date['service_end_date']));	
					//$jobEachArr['service_end_time'] = date("g:i a", strtotime($job_service_date['service_end_time']));
										
					//$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);
	}
	
	public function GenerateInvoice()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){			
			if(empty($ap['car_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }

            if(empty($ap['mechanic_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Mechanic Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            if(empty($ap['item_list'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Item list is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            if(empty($ap['speedo_meter'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Speedo meter is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            if(empty($ap['due_date'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Due date is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			if(!empty($ap['paid_or_unpaid'])){
				
			

			$job_id='';
			if($ap['paid_or_unpaid'] == 1){
				
				if(empty($ap['job_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Job ID is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
				$job_id = $ap['job_id'];
				$condition = array("job_id"=>$ap['job_id']);
				$job_data['job_status'] = 2;
				$this->mapi->update('job',$condition,$job_data);		
			
				$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);
			
				$car_id = $ap['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);

				///////delete from user roaster/////////////////////////////////////////////////
				$job_assign_condition = array("job_id"=>$ap['job_id']);			
				$job_assign_data = $this->mapi->getRow('assign_job',$job_assign_condition);
				$roaster_condition['mechanic_id'] = $job_assign_data['mechanic_id'];	
				$roaster_condition['available_date'] = date('Y-m-d');	
				$this->mapi->delete('user_roaster',$roaster_condition);

			}
			
		}
			
			
			
			$data=array();

			$car_condition = array("car_id"=>$ap['car_id']);
			$car = $this->mapi->getRow('car',$car_condition);

			if(empty($car['customer_id'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Customer not tagged with car'),'result'=>$this->obj);
				$this->displayOutput($response);
			}
			$customer_condition = array('customer_id'=>$car['customer_id']);
			$customer_data = $this->mapi->getRow('customer',$customer_condition);

			////////////////////////insert to invoice table////////////////////////////////////
			$inv_condition = array();
			$inv_last = $this->mapi->getRowLastInv('invoices',$inv_condition,'id');	
			$last_inv_id=$inv_last['id']+1;	
			$invoice_no='70000'.$last_inv_id;
			
			$data['job_id'] = $job_id;
			$data['invoice_no'] = $invoice_no;
			//$data['job_id'] = $ap['job_id'];
			$data['car_id'] = $ap['car_id'];
			$data['date_of_creation	'] = date('Y-m-d H:i:s');
			$data['customer_email'] = $customer_data['email'];	
			$full_name = ($customer_data['customer_type']=='B')?$customer_data['business_name']:$customer_data['first_name'].' '.(!empty($customer_data['middle_name'])?$customer_data['middle_name'].' ':'').$customer_data['last_name'];
			$data['customer_name'] = $full_name;		
			$data['mechanic_id'] = $ap['mechanic_id'];	
			$data['car_no'] = $car['car_no'];
			$data['notes'] = $ap['notes'];	
			$data['speedo_meter'] = $ap['speedo_meter'];
			$data['due_date'] = $ap['due_date'];			
			$last_insert_id=$this->mapi->insert('invoices',$data);	

			////////////////////////insert to invoice details table////////////////////////////////////
			$item_list=$ap['item_list'];
			$total_price=0;
			foreach($item_list as $item)
			{
				$data_item=array();
				$data_item['invoice_id']=$last_insert_id;
				$data_item['invoice_no']=$invoice_no; 
				$data_item['item']=$item['item_name'];
				$data_item['quantity']=$item['item_qty'];
				$data_item['unit_price']=$item['unit_price'];
				$data_item['total_price']=$item['total_price'];
				$this->mapi->insert('invoice_details',$data_item);	
				$total_price=$total_price+floatval($item['total_price']);
			}

				$condition_inv['id']=$last_insert_id;
			    $data_inv['total_amount']=$total_price;
				$this->mapi->update('invoices',$condition_inv,$data_inv);	
			    
                $invoice_file=$this->generate_pdf($last_insert_id);
			    $responseArr=array();
			    $responseArr['invoice_id']=strval($last_insert_id); 
			    $responseArr['invoice_link']=base_url().'api/generate_pdf_html/'.$last_insert_id; 
			    $responseArr['pdf_link']=base_url().'invoice/'.$invoice_file; 
			$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>$responseArr);
			
			
		}else{
      		$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	}
      	$this->displayOutput($response);
	}


		public function generate_pdf($id){
            //echo 1;die; 
			$invoice_details = $this->minvoice->get_details($id);
			//$job_id=$invoice_details['job_id'];
			
			// $new_service = array();
			// $services = $this->minvoice->getServices($job_id);
			// foreach($services as $key=>$service)
			// {
			// 	$new_service[$key] = $service['service_name'];
			// }
			
			// $service = implode(',',$new_service);	
			//echo $service; die;

			/////invoice item listing/////////////////////////////////
			$condition_item['invoice_id']=$id;
			$item_list=$this->minvoice->getRows('invoice_details',$condition_item);

			//$data['service']=$service;

			$data['invoice_details']=$invoice_details;	
			$data['item_list']=$item_list;	

			$car_condition = array("car_id"=>$invoice_details['car_id']);
			$car = $this->mapi->getRow('car',$car_condition);
			$data['car']=$car;

			

			/////////////////////////for template///////////////////////////////////
			$condition_template['id']=1;
			$invoice_template_details = $this->mcommon->getRow('invoice_template',$condition_template);
			//echo base_url();die;  
			$data['invoice_details']=$invoice_details;	
			//$data['logo']='/PunjabMotorWorkshop/php/app/public/admin_assets/images/logo.jpg';
			$data['logo']='/PunjabMotorWorkshop/php/app/public/admin_assets/images/logo_pdf.png';
			
			$data['invoice_template_details']=$invoice_template_details;	
			//$options = new Dompdf\Options();
			//$options->set('isRemoteEnabled', true);
			$invoice_pay_log_list=$this->minvoice->get_total_payment_by_invoice_no($invoice_details['invoice_no']);
			$due_amount=0;
			//print_r($invoice_pay_log_list);die;
			if(!empty($invoice_pay_log_list)){
				if($invoice_details['total_amount'] > $invoice_pay_log_list['sum_amount']){
				  $due_amount=number_format(((float)$invoice_details['total_amount'] - (float)$invoice_pay_log_list['sum_amount']), 2, '.', '');
			    }else{
			      $due_amount=0;	
			    }
			}
			$data['total_payment']=number_format(($invoice_pay_log_list['sum_amount']!=0 ? $invoice_pay_log_list['sum_amount'] : 0),2, '.', '');
			$data['due_amount']=$due_amount; 
			$dompdf = new Dompdf\Dompdf(); 
			//$dompdf->setBasePath(base_url());         
			//$webRoot = '/php/app/';
			//$dompdf->setBasePath($webRoot);  
			$dompdf->set_option('enable_html5_parser', TRUE);	
			$html = $this->load->view('admin/invoice/invoice_template',$data,true);	
			//echo $html;die;    

			$dompdf->loadHtml($html);
			$dompdf->setPaper('A4', 'portrait');
			$dompdf->render();
			$pdf = $dompdf->output(); 
			//$filename='INV-'.time();
			$filename='INV-'.$invoice_details['invoice_no'];
			$file=$filename.'.pdf';
			//$file='test.pdf';
			@file_put_contents('./invoice/'.$file, $pdf);	
			//echo $filename;
			$condition_inv['id']=$id;
			$data_inv['invoice_file']=$file;
			$this->mcommon->update('invoices',$condition_inv,$data_inv);
			//echo $filename;	die;	
			return  $file; 
	}

		public function generate_pdf_test($id)
	{

			$invoice_details = $this->minvoice->get_details($id);
			//$job_id=$invoice_details['job_id'];
			
			// $new_service = array();
			// $services = $this->minvoice->getServices($job_id);
			// foreach($services as $key=>$service)
			// {
			// 	$new_service[$key] = $service['service_name'];
			// }
			
			// $service = implode(',',$new_service);	
			//echo $service; die;

			/////invoice item listing/////////////////////////////////
			$condition_item['invoice_id']=$id;
			$item_list=$this->minvoice->getRows('invoice_details',$condition_item);

			//$data['service']=$service;

			$data['invoice_details']=$invoice_details;	
			$data['item_list']=$item_list;	

			$car_condition = array("car_id"=>$invoice_details['car_id']);
			$car = $this->mapi->getRow('car',$car_condition);
			$data['car']=$car;

			/////////////////////////for template///////////////////////////////////
			$condition_template['id']=1;
			$invoice_template_details = $this->mcommon->getRow('invoice_template',$condition_template);

			$data['invoice_details']=$invoice_details;	

			$data['invoice_template_details']=$invoice_template_details;	

			$dompdf = new Dompdf\Dompdf();
			$webRoot = '/php/app/';
			$dompdf->setBasePath($webRoot);	
			$html = $this->load->view('admin/invoice/invoice_template_test',$data,true);	
			//echo $html;
			$dompdf->loadHtml($html);
			$dompdf->setPaper('A4', 'portrait');
			$dompdf->render();
			$pdf = $dompdf->output(); 
			$filename='INV-'.time();
			$file=$filename.'.pdf';
			//$file='test.pdf';
			@file_put_contents('./invoice/'.$file, $pdf);	
			
			$condition_inv['id']=$id;
			$data_inv['invoice_file']=$file;
			$this->mcommon->update('invoices',$condition_inv,$data_inv);
			
	}


	public function GeneratedInvoiceList()
	{
		$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 Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("mechanic_id"=>$ap['mechanic_id'],'delete_flag'=>0);
			$invoiceList = $this->mapi->getRows('invoices',$condition,'id');			
			
			$jobList = [];
			//$key=0;
			
			 if(!empty($invoiceList))
			 {
				foreach($invoiceList as $key=>$invoice)
				{
					$jobEachArr=array();
					$detail_condition = array("invoice_id"=>$invoice['id']);
					$inv_details = $this->mapi->getDetails('invoice_details',$detail_condition);
					
					// $services = $this->mapi->getServices($invoice['job_id']);	
					// foreach($services as $key=>$service)
					// {
					// 	$new_service[$key] = $service['service_name'];
					// }
					
					// $service = implode(',',$new_service);	

					$car_condition = array("car_id"=>$invoice['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);
					
					 if(!empty($invoice))
					 {
					 	$items=array();
					 	$itemList=array();
						$jobEachArr['invoice_id'] = $invoice['id'];
						//$jobEachArr['job_id'] = $invoice['job_id'];
						//$jobEachArr['job_name'] = $service;
						$jobEachArr['car_id'] = $invoice['car_id'];
						$jobEachArr['car_no'] = $invoice['car_no'];
						$jobEachArr['name'] = $car['name'];
						$jobEachArr['email'] = $car['email'];
						$jobEachArr['contact_no'] = $car['contact_no'];
						$jobEachArr['notes'] = $invoice['notes'];
						$jobEachArr['invoice_date'] = $invoice['date_of_creation'];
						if($invoice['is_paid']==0){
							$jobEachArr['is_paid'] = 'Unpaid';
						}else if($invoice['is_paid']==1){
							$jobEachArr['is_paid'] = 'Paid';
						}else if($invoice['is_paid']==2){
							$jobEachArr['is_paid'] = 'Partially Paid';
						}
						// if(!empty($invoice['invoice_file']))
						// {
						// $jobEachArr['invoice_link'] = base_url().'invoice/'.$invoice['invoice_file'];
						// }
						// else
						// {
						// $jobEachArr['invoice_link'] = "";	
						// }
						$jobEachArr['invoice_link'] = base_url().'api/generate_pdf_html/'.$invoice['id'];
						$jobEachArr['pdf_link'] = base_url().'invoice/'.$invoice['invoice_file'];  
						////////////////////details///////////////////////////
						foreach($inv_details as $details)
						{
							$items['item_name'] = $details['item'];
							$items['item_qty'] = $details['quantity'];
							$items['unit_price'] = $details['unit_price'];
							$items['total_price'] = $details['total_price'];
							$itemList[]=$items;
						}
						$jobEachArr['item_list'] = $itemList;
						/////////////////////////////////////////////////////
						$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'=>'No Invoice'),'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 GetInvoiceDetails()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){			
			if(empty($ap['invoice_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Invoice Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("id"=>$ap['invoice_id']);
			$invoice = $this->mapi->getRow('invoices',$condition);			
			 if(!empty($invoice))
			 {
				
					$jobEachArr=array();
					$detail_condition = array("invoice_id"=>$invoice['id']);
					$inv_details = $this->mapi->getDetails('invoice_details',$detail_condition);
					
					$car_condition = array("car_id"=>$invoice['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);
					
					 	$items=array();
						$jobEachArr['invoice_id'] = $invoice['id'];
						//$jobEachArr['job_id'] = $invoice['job_id'];
						//$jobEachArr['job_name'] = $service;
						$jobEachArr['car_id'] = $invoice['car_id'];
						$jobEachArr['car_no'] = $invoice['car_no'];
						$jobEachArr['name'] = $car['name'];
						$jobEachArr['email'] = $car['email'];
						$jobEachArr['contact_no'] = $car['contact_no'];
						$jobEachArr['notes'] = $invoice['notes'];
						$jobEachArr['invoice_date'] = $invoice['date_of_creation'];
						if(!empty($invoice['invoice_file']))
						{
						$jobEachArr['invoice_link'] = base_url().'invoice/'.$invoice['invoice_file'];
						}
						else
						{
						$jobEachArr['invoice_link'] = "";	
						}
						
						// ////////////////////details///////////////////////////
						// foreach($inv_details as $details)
						// {
						// 	$items['item_name'] = $details['item'];
						// 	$items['item_qty'] = $details['quantity'];
						// 	$items['unit_price'] = $details['unit_price'];
						// 	$items['total_price'] = $details['total_price'];
						// }
						// $jobEachArr['item_list'] = $items;
						/////////////////////////////////////////////////////
					
					$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$jobEachArr));
				}
				else{
					$response=array('status'=>array('error_code'=>0,'message'=>'No Invoice'),'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 SendInvoiceEmail()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){			
			if(empty($ap['invoice_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Invoice Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }

            if(empty($ap['car_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("id"=>$ap['invoice_id']);
			$invoice = $this->mapi->getRow('invoices',$condition);			
			 if(!empty($invoice))
			 {
									
					$car_condition = array("car_id"=>$invoice['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);
					
		/////////////////////////////////////////////////////Send Mail ///////////////////////////////
				
					$customer_data = $this->mapi->getRow('customer',array('customer_id'=>$car['customer_id']));
					$customer_name = ($customer_data['customer_type']=='B')?$customer_data['business_name']:$customer_data['first_name'].' '.(!empty($customer_data['middle_name'])?$customer_data['middle_name'].' ':'').$customer_data['last_name'];
					$customer_email = !empty($customer_data) ? $customer_data['email'] : $car['email'];

					//$email='fitser.usa@gmail.com';
				    $message = "Please find the attachment for your invoice";
				    $site_url = base_url();
				    $mail_temp = file_get_contents('./global/mail/invoice_template.html');
				    $mail_temp=str_replace("{web_url}",$site_url,$mail_temp);
				    $mail_temp=str_replace("{logo}",$this->logo,$mail_temp);
				    //$mail_temp=str_replace("{link}",$link,$mail_temp);
				    $mail_temp=str_replace("{message}",$message,$mail_temp);
				    $mail_temp=str_replace("{name}",$customer_name,$mail_temp);
				    $mail_temp=str_replace("{current_year}",date('Y'),$mail_temp);
			
					$data['to']=$customer_email;
					$data['name']='Punjub Motor Works';
					$data['subject']="Invoice";
					$data['message']= $mail_temp;
					$data['from']='info@pmw24.com.au';	
					if(!empty($invoice['invoice_file']))
					{
					$data['file_name']=$invoice['invoice_file'];	
					}
					if($this->sendMail($data)) {
					$response='Invoice sent to your mail successfully.';
					}else {
					$response='Unable to send email';
					}
					
					$response=array('status'=>array('error_code'=>0,'message'=>$response));
				}
				else{
					$response=array('status'=>array('error_code'=>0,'message'=>'No Invoice'),'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 SendInvoiceEmailTest()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){			
			if(empty($ap['invoice_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Invoice Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }

            if(empty($ap['car_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("id"=>$ap['invoice_id']);
			$invoice = $this->mapi->getRow('invoices',$condition);			
			 if(!empty($invoice))
			 {
									
					$car_condition = array("car_id"=>$invoice['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);
					
		/////////////////////////////////////////////////////Send Mail ///////////////////////////////
					$email='arindam.biswas@met-technologies.com';
					$name=$car['name'];
					//$email=$car['email'];
				    $message = "Please find the attachment for your invoice";
				    $site_url = base_url();
				    $mail_temp = file_get_contents('./global/mail/invoice_template.html');
				    $mail_temp=str_replace("{web_url}",$site_url,$mail_temp);
				    $mail_temp=str_replace("{logo}",$this->logo,$mail_temp);
				    //$mail_temp=str_replace("{link}",$link,$mail_temp);
				    $mail_temp=str_replace("{message}",$message,$mail_temp);
				    $mail_temp=str_replace("{name}",$name,$mail_temp);
				    $mail_temp=str_replace("{current_year}",date('Y'),$mail_temp);
			       //echo $mail_temp; die;
					$data['to']=$email;
					$data['name']='Punjub Motor Works';
					$data['subject']="Invoice";
					$data['message']= $mail_temp;
					$data['from']='info@pmw24.com.au';	
					if(!empty($invoice['invoice_file']))
					{
					$data['file_name']=$invoice['invoice_file'];	
					}
					if($this->sendMail2($data)) {
					$response='Test Invoice sent to your mail successfully.';
					}else {
					$response='Unable to send email';
					}
					
					$response=array('status'=>array('error_code'=>0,'message'=>$response));
				}
				else{
					$response=array('status'=>array('error_code'=>0,'message'=>'No Invoice'),'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);
	}


	///////////////////////////////////////HTML link////////////////////////////////////////////
		public function generate_pdf_html($id)
	{

			$invoice_details = $this->minvoice->get_details($id);
			/////invoice item listing/////////////////////////////////
			$condition_item['invoice_id']=$id;
			$item_list=$this->minvoice->getRows('invoice_details',$condition_item);

			//$data['service']=$service;

			$data['invoice_details']=$invoice_details;	
			$data['item_list']=$item_list;	

			$car_condition = array("car_id"=>$invoice_details['car_id']);
			$car = $this->mapi->getRow('car',$car_condition);
			
			$customer_data =  $this->mapi->getRow('customer',array("customer_id"=>$car['customer_id']));
			if(!empty($customer_data)){
				$car['email']=$customer_data['email'];
				$car['unit_no']=$customer_data['flat_no'];
				$car['street_no']=$customer_data['street_no'];
				$car['street']=$customer_data['street_name'];
				$car['suburb']=$customer_data['suburb'];
				$car['post_code']=$customer_data['pin'];
			}
			$data['car']=$car;
			/////////////////////////for template///////////////////////////////////
			$condition_template['id']=1;
			$invoice_template_details = $this->mcommon->getRow('invoice_template',$condition_template);

			$data['invoice_details']=$invoice_details;
			$due_amout=0;
			$total_payment=0;
			$invoice_pay_log_list=$this->minvoice->get_total_payment_by_invoice_no($invoice_details['invoice_no']);	
			if(!empty($invoice_pay_log_list)){
				$due_amount=number_format(((float)$invoice_details['total_amount'] - (float)$invoice_pay_log_list['sum_amount']), 2, '.', '');
				$total_payment=number_format((float)$invoice_pay_log_list['sum_amount'], 2, '.', '');
			}
			
			$data['due_amout']=$due_amount;
			$data['total_payment']=$total_payment;
			$data['invoice_template_details']=$invoice_template_details;	

			$html = $this->load->view('admin/invoice/invoice_template_html',$data,true);	
			echo $html;die;
	}
	
	//////////////////////////////////////23.01.2019//////////////////////////////////////////////////////////////////////////////
	
	//////////////filter invoice by car no/////////////////////////////////////////////////////////////////////////////
		public function GeneratedInvoiceListFilterbyCar()
	{
		$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 Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
            
			if(empty($ap['car_no'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Car No is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$car_id='';
			$condition_car=array();
			$condition_car['car_no']=$ap['car_no'];
			$carDetails=$this->mapi->getRow('car',$condition_car);
			
			if(empty($carDetails))
			{
			   $response=array('status'=>array('error_code'=>1,'message'=>'Invalid Car'),'result'=>$this->obj);
               $this->displayOutput($response);
			}
			else
			{
			    $car_id=$carDetails['car_id'];
			}
		    
		    if(empty($car_id))
			{
			  $response=array('status'=>array('error_code'=>1,'message'=>'Invalid Car'),'result'=>$this->obj);
              $this->displayOutput($response);
			}
			
			$condition = array(); 
			$condition['mechanic_id'] = $ap['mechanic_id'];
			$condition['car_id'] = $car_id;
			$condition['delete_flag'] = 0;
			
			$invoiceList = $this->mapi->getRows('invoices',$condition,'id');			
			
			$jobList = [];
			//$key=0;
			
			 if(!empty($invoiceList))
			 {
				foreach($invoiceList as $key=>$invoice)
				{
					$jobEachArr=array();
					$detail_condition = array("invoice_id"=>$invoice['id']);
					$inv_details = $this->mapi->getDetails('invoice_details',$detail_condition);
					
					// $services = $this->mapi->getServices($invoice['job_id']);	
					// foreach($services as $key=>$service)
					// {
					// 	$new_service[$key] = $service['service_name'];
					// }
					
					// $service = implode(',',$new_service);	

					$car_condition = array("car_id"=>$invoice['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);
					
					 if(!empty($invoice))
					 {
					 	$items=array();
					 	$itemList=array();
						$jobEachArr['invoice_id'] = $invoice['id'];
						//$jobEachArr['job_id'] = $invoice['job_id'];
						//$jobEachArr['job_name'] = $service;
						$jobEachArr['car_id'] = $invoice['car_id'];
						$jobEachArr['car_no'] = $invoice['car_no'];
						$jobEachArr['name'] = $car['name'];
						$jobEachArr['email'] = $car['email'];
						$jobEachArr['contact_no'] = $car['contact_no'];
						$jobEachArr['notes'] = $invoice['notes'];
						$jobEachArr['invoice_date'] = $invoice['date_of_creation'];
						if($invoice['is_paid']==0){
							$jobEachArr['is_paid'] = 'Unpaid';
						}else if($invoice['is_paid']==1){
							$jobEachArr['is_paid'] = 'Paid';
						}else if($invoice['is_paid']==2){
							$jobEachArr['is_paid'] = 'Partially Paid';
						}
						// if(!empty($invoice['invoice_file']))
						// {
						// $jobEachArr['invoice_link'] = base_url().'invoice/'.$invoice['invoice_file'];
						// }
						// else
						// {
						// $jobEachArr['invoice_link'] = "";	
						// }
						$jobEachArr['invoice_link'] = base_url().'api/generate_pdf_html/'.$invoice['id'];
						$jobEachArr['pdf_link'] = base_url().'invoice/'.$invoice['invoice_file'];  
						////////////////////details///////////////////////////
						foreach($inv_details as $details)
						{
							$items['item_name'] = $details['item'];
							$items['item_qty'] = $details['quantity'];
							$items['unit_price'] = $details['unit_price'];
							$items['total_price'] = $details['total_price'];
							$itemList[]=$items;
						}
						$jobEachArr['item_list'] = $itemList;
						/////////////////////////////////////////////////////
						$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'=>'No Invoice'),'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);
	}
	
	
	//////////////get pending invoice by car no/////////////////////////////////////////////////////////////////////////////
		public function PendingInvoiceListbyCar()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
		   
			if(empty($ap['car_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition =array();
			$condition['car_id'] = $ap['car_id'];
			$condition['is_paid!='] = 1;
			$condition['delete_flag'] = 0;
			
			$invoiceList = $this->mapi->getRows('invoices',$condition,'id');			
			
			$jobList = [];
			//$key=0;
			
			 if(!empty($invoiceList))
			 {
				foreach($invoiceList as $key=>$invoice)
				{
					$jobEachArr=array();
					$detail_condition = array("invoice_id"=>$invoice['id']);
					$inv_details = $this->mapi->getDetails('invoice_details',$detail_condition);
					
					// $services = $this->mapi->getServices($invoice['job_id']);	
					// foreach($services as $key=>$service)
					// {
					// 	$new_service[$key] = $service['service_name'];
					// }
					
					// $service = implode(',',$new_service);	

					$car_condition = array("car_id"=>$invoice['car_id']);
					$car = $this->mapi->getRow('car',$car_condition);
					
					 if(!empty($invoice))
					 {
					 	$items=array();
					 	$itemList=array();
						$jobEachArr['invoice_id'] = $invoice['id'];
						//$jobEachArr['job_id'] = $invoice['job_id'];
						//$jobEachArr['job_name'] = $service;
						$jobEachArr['car_id'] = $invoice['car_id'];
						$jobEachArr['car_no'] = $invoice['car_no'];
						$jobEachArr['name'] = $car['name'];
						$jobEachArr['email'] = $car['email'];
						$jobEachArr['contact_no'] = $car['contact_no'];
						$jobEachArr['notes'] = $invoice['notes'];
						$jobEachArr['invoice_date'] = $invoice['date_of_creation'];
						if($invoice['is_paid']==0){
							$jobEachArr['is_paid'] = 'Unpaid';
						}else if($invoice['is_paid']==1){
							$jobEachArr['is_paid'] = 'Paid';
						}else if($invoice['is_paid']==2){
							$jobEachArr['is_paid'] = 'Partially Paid';
						}
						// if(!empty($invoice['invoice_file']))
						// {
						// $jobEachArr['invoice_link'] = base_url().'invoice/'.$invoice['invoice_file'];
						// }
						// else
						// {
						// $jobEachArr['invoice_link'] = "";	
						// }
						$jobEachArr['invoice_link'] = base_url().'api/generate_pdf_html/'.$invoice['id'];
						$jobEachArr['pdf_link'] = base_url().'invoice/'.$invoice['invoice_file'];  
						////////////////////details///////////////////////////
						foreach($inv_details as $details)
						{
							$items['item_name'] = $details['item'];
							$items['item_qty'] = $details['quantity'];
							$items['unit_price'] = $details['unit_price'];
							$items['total_price'] = $details['total_price'];
							$itemList[]=$items;
						}
						$jobEachArr['item_list'] = $itemList;
						/////////////////////////////////////////////////////
						$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'=>'No Invoice'),'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);
	}
	//-------------------------------------------------------------------NEW API'S FOR ADDITONAL WORK-----------------------------------------------------//

	public function car_list()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		//if(sizeof($ap)){
			
			$car_condition = array("status"=>1,"car_assign_status"=>0);			
			$car_list = $this->mapi->getDetails('car',$car_condition);
			
			if(!empty($car_list)){			
				$response=array('status'=>array('error_code'=>0,'message'=>'Car List Fetched Successfully'),'result'=>array('car_list'=>$car_list));
				
				
			}else{
				$response=array('status'=>array('error_code'=>1,'message'=>'No Car Found'),'result'=>array('car_list'=>$this->obj));
			}
			
			
		// }else{
      	// 	$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	// }
      	$this->displayOutput($response);
	}


	public function service_list()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		//if(sizeof($ap)){
			
			$service_condition = array("status"=>1);
			$service_list = $this->mapi->getDetails('service',$service_condition);	
			
			if(!empty($service_list)){			
				$response=array('status'=>array('error_code'=>0,'message'=>'Service List Fetched Successfully'),'result'=>array('service_list'=>$service_list));
				
				
			}else{
				$response=array('status'=>array('error_code'=>1,'message'=>'No Service Found'),'result'=>array('service_list'=>$this->obj));
			}
			
			
		// }else{
      	// 	$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
      	// }
      	$this->displayOutput($response);
	}
	
	public function create_job()
	{	
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){	
			
			if(empty($ap['car_id'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
				$this->displayOutput($response);
			}

			if(empty($ap['mechanic_id'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Mechanic is required'),'result'=>$this->obj);
				$this->displayOutput($response);
			}

			if(empty($ap['service_date'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Service Date is required'),'result'=>$this->obj);
				$this->displayOutput($response);
			}

			if(empty($ap['service'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Selected Service is required'),'result'=>$this->obj);
				$this->displayOutput($response);
			}

			if(empty($ap['paid_or_unpaid'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Paid or Unpaid Flag is required'),'result'=>$this->obj);
				$this->displayOutput($response);
			}
			
			
				
			
			
				$job_data['car_id'] = $ap['car_id'];				
				$job_data['job_status'] = 0;
				$job_data['created_by'] = $ap['mechanic_id'];
				$job_data['date_of_creation']=date('Y-m-d H:i:s');
				$job_data['paid_or_unpaid']=$ap['paid_or_unpaid'];
					
				
				$job_id = $this->mapi->insert('job',$job_data);
				
				if($job_id){
				
					$s_date = $ap['service_date'];
					$s_date_array = explode('/',$s_date);
					$service_date = $s_date_array[2]."-".$s_date_array[1]."-".$s_date_array[0];

					$service_data = array();
					foreach($ap['service'] as $key=>$service)
					{
						$service_data[$key]['service_id'] = $service;
						$service_data[$key]['job_id'] = $job_id;
						
						if($service==7||$service==8||$service==20){
					

							/////////////////////////////////For specific job noti///////////////////////////////
							$service_noti_condition = array("service_id"=>$service);
							$service_noti_arr = $this->mapi->getRow("service",$service_noti_condition);	
							$next_days_noti=$service_noti_arr['notification_days'];
							$next_days_noti_before_seven=$next_days_noti-7;
							$next_days_noti_before_three=$next_days_noti-3;

							$job_service_data_specific['service_date'] = $service_date;
							//$service_date = $this->input->post('service_date');
							$next_date_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti.' days'));	
							$next_date_remider_before_seven_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_seven.' days'));
							$next_service_date_before_three_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_three.' days'));
							$job_service_data_specific['next_service_date'] = $next_date_specific;
							$job_service_data_specific['next_service_date_reminder_before_seven'] = $next_date_remider_before_seven_specific;
							$job_service_data_specific['next_service_date_before_three'] = $next_service_date_before_three_specific;
							$job_service_data_specific['job_id'] = $job_id;
							$job_service_data_specific['car_id'] = $ap['car_id'];
							$job_service_data_specific['service_id'] = $service;
							
							$this->mapi->insert('job_service_date_specific',$job_service_data_specific);
							//echo $this->db->last_query(); die;
							}
					}
					
					$this->mapi->batch_insert('job_services',$service_data);
					$next_days_noti=60;
					if(in_array("7",$ap['service']))
					{
						$service_noti_condition = array("service_id"=>7);
						$service_noti_arr = $this->mapi->getRow("service",$service_noti_condition);	
						$next_days_noti=$service_noti_arr['notification_days'];
						
					}
					$next_days_noti_before_seven=$next_days_noti-7;
					$next_days_noti_before_three=$next_days_noti-3;
					
					$job_service_data['service_date'] = $service_date;
					$next_date = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti.' days'));	
					$next_date_remider_before_seven = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_seven.' days'));
					$next_service_date_before_three = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_three.' days'));
					$job_service_data['next_service_date'] = $next_date;
					$job_service_data['next_service_date_reminder_before_seven'] = $next_date_remider_before_seven;
					$job_service_data['next_service_date_before_three'] = $next_service_date_before_three;
					$job_service_data['job_id'] = $job_id;
					$job_service_data['car_id'] = $ap['car_id'];
					
					$this->mapi->insert('job_service_date',$job_service_data);
				
				
					$data['job_id'] = $job_id;
					$data['mechanic_id'] = $ap['mechanic_id'];
					$data['assign_status'] = "2";
					$data['remarks'] = "";
					$this->mapi->insert('assign_job',$data);
					
					
					
					$car_condition = array("car_id"=>$ap['car_id']);
					///////update car assign//////////////////////////////////////////////
					$car_update_data['car_assign_status']=1;
					$this->mcommon->update("car",$car_condition,$car_update_data);
					
					///////insert roster//////////////////////////////////////////////
					$roaster_data=array();
					$roaster_data['mechanic_id']=$ap['mechanic_id'];
					$roaster_data['available_date']=$service_date;
					$roaster_data['date_of_creation']=date('Y-m-d');
					$this->mcommon->insert("user_roaster",$roaster_data);


					////////for notification//////////////////////////////////////
					$data_notification['description'] = 'Job created & accepted by mechanic';
					$data_notification['type'] = 1;	
					$data_notification['details_id'] = $job_id;					
					$this->mapi->insert('notification',$data_notification);	
					
					
					
					
					$car_user = $this->mapi->getRow('car',$car_condition);
					$customer_data = $this->mapi->getRow('customer',array('customer_id'=>$car_user['customer_id']));
					$customer_name = ($customer_data['customer_type']=='B')?$customer_data['business_name']:$customer_data['first_name'].' '.(!empty($customer_data['middle_name'])?$customer_data['middle_name'].' ':'').$customer_data['last_name'];
					$customer_email = !empty($customer_data) ? $customer_data['email'] : $car_user['email'];

					$customer_notification['description'] = 'Your Car - '.$car_user['car_no'].' is accepted by mechanic for servicing. Service Date : '.$ap['service_date'];
					
					$mail_temp = file_get_contents('./global/mail/job_create_app.html');
					$mail_temp = str_replace("{shop_name}","Punjab Motor Workshop",$mail_temp);
					$mail_temp = str_replace("{shop_logo}",LOGOURL,$mail_temp);
					$mail_temp = str_replace("{name}",$customer_name,$mail_temp);
					
					$mail_temp = str_replace("{Description}",$customer_notification['description'],$mail_temp);
					$regmail['name']='Punjab Motor';
					$regmail['to']=$customer_email;
					$regmail['subject']='Job created & accepted by mechanic';
					$regmail['message']=$mail_temp;
					//echo $mail_temp;exit;
					$regmail['from']='info@pmw24.com.au';				
           			$this->sendMail($regmail);
					
					$response=array('status'=>array('error_code'=>0,'message'=>'Job Created Successfully'),'result'=>$this->obj);
				}else{
					$response=array('status'=>array('error_code'=>1,'message'=>'Oops!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);
	}


	//job List
	public function reqested_job_list_customer()
	{
		$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'],"status"=>0);
			$assignjobList = $this->mapi->getDetails('booking_request',$condition);
			
			$jobList = array();
			
			if(!empty($assignjobList))
			{
				foreach($assignjobList as $key=>$assignjob)
				{
						$services = $this->mapi->getRequestedServices($assignjob['booking_request_id']);		
						$car_condition = array("car_id"=>$assignjob['car_id']);
						$car = $this->mapi->getRow('car',$car_condition);
						
						$assigned_by_condition = array("customer_id"=>$assignjob['created_by']);
						$assigned_by = $this->mapi->getRow('customer',$assigned_by_condition);
						
						//$service = explode(',',$job['service']);
						$jobList[$key]['booking_request_id'] = $assignjob['booking_request_id'];
						$jobList[$key]['service_date'] = date('d/m/Y',strtotime($assignjob['service_date']));
						$jobList[$key]['company_name'] = $car['company_name'];
						$jobList[$key]['car_no'] = $car['car_no'];
						$jobList[$key]['assigned_by'] = $assigned_by['first_name'].' '.$assigned_by['last_name'];
						$jobList[$key]['service_count'] = sizeof($services);
						$jobList[$key]['paid_or_unpaid'] = 1;
					//}					
				}
			}			
			
			
			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 reqested_job_details_customer()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			if(empty($ap['booking_request_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Booking Request Id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
            }
			
			$condition = array("booking_request_id"=>$ap['booking_request_id']);
			$jobDetails = $this->mapi->getRow('booking_request',$condition);
			
			if(!empty($jobDetails))
			{	
				$services = $this->mapi->getRequestedServices($ap['booking_request_id']);	

				$carCondition = array("car_id"=>$jobDetails['car_id']);
				$other_details = $this->mapi->getRow('car',$carCondition);
				
				$assigned_by_condition = array("customer_id"=>$jobDetails['created_by']);
				$assigned_by = $this->mapi->getRow('customer',$assigned_by_condition);
				
				$jobDetails['service'] = $services;
				$jobDetails['service_date'] = date('d/m/Y',strtotime($jobDetails['service_date']));
				$jobDetails['assigned_by'] = $assigned_by['first_name'].' '.$assigned_by['last_name'];
				$jobDetails['car'] = $other_details['car_no'];				
				$jobDetails['other_details'] = $other_details;
				$jobDetails['paid_or_unpaid'] = 1;
			}
			
			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);
	}


	//Job Details
	public function accept_or_reject_customer_requested_job()
	{
		$ap=json_decode(file_get_contents('php://input'), true);
		
		if(sizeof($ap)){
			
			if(empty($ap['booking_request_id'])){
              $response=array('status'=>array('error_code'=>1,'message'=>'Booking Request Id field is required'),'result'=>$this->obj);
              $this->displayOutput($response);
			}

			if(empty($ap['accept_or_reject'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Accept / Reject status field is required'),'result'=>$this->obj);
				$this->displayOutput($response);
			}
			

			if($ap['accept_or_reject'] == 1){
				
				if(empty($ap['car_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
	
				if(empty($ap['mechanic_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Mechanic is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
	
				if(empty($ap['service_date'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Service Date is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
	
				if(empty($ap['service'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Selected Service is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
				
				// if(empty($ap['additional_note'])){
				// 	$response=array('status'=>array('error_code'=>1,'message'=>'Additional Note is required'),'result'=>$this->obj);
				// 	$this->displayOutput($response);
				// }

				// if(empty($ap['paid_or_unpaid'])){
				// 	$response=array('status'=>array('error_code'=>1,'message'=>'Paid or unpaid status is required'),'result'=>$this->obj);
				// 	$this->displayOutput($response);
				// }
					
				
				
					$job_data['car_id'] = $ap['car_id'];				
					$job_data['job_status'] = 0;
					$job_data['created_by'] = 0;
					$job_data['booking_request_id'] = $ap['booking_request_id'];
					$job_data['additional_note'] = $ap['additional_note'];
					$job_data['date_of_creation']=date('Y-m-d H:i:s');	
					$job_data['paid_or_unpaid']=1;
					
					$job_id = $this->mapi->insert('job',$job_data);
					
					if($job_id){
					
						$s_date = $ap['service_date'];
						$s_date_array = explode('/',$s_date);
						$service_date = $s_date_array[2]."-".$s_date_array[1]."-".$s_date_array[0];
	
						$service_data = array();
						foreach($ap['service'] as $key=>$service)
						{
							$service_data[$key]['service_id'] = $service;
							$service_data[$key]['job_id'] = $job_id;
							
							if($service==7||$service==8||$service==20){
						
	
								/////////////////////////////////For specific job noti///////////////////////////////
								$service_noti_condition = array("service_id"=>$service);
								$service_noti_arr = $this->mapi->getRow("service",$service_noti_condition);	
								$next_days_noti=$service_noti_arr['notification_days'];
								$next_days_noti_before_seven=$next_days_noti-7;
								$next_days_noti_before_three=$next_days_noti-3;
	
								$job_service_data_specific['service_date'] = $service_date;
								//$service_date = $this->input->post('service_date');
								$next_date_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti.' days'));	
								$next_date_remider_before_seven_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_seven.' days'));
								$next_service_date_before_three_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_three.' days'));
								$job_service_data_specific['next_service_date'] = $next_date_specific;
								$job_service_data_specific['next_service_date_reminder_before_seven'] = $next_date_remider_before_seven_specific;
								$job_service_data_specific['next_service_date_before_three'] = $next_service_date_before_three_specific;
								$job_service_data_specific['job_id'] = $job_id;
								$job_service_data_specific['car_id'] = $ap['car_id'];
								$job_service_data_specific['service_id'] = $service;
								
								$this->mapi->insert('job_service_date_specific',$job_service_data_specific);
								//echo $this->db->last_query(); die;
								}
						}
						
						$this->mapi->batch_insert('job_services',$service_data);
						$next_days_noti=60;
						if(in_array("7",$ap['service']))
						{
							$service_noti_condition = array("service_id"=>7);
							$service_noti_arr = $this->mapi->getRow("service",$service_noti_condition);	
							$next_days_noti=$service_noti_arr['notification_days'];
							
						}
						$next_days_noti_before_seven=$next_days_noti-7;
						$next_days_noti_before_three=$next_days_noti-3;
						
						$job_service_data['service_date'] = $service_date;
						$next_date = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti.' days'));	
						$next_date_remider_before_seven = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_seven.' days'));
						$next_service_date_before_three = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_three.' days'));
						$job_service_data['next_service_date'] = $next_date;
						$job_service_data['next_service_date_reminder_before_seven'] = $next_date_remider_before_seven;
						$job_service_data['next_service_date_before_three'] = $next_service_date_before_three;
						$job_service_data['job_id'] = $job_id;
						$job_service_data['car_id'] = $ap['car_id'];
						
						$this->mapi->insert('job_service_date',$job_service_data);
					
					
						$data['job_id'] = $job_id;
						$data['mechanic_id'] = $ap['mechanic_id'];
						$data['assign_status'] = "1";
						$data['remarks'] = "";
						$this->mapi->insert('assign_job',$data);
						
						
						
						$car_condition = array("car_id"=>$ap['car_id']);
						///////update car assign//////////////////////////////////////////////
						$car_update_data['car_assign_status']=1;
						$this->mcommon->update("car",$car_condition,$car_update_data);
						
						///////insert roster//////////////////////////////////////////////
						$roaster_data=array();
						$roaster_data['mechanic_id']=$ap['mechanic_id'];
						$roaster_data['available_date']=$service_date;
						$roaster_data['date_of_creation']=date('Y-m-d');
						$this->mcommon->insert("user_roaster",$roaster_data);
	
	
						////////for notification//////////////////////////////////////
						$data_notification['description'] = 'Job created & accepted by mechanic';
						$data_notification['type'] = 1;	
						$data_notification['details_id'] = $job_id;					
						$this->mapi->insert('notification',$data_notification);	


							
						
						
						
						// Update Booking Request
						$this->mapi->update('booking_request',array('booking_request_id' =>$ap['booking_request_id']),array('status' => 1));
						
						
						$car_user = $this->mapi->getRow('car',$car_condition);
						$customer_data = $this->mapi->getRow('customer',array('customer_id'=>$car_user['customer_id']));
						$customer_name = ($customer_data['customer_type']=='B')?$customer_data['business_name']:$customer_data['first_name'].' '.(!empty($customer_data['middle_name'])?$customer_data['middle_name'].' ':'').$customer_data['last_name'];
						$customer_email = !empty($customer_data) ? $customer_data['email'] : $car_user['email'];
						
			
						//Customer Notification
						$customer_notification['customer_id'] = $car_user['customer_id'];
						$customer_notification['title'] = 'Job created & accepted by mechanic';	
						$customer_notification['description'] = 'Your Car - '.$car_user['car_no'].' is accepted by mechanic for servicing. Service Date : '.$ap['service_date'];					
						$customer_notification['is_read'] = 0;					
						$customer_notification['ref_id'] = $job_id;					
						$customer_notification['notification_type'] = 1;					
						$customer_notification['notification_link'] = 'customer/car/car_history';					
						$customer_notification['created_ts'] = date('Y-m-d H:i:s');					
						$this->mapi->insert('customer_notification',$customer_notification);
						
						
						//Customer Mail
						$mail_temp = file_get_contents('./global/mail/job_create_app.html');
						$mail_temp = str_replace("{shop_name}","Punjab Motor Workshop",$mail_temp);
						$mail_temp = str_replace("{shop_logo}",LOGOURL,$mail_temp);
						$mail_temp = str_replace("{name}",$customer_name,$mail_temp);
						
						$mail_temp = str_replace("{Description}",$customer_notification['description'],$mail_temp);

						$mail_temp = str_replace("{additional_note}",!empty($ap['additional_note'])?$ap['additional_note']:'N/A',$mail_temp);
						
						$regmail['name']='Punjab Motor';
						$regmail['to']=$customer_email;
						$regmail['subject']='Booking Request Accept';
						$regmail['message']=$mail_temp;
						//echo $mail_temp;exit;
						$regmail['from']='info@pmw24.com.au';				
						$this->sendMail($regmail); 
						
						$response=array('status'=>array('error_code'=>0,'message'=>'Job Accepted Successfully'),'result'=>$this->obj);
					}else{
						$response=array('status'=>array('error_code'=>1,'message'=>'Oops!something went wrong...'),'result'=>$this->obj);
					}	
			
			} else {
				
				if(empty($ap['car_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
	
				if(empty($ap['mechanic_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Mechanic is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
				
				if(empty($ap['cancel_remarks'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Remarks field is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
				
				if(empty($ap['service_date'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Service Date is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
				
				$condition = array('booking_request_id' =>$ap['booking_request_id']);
				$job_data = array(
					'cancel_remarks'  => $ap['cancel_remarks'],
					'status' => 2
				);
				$this->mapi->update('booking_request',$condition,$job_data);
				
				        $car_user = $this->mapi->getRow('car',array('car_id'=>$ap['car_id']));
						$customer_data = $this->mapi->getRow('customer',array('customer_id'=>$car_user['customer_id']));
						$customer_name = ($customer_data['customer_type']=='B')?$customer_data['business_name']:$customer_data['first_name'].' '.(!empty($customer_data['middle_name'])?$customer_data['middle_name'].' ':'').$customer_data['last_name'];
						$customer_email = !empty($customer_data) ? $customer_data['email'] : $car_user['email'];
				        
				        //Customer Mail
						$mail_temp = file_get_contents('./global/mail/job_reject.html');
						$mail_temp = str_replace("{shop_name}","Punjab Motor Workshop",$mail_temp);
						$mail_temp = str_replace("{shop_logo}",LOGOURL,$mail_temp);
						$mail_temp = str_replace("{name}",$customer_name,$mail_temp);
						$mail_temp = str_replace("{carnumber}",$car_user['car_no'],$mail_temp);
						$mail_temp = str_replace("{bookingdate}",$ap['service_date'],$mail_temp);
						$mail_temp = str_replace("{cancel_remarks}",$ap['cancel_remarks'],$mail_temp);
						
						$regmail['name']='Punjab Motor';
						$regmail['to']=$customer_email;
						$regmail['subject']='Booking Request Rejected';
						$regmail['message']=$mail_temp;
						//echo $mail_temp;exit;
						$regmail['from']='info@pmw24.com.au';				
						$this->sendMail($regmail);
				
				$response=array('status'=>array('error_code'=>0,'message'=>'Job Rejected 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 List
	public function accepted_job_list_customer()
	{
		$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,'job_status'=>0,"booking_request_id !="=>0);
			$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("customer_id"=>$car['customer_id']);
						$assigned_by = $this->mapi->getRow('customer',$assigned_by_condition);
						
						//$service = explode(',',$job['service']);
						$jobList[$key]['job_id'] = $assignjob['job_id'];
						$jobList[$key]['service_date'] = date('d/m/Y',strtotime($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['first_name'].' '.$assigned_by['last_name'];
						$jobList[$key]['service_count'] = sizeof($services);
						$jobList[$key]['paid_or_unpaid'] = $assignjob['paid_or_unpaid'];
						
					//}					
				}
			}			
			
			
			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 accepted_job_details_customer()
	{
		$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($ap['job_id']);	

				$carCondition = array("car_id"=>$jobDetails['car_id']);
				$other_details = $this->mapi->getRow('car',$carCondition);
				
				$assigned_by_condition = array("customer_id"=>$other_details['customer_id']);
				$assigned_by = $this->mapi->getRow('customer',$assigned_by_condition);

				$service_date_condition = array("job_id"=>$ap['job_id']);
				$job_service_date = $this->mapi->getRow("job_service_date",$service_date_condition);
				
				$jobDetails['service'] = $services;
				$jobDetails['service_date'] = date('d/m/Y',strtotime($job_service_date['service_date']));
				$jobDetails['assigned_by'] = $assigned_by['first_name'].' '.$assigned_by['last_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);
	}

	//Job Details
	public function start_or_cancel_customer_requested_job()
	{
		$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);
			}

			if(empty($ap['accept_or_reject'])){
				$response=array('status'=>array('error_code'=>1,'message'=>'Accept / Reject status field is required'),'result'=>$this->obj);
				$this->displayOutput($response);
			}
			$job_id = $ap['job_id'];

			if($ap['accept_or_reject'] == 1){
				
				if(empty($ap['car_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
	
				if(empty($ap['mechanic_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Mechanic is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
	
				if(empty($ap['service_date'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Service Date is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}


				if(empty($ap['service'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Service  is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
	
				
					$job_data['job_status'] = 1;
					$this->mapi->update('job',array('job_id'=>$ap['job_id']),$job_data);
					
					if($job_id){
					
						$s_date = $ap['service_date'];
						$s_date_array = explode('/',$s_date);
						$service_date = $s_date_array[2]."-".$s_date_array[1]."-".$s_date_array[0];
	
						$service_data = array();
						foreach($ap['service'] as $key=>$service)
						{
							
							
							if($service==7||$service==8||$service==20){
						
	
								/////////////////////////////////For specific job noti///////////////////////////////
								$service_noti_condition = array("service_id"=>$service);
								$service_noti_arr = $this->mapi->getRow("service",$service_noti_condition);	
								$next_days_noti=$service_noti_arr['notification_days'];
								$next_days_noti_before_seven=$next_days_noti-7;
								$next_days_noti_before_three=$next_days_noti-3;
	
								$job_service_data_specific['service_date'] = $service_date;
								//$service_date = $this->input->post('service_date');
								$next_date_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti.' days'));	
								$next_date_remider_before_seven_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_seven.' days'));
								$next_service_date_before_three_specific = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_three.' days'));
								$job_service_data_specific['next_service_date'] = $next_date_specific;
								$job_service_data_specific['next_service_date_reminder_before_seven'] = $next_date_remider_before_seven_specific;
								$job_service_data_specific['next_service_date_before_three'] = $next_service_date_before_three_specific;
								$this->mapi->update('job_service_date_specific',array('job_id'=>$job_id,'service_id'=>$service),$job_service_data_specific);
								//echo $this->db->last_query(); die;
								}
						}
						
						
						$next_days_noti=60;
						if(in_array("7",$ap['service']))
						{
							$service_noti_condition = array("service_id"=>7);
							$service_noti_arr = $this->mapi->getRow("service",$service_noti_condition);	
							$next_days_noti=$service_noti_arr['notification_days'];
							
						}
						$next_days_noti_before_seven=$next_days_noti-7;
						$next_days_noti_before_three=$next_days_noti-3;
						
						$job_service_data['service_date'] = $service_date;
						$next_date = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti.' days'));	
						$next_date_remider_before_seven = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_seven.' days'));
						$next_service_date_before_three = date('Y-m-d', strtotime($service_date. ' + '.$next_days_noti_before_three.' days'));
						$job_service_data['next_service_date'] = $next_date;
						$job_service_data['next_service_date_reminder_before_seven'] = $next_date_remider_before_seven;
						$job_service_data['next_service_date_before_three'] = $next_service_date_before_three;
						
						
						$this->mapi->update('job_service_date',array('job_id'=>$job_id),$job_service_data);
					
					
						$car_condition = array("car_id"=>$ap['car_id']);
						///////update car assign//////////////////////////////////////////////
						$car_update_data['car_assign_status']=1;
						$this->mcommon->update("car",$car_condition,$car_update_data);
						
						///////insert roster//////////////////////////////////////////////
						$roaster_data=array();
						$roaster_data['mechanic_id']=$ap['mechanic_id'];
						$roaster_data['available_date']=$service_date;
						$roaster_data['date_of_creation']=date('Y-m-d');
						$this->mcommon->insert("user_roaster",$roaster_data);
	
	
						////////for notification//////////////////////////////////////
						$data_notification['description'] = 'Job started by mechanic';
						$data_notification['type'] = 1;	
						$data_notification['details_id'] = $job_id;					
						$this->mapi->insert('notification',$data_notification);	
						
						
						
						
						$car_user = $this->mapi->getRow('car',$car_condition);
						$customer_data = $this->mapi->getRow('customer',array('customer_id'=>$car_user['customer_id']));
						$customer_name = ($customer_data['customer_type']=='B')?$customer_data['business_name']:$customer_data['first_name'].' '.(!empty($customer_data['middle_name'])?$customer_data['middle_name'].' ':'').$customer_data['last_name'];
						$customer_email = !empty($customer_data) ? $customer_data['email'] : $car_user['email'];
						
						
						//Customer Notification
						$customer_notification['customer_id'] = $car_user['customer_id'];
						$customer_notification['title'] = 'Job Started by mechanic';	
						$customer_notification['description'] = 'Your Car - '.$car_user['car_no'].' servicing started by mechanic .Service Date : '.$ap['service_date'];					
						$customer_notification['is_read'] = 0;					
						$customer_notification['ref_id'] = $job_id;					
						$customer_notification['notification_type'] = 1;					
						$customer_notification['notification_link'] = 'customer/car/car_history';					
						$customer_notification['created_ts'] = date('Y-m-d H:i:s');					
						$this->mapi->insert('customer_notification',$customer_notification);
						
						
						//Customer Mail
						$mail_temp = file_get_contents('./global/mail/job_create_app.html');
						$mail_temp = str_replace("{shop_name}","Punjab Motor Workshop",$mail_temp);
						$mail_temp = str_replace("{shop_logo}",LOGOURL,$mail_temp);
						$mail_temp = str_replace("{name}",$customer_name,$mail_temp);
						$mail_temp = str_replace("{Description}",$customer_notification['description'],$mail_temp);
						$mail_temp = str_replace("{additional_note}",!empty($ap['additional_note'])?$ap['additional_note']:'N/A',$mail_temp);
						$regmail['name']='Punjab Motor';
						$regmail['to']=$customer_email;
						$regmail['subject']='Job Started By Mechanic';
						$regmail['message']=$mail_temp;
						//echo $mail_temp;exit;
						$regmail['from']='info@pmw24.com.au';				
						   $this->sendMail($regmail);
						
						$response=array('status'=>array('error_code'=>0,'message'=>'Job Started Successfully'),'result'=>$this->obj);
					}else{
						$response=array('status'=>array('error_code'=>1,'message'=>'Oops!something went wrong...'),'result'=>$this->obj);
					}	
			
			} else {
				
				
					if(empty($ap['car_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Car Id is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
	
				if(empty($ap['mechanic_id'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Mechanic is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
				
				if(empty($ap['cancel_remarks'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Remarks field is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
				
				if(empty($ap['service_date'])){
					$response=array('status'=>array('error_code'=>1,'message'=>'Service Date is required'),'result'=>$this->obj);
					$this->displayOutput($response);
				}
				
				
				
				       
				$data['assign_status'] = "0";
				$data['remarks'] = $ap['cancel_remarks'];
				$this->mapi->update('assign_job',array('job_id'=>$job_id),$data);
				
				 $car_user = $this->mapi->getRow('car',array('car_id'=>$ap['car_id']));
						$customer_data = $this->mapi->getRow('customer',array('customer_id'=>$car_user['customer_id']));
						$customer_name = ($customer_data['customer_type']=='B')?$customer_data['business_name']:$customer_data['first_name'].' '.(!empty($customer_data['middle_name'])?$customer_data['middle_name'].' ':'').$customer_data['last_name'];
						$customer_email = !empty($customer_data) ? $customer_data['email'] : $car_user['email'];
						
						//Customer Mail
						$mail_temp = file_get_contents('./global/mail/job_reject.html');
						$mail_temp = str_replace("{shop_name}","Punjab Motor Workshop",$mail_temp);
						$mail_temp = str_replace("{shop_logo}",LOGOURL,$mail_temp);
						$mail_temp = str_replace("{name}",$customer_name,$mail_temp);
						$mail_temp = str_replace("{carnumber}",$car_user['car_no'],$mail_temp);
						$mail_temp = str_replace("{bookingdate}",$ap['service_date'],$mail_temp);
						$mail_temp = str_replace("{cancel_remarks}",$ap['cancel_remarks'],$mail_temp);
						
						$regmail['name']='Punjab Motor';
						$regmail['to']=$customer_email;
						$regmail['subject']='Job Cancelled';
						$regmail['message']=$mail_temp;
						//echo $mail_temp;exit;
						$regmail['from']='info@pmw24.com.au';				
						$this->sendMail($regmail);
				
				
				
				$response=array('status'=>array('error_code'=>0,'message'=>'Job Cancelled 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);
	}
	
}