File: //var/www/html/pmw24/app/application/controllers/Api1.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']='punjabmotorworkshop@gmail.com';
if($this->sendMail($data)){
$response=array('status'=>array('error_code'=>0,'message'=>'Your login credential has been sent to your email'),'result'=>array('details'=>$this->obj));
}else{
$response=array('status'=>array('error_code'=>0,'message'=>'Due to server error mail could not be sent'),'result'=>array('details'=>$this->obj));
}
}
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>array('details'=>$this->obj));
}
$this->displayOutput($response);
}
//Question List
public function questionList()
{
$condition = array();
$questionList = $this->mapi->getRows('question',$condition);
if(!empty($questionList)){
$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$questionList));
}else{
$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
}
$this->displayOutput($response);
}
//Car List
public function carList()
{
$condition = array();
//$carList = $this->mapi->getRows('car',$condition,'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@punjabmotorworkshop.com';
$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){
//print_r($data);die;
/*$config['protocol'] = 'smtp';
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://mail.fitser.com'; //'ssl://smtp.gmail.com';
$config['smtp_port'] = '465';
$config['smtp_user'] = 'test123@fitser.com'; //'joysz2018@gmail'
$config['smtp_pass'] = 'Test123@#$%';//'poker#2018';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['mailtype'] = 'html';
$config['validation'] = TRUE;*/
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'mail.pmw24.com.au';
$config['smtp_port'] = '587';
$config['smtp_user'] = 'info@pmw24.com.au';
$config['smtp_pass'] = 'Info123@';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['mailtype'] = 'html'; // or html
$config['validation'] = TRUE; // bool whether to validate email or not
$this->email->initialize($config);
$this->email->set_crlf( "\r\n" );
$this->email->from('info@punjabmotorworkshop.com', 'Punjab Motor Work Shop');
$this->email->to($data['to']);
//$this->email->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['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://mail.fitser.com'; //'ssl://smtp.gmail.com';
$config['smtp_port'] = '465';
$config['smtp_user'] = 'test123@fitser.com'; //'joysz2018@gmail'
$config['smtp_pass'] = 'Test123@#$%';//'poker#2018';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['mailtype'] = 'html';
$config['validation'] = TRUE;
$this->email->initialize($config);
$this->email->set_crlf( "\r\n" );
$this->email->from('info@punjabmotorworkshop.com', 'Punjab Motor Work Shop');
//$this->email->to($data['to']);
$this->email->to('arindam.biswas@met-technologies.com');
$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@punjabmotorworkshop.com';
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@punjabmotorworkshop.com';
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@punjabmotorworkshop.com';
$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@punjabmotorworkshop.com';
$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@punjabmotorworkshop.com';
$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@punjabmotorworkshop.com';
$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@punjabmotorworkshop.com';
$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);
}
}