File: /var/www/html/pmw24/pmw_live_testing/app/application/controllers/Api_BKP_21_01_2019.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Api extends CI_Controller {
var $arr;
var $obj;
var $logo='';
function __construct(){
parent::__construct();
$this->load->model('mapi');
$this->load->model('admin/minvoice');
$this->arr=array();
$this->obj=new stdClass();
$this->logo=base_url().'/public/admin_assets/images/Logo.png';
}
private function displayOutput($response){
header('Content-Type: application/json');
echo json_encode($response);
exit(0);
}
//Login
public function login()
{
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['email'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Email field is required'),'result'=>array('userdetails'=>$this->obj));
$this->displayOutput($response);
}
if(empty($ap['password'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Password field is required'),'result'=>array('userdetails'=>$this->obj));
$this->displayOutput($response);
}
$ap['password']=sha1($ap['password']);
if(!empty($ap['device_token']) && !empty($ap['device_type']))
{
$device_token=$ap['device_token'];
$device_type=$ap['device_type'];
}
unset($ap['device_token']);
unset($ap['device_type']);
$userdetails=$this->mapi->checkUser($ap);
//print_r($userdetails);exit;
if(empty($userdetails)){
$response=array('status'=>array('error_code'=>1,'message'=>'Invalid Email or password'),'result'=>array('userdetails'=>$this->obj));
}else{
if($userdetails['status'] == 0)
{
$response=array('status'=>array('error_code'=>1,'message'=>'Your account is still pending.please contact admin for approval'),'result'=>array('userdetails'=>$this->obj));
}else{
$condition=array('email'=>$ap['email']);
$data=array('date_of_lastlogin'=>date('Y-m-d H:i:s'),'loggedin_status'=>1);
$this->mapi->update('admins',$condition,$data);
$user_detail = $this->mapi->getRow('admins',$condition);
$userdetails['date_of_lastlogin'] = $user_detail['date_of_lastlogin'];
$userdetails['loggedin_status'] = $user_detail['loggedin_status'];
if(!empty($device_token) && !empty($device_type))
{
$device_condition=array('device_type'=>$device_type,'user_id'=>$userdetails['admin_id']);
$checkDeviceExist=$this->mapi->getRow('devices',$device_condition);
if(empty($checkDeviceExist)){
$dv['device_type']= $device_type;
$dv['device_token']=$device_token;
$dv['user_id']=$userdetails['user_id'];
$dv['date_of_creation']=date('Y-m-d h:i:s');
$this->mapi->insert('devices',$dv);
}else{
$dv['device_token']=$device_token;
$dv['date_of_creation']=date('Y-m-d h:i:s');
$this->mapi->update('devices',$device_condition,$dv);
}
}
$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('userdetails'=>$userdetails));
}
}
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>array('userdetails'=>$this->obj));
}
$this->displayOutput($response);
}
//Profile Detail
public function profileDetail()
{
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['user_id'])){
$response=array('status'=>array('error_code'=>1,'message'=>'User Id field is required'),'result'=>array('userdetails'=>$this->obj));
$this->displayOutput($response);
}
$condition=array('admin_id'=>$ap['user_id']);
$userDetail=$this->mapi->getRow('admins',$condition);
if($userDetail['dob']=='--')
{
$userDetail['dob']='';
}
//print_r($userDetail); die;
if(!empty($userDetail))
{
$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('userdetails'=>$userDetail));
}else{
$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('userdetails'=>$this->obj));
}
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>array('userdetails'=>$this->obj));
}
$this->displayOutput($response);
}
//Update Profile
public function profileUpdate()
{
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['admin_id'])){
$response=array('status'=>array('error_code'=>1,'message'=>'User id field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(empty($ap['first_name'])){
$response=array('status'=>array('error_code'=>1,'message'=>'First name is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(empty($ap['phoneno'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Phone No is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(empty($ap['post_code'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Post code is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
// if(empty($ap['last_name'])){
// $response=array('status'=>array('error_code'=>1,'message'=>'Last name field is required'),'result'=>$this->obj);
// $this->displayOutput($response);
// }
// if(empty($ap['employee_id'])){
// $response=array('status'=>array('error_code'=>1,'message'=>'Employee Id field is required'),'result'=>$this->obj);
// $this->displayOutput($response);
// }
// if(empty($ap['dob'])){
// $response=array('status'=>array('error_code'=>1,'message'=>'Date Of Birth field is required'),'result'=>$this->obj);
// $this->displayOutput($response);
// }
// if(empty($ap['emergency_contact'])){
// $response=array('status'=>array('error_code'=>1,'message'=>'Emergency Contact No field is required'),'result'=>$this->obj);
// $this->displayOutput($response);
// }
// if(empty($ap['tfn'])){
// $response=array('status'=>array('error_code'=>1,'message'=>'TFN field is required'),'result'=>$this->obj);
// $this->displayOutput($response);
// }
// if(empty($ap['abn'])){
// $response=array('status'=>array('error_code'=>1,'message'=>'ABN field is required'),'result'=>$this->obj);
// $this->displayOutput($response);
// }
// if(empty($ap['address'])){
// $response=array('status'=>array('error_code'=>1,'message'=>'Address field is required'),'result'=>$this->obj);
// $this->displayOutput($response);
// }
$condition=array('admin_id'=>$ap['admin_id']);
$this->mapi->update('admins',$condition,$ap);
$response=array('status'=>array('error_code'=>0,'message'=>'Profile updated successfully'),'result'=>$this->obj);
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
}
$this->displayOutput($response);
}
//Change Password
public function changePassword(){
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['old_password'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Old password field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(empty($ap['new_password'])){
$response=array('status'=>array('error_code'=>1,'message'=>'New password field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(empty($ap['confirm_password'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Confirm password field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(empty($ap['user_id'])){
$response=array('status'=>array('error_code'=>1,'message'=>'User id field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
$condition=array('admin_id'=>$ap['user_id']);
$userdetails=$this->mapi->getRow('admins',$condition);
if(strtolower($userdetails['org_password'])!=strtolower($ap['old_password'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Old password is wrong'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(strtolower($ap['new_password'])!=strtolower($ap['confirm_password'])){
$response=array('status'=>array('error_code'=>1,'message'=>'New password does not match with confirm password'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(strtolower($ap['new_password'])==strtolower($ap['old_password'])){
$response=array('status'=>array('error_code'=>1,'message'=>'New password same as old password,try something else'),'result'=>$this->obj);
$this->displayOutput($response);
}
$condition=array('admin_id'=>$ap['user_id']);
$data=array('date_of_update'=>date('Y-m-d H:i:s'),'password'=>sha1($ap['new_password']),'org_password'=>$ap['new_password']);
$this->mapi->update('admins',$condition,$data);
$response=array('status'=>array('error_code'=>0,'message'=>'Password changed successfully'),'result'=>$this->obj);
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
}
$this->displayOutput($response);
}
//Forgot Password
public function forgotPassword(){
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['email'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Email field is required'),'result'=>array('details'=>$this->obj));
$this->displayOutput($response);
}
// $password = rand(000,999);
$condition=array('email'=>$ap['email']);
// $data=array('password'=>sha1($password),'org_password'=>$password);
// $this->mapi->update('admins',$condition,$data);
$userDetails=$this->mapi->getRow('admins',$condition);
if(empty($userDetails)){
$response=array('status'=>array('error_code'=>1,'message'=>'This email does not exist'),'result'=>array('details'=>$this->obj));
}else{
$mail_temp = file_get_contents('./global/mail/password.html');
$mail_temp=str_replace("{shop_name}","Punjab Motor Work Shop",$mail_temp);
$mail_temp=str_replace("{shop_logo}",$this->logo,$mail_temp);
$mail_temp=str_replace("{name}",$userDetails['name'],$mail_temp);
$mail_temp=str_replace("{username}",$userDetails['email'],$mail_temp);
$mail_temp=str_replace("{email}",$userDetails['email'],$mail_temp);
$mail_temp=str_replace("{passwd}",$userDetails['org_password'],$mail_temp);
$data['to']=$userDetails['email'];
$data['name']='Punjab Motor Work Shop';
$data['subject']='Punjab Motor Work Shop - new login credential';
$data['message']=$mail_temp;
$data['from']='punjabmotorworkshop@gmail.com';
if($this->sendMail($data)){
$response=array('status'=>array('error_code'=>0,'message'=>'Your login credential has been sent to your email'),'result'=>array('details'=>$this->obj));
}else{
$response=array('status'=>array('error_code'=>0,'message'=>'Due to server error mail could not be sent'),'result'=>array('details'=>$this->obj));
}
}
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>array('details'=>$this->obj));
}
$this->displayOutput($response);
}
//Question List
public function questionList()
{
$condition = array();
$questionList = $this->mapi->getRows('question',$condition);
if(!empty($questionList)){
$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$questionList));
}else{
$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
}
$this->displayOutput($response);
}
//Car List
public function carList()
{
$condition = array();
//$carList = $this->mapi->getRows('car',$condition,'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);
}
//$condition = array("mechanic_id"=>$ap['mechanic_id'],"job_status"=>0);
$condition = array("mechanic_id"=>$ap['mechanic_id'],"assign_status"=>2);
$assignjobList = $this->mapi->assignedJob($condition);
$jobList = array();
if(!empty($assignjobList))
{
foreach($assignjobList as $key=>$assignjob)
{
$job_condition = array("job_id"=>$assignjob['job_id']);
$job = $this->mapi->getRow('job',$job_condition);
//if(!empty($job)){
$services = $this->mapi->getServices($assignjob['job_id']);
$service_date_condition = array("job_id"=>$assignjob['job_id']);
$job_service_date = $this->mapi->getRow("job_service_date",$service_date_condition);
$car_condition = array("car_id"=>$assignjob['car_id']);
$car = $this->mapi->getRow('car',$car_condition);
$assigned_by_condition = array("admin_id"=>$assignjob['created_by']);
$assigned_by = $this->mapi->getRow('admins',$assigned_by_condition);
//$service = explode(',',$job['service']);
$jobList[$key]['job_id'] = $assignjob['job_id'];
$jobList[$key]['service_date'] = 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['name'];
$jobList[$key]['service_count'] = sizeof($services);
//}
}
}
if(!empty($jobList)){
$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$jobList));
}else{
$response=array('status'=>array('error_code'=>0,'message'=>'success'),'result'=>array('list'=>$this->arr));
}
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
}
$this->displayOutput($response);
}
//Job Details
public function jobDetails()
{
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['job_id'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Job Id field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
$condition = array("job_id"=>$ap['job_id']);
$jobDetails = $this->mapi->getRow('job',$condition);
if(!empty($jobDetails))
{
$services = $this->mapi->getServices($jobDetails['job_id']);
$jobDetails['service'] = $services;
$service_date_condition = array("job_id"=>$jobDetails['job_id']);
$job_service_date = $this->mapi->getRow("job_service_date",$service_date_condition);
$jobDetails['service_date'] = $job_service_date['service_date'];
$carCondition = array("car_id"=>$jobDetails['car_id']);
$other_details = $this->mapi->getRow('car',$carCondition);
$assigned_by_condition = array("admin_id"=>$jobDetails['created_by']);
$assigned_by = $this->mapi->getRow('admins',$assigned_by_condition);
$jobDetails['assigned_by'] = $assigned_by['name'];
$jobDetails['car'] = $other_details['car_no'];
$jobDetails['other_details'] = $other_details;
}
if(!empty($jobDetails))
{
$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('jobDetails'=>$jobDetails));
}else{
$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('jobDetails'=>$this->obj));
}
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
}
$this->displayOutput($response);
}
//Accept or deny job By Mechanic
public function acceptOrDenyJob()
{
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['mechanic_id'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(empty($ap['job_id'])){
$response=array('status'=>array('error_code'=>1,'message'=>'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);
}*/
//On Going Job List
public function onGoingJob()
{
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['mechanic_id'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Mechanic field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
$condition = array("mechanic_id"=>$ap['mechanic_id'],"job_status"=>1,"assign_status"=>1);
$ongoingjob = $this->mapi->onGoiningJobList($condition);
//print_r($ongoingjob);exit;
//print_r($ongoingjob);exit;
$full_service_condition =array();
$full_services = $this->mapi->getRows('service',$full_service_condition);
if(!empty($ongoingjob)){
/*foreach($ongoingjobList as $key=>$ongoingjob)
{*/
$services = $this->mapi->getServices($ongoingjob['job_id']);
$new_selected_service = array();
foreach($services as $select_service)
{
$new_selected_service[] = $select_service['service_id'];
}
foreach($full_services as $key1=>$service)
{
$task_condition = array("service_id"=>$service['service_id'],"status"=>1);
if(in_array($service['service_id'],$new_selected_service))
{
$full_services[$key1]['is_active'] = 1;
}else{
$full_services[$key1]['is_active'] = 0;
}
$task = $this->mapi->getRows('task',$task_condition);
$full_services[$key1]['task'] = $task;
}
$ongoingjob['service'] = $full_services;
$image_condition = array("job_id"=>$ongoingjob['job_id']);
$images = $this->mapi->getRows('job_images',$image_condition);
//print_r($images);
$ongoingjob['images'] = $images;
$car_condition = array("car_id"=>$ongoingjob['car_id']);
$car = $this->mapi->getRow('car',$car_condition);
$ongoingjob['car'] = $car['car_no'];
/////////////////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('list'=>$ongoingjob));
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'No Job Available'),'result'=>array('list'=>$this->arr));
}
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
}
$this->displayOutput($response);
}
//Apply Task under service
public function applyTaskUnderService()
{
$ap=json_decode(file_get_contents('php://input'), true);
if(sizeof($ap)){
if(empty($ap['task'])){
$response=array('status'=>array('error_code'=>1,'message'=>'Task Ids field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
if(empty($ap['job_id'])){
$response=array('status'=>array('error_code'=>1,'message'=>'job Id field is required'),'result'=>$this->obj);
$this->displayOutput($response);
}
$tasks = $ap['task'];
$data = array();
$mechanic_job_task_condition = array("job_id"=>$ap['job_id']);
$this->mapi->delete('mechanic_job_task',$mechanic_job_task_condition);
$service_ids = array();
foreach($tasks as $key=>$task)
{
$task_ids = explode(',',$task['task_id']);
foreach($task_ids as $key1=>$task_id)
{
$data['service_id'] = $task['service_id'];
$data['task_id'] = $task_id;
$data['job_id'] = $ap['job_id'];
$this->mapi->insert('mechanic_job_task',$data);
}
$service_ids[$key]['service_id'] = $task['service_id'];
$service_ids[$key]['additional_note'] = $task['additional_note'];
}
$job_services_condition = array("job_id"=>$ap['job_id']);
$this->mapi->delete('job_services',$job_services_condition);
foreach($service_ids as $service_id){
$additional_data['job_id'] = $ap['job_id'];
$additional_data['additional_note'] = $service_id['additional_note'];
$additional_data['service_id'] = $service_id['service_id'];
$this->mapi->insert('job_services',$additional_data);
}
if(!empty($ap['km_reading']))
{
$udata['km_reading'] = $ap['km_reading'];
}else{
$udata['km_reading'] = "";
}
if(!empty($ap['job_additional_note']))
{
$udata['additional_note'] = $ap['job_additional_note'];
}else{
$udata['additional_note'] = "";
}
$udata['job_status'] = 2;
//$this->mapi->batch_insert('mechanic_job_task',$data);
$condition = array("job_id"=>$ap['job_id']);
$this->mapi->update('job',$condition,$udata);
$servic_date_data['service_end_date'] = date('Y-m-d');
$servic_date_data['service_end_time'] = date('H:i:s');
$this->mapi->update('job_service_date',$condition,$servic_date_data);
$job_condition = array("job_id"=>$ap['job_id']);
$job = $this->mapi->getRow('job',$job_condition);
$car_id = $job['car_id'];
$car_data['car_assign_status'] = 0;
//$car_condition = array("car_id",$car_id);
$car_condition['car_id'] = $car_id;
$this->mapi->update('car',$car_condition,$car_data);
///////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);
//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);
//$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['car_no'] = $carDetails['car_no'];
$finalJobHistoryDetails['company_name'] = $carDetails['company_name'];
$jobhistoryDetails = $this->mapi->jobHostoryDetails($ap['job_id']);
$newjobhistoryDetailsarrays = array();
foreach($jobhistoryDetails as $key_d=>$jobhistoryDetail)
{
$newjobhistoryDetailsarrays[] = $jobhistoryDetail['service_id'];
}
$newJobHistoryDetails = array();
//print_r(array_values(array_unique($newjobhistoryDetailsarrays)));exit;
foreach(array_values(array_unique($newjobhistoryDetailsarrays)) as $key=>$newjobhistoryDetailsarray)
{
$newJobHistoryDetails[$key]['service_id'] = $newjobhistoryDetailsarray;
$service_condition = array('service_id'=>$newjobhistoryDetailsarray);
$service = $this->mapi->getRow('service',$service_condition);
$newJobHistoryDetails[$key]['service_name'] = $service['service_name'];
$jobhistoryDetails = $this->mapi->jobHostoryDetailswithServiceId($ap['job_id'],$newjobhistoryDetailsarray);
//$newJobHistoryDetails[$key]['service_name'] = $jobhistoryDetails['service_name'];
foreach( $jobhistoryDetails as $key1=>$jobhistoryDetail)
{
$task_condition = array('task_id'=>$jobhistoryDetail['task_id']);
$task = $this->mapi->getRow('task',$task_condition);
$newJobHistoryDetails[$key]['task'][$key1] = (empty($task) ? new stdClass():$task);
}
$additional_note_condition = array("service_id"=>$newjobhistoryDetailsarray,"job_id"=>$ap['job_id']);
$additional_note = $this->mapi->getRow('job_services',$additional_note_condition);
$newJobHistoryDetails[$key]['additional_note'] = $additional_note['additional_note'];
}
$finalJobHistoryDetails['services'] = $newJobHistoryDetails;
$jobImages = $this->mapi->getRows('job_images',$condition);
$finalJobHistoryDetails['images'] = $jobImages;
if(!empty($finalJobHistoryDetails))
{
$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('jobHistoryDetails'=>$finalJobHistoryDetails));
}else{
$response=array('status'=>array('error_code'=>0,'message'=>'Success'),'result'=>array('jobHistoryDetails'=>$this->obj));
}
}else{
$response=array('status'=>array('error_code'=>1,'message'=>'Please fill up all required fields'),'result'=>$this->obj);
}
$this->displayOutput($response);
}
private function reArrayFiles(&$file_post) {
$file_ary = array();
$file_count = count($file_post['name']);
$file_keys = array_keys($file_post);
for ($i=0; $i<$file_count; $i++) {
foreach ($file_keys as $key) {
$file_ary[$i][$key] = $file_post[$key][$i];
}
}
return $file_ary;
}
private function sendMail($data){
$config['protocol'] = 'smtp';
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://mail.fitser.com';
$config['smtp_port'] = '465';
$config['smtp_user'] = 'test123@fitser.com';
$config['smtp_pass'] = 'Test123@';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['mailtype'] = 'html';
$config['validation'] = TRUE;
$this->email->initialize($config);
$this->email->set_crlf( "\r\n" );
$this->email->from('info@punjabmotorworkshop.com', 'Punjab Motor Work Shop');
$this->email->to($data['to']);
$this->email->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())
{
return true;
}
else
{
return false;
//echo '<pre>';
//echo $this->email->print_debugger();
}
//return true;
}
private function sendMail2($data){
$config['protocol'] = 'smtp';
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://mail.fitser.com';
$config['smtp_port'] = '465';
$config['smtp_user'] = 'test123@fitser.com';
$config['smtp_pass'] = 'Test123@';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['mailtype'] = 'html';
$config['validation'] = TRUE;
$this->email->initialize($config);
$this->email->set_crlf( "\r\n" );
$this->email->from('info@punjabmotorworkshop.com', 'Punjab Motor Work Shop');
//$this->email->to($data['to']);
$this->email->to('ishani.banerjee@met-technologies.com');
$this->email->subject($data['subject']);
$this->email->message($data['message']);
if(isset($data['file_name']))
{
$attched_file= "invoice/".$data['file_name'];
$this->email->attach($attched_file);
}
$this->email->send();
if($this->email->send())
{
echo 'Email send.';
}
else
{
echo '<pre>';
echo $this->email->print_debugger();
}
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);
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);
}
$data=array();
$car_condition = array("car_id"=>$ap['car_id']);
$car = $this->mapi->getRow('car',$car_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['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'] = $car['email'];
$data['customer_name'] = $car['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['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();
$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']);
$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 ///////////////////////////////
$name=$car['name'];
$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}",$name,$mail_temp);
$mail_temp=str_replace("{current_year}",date('Y'),$mail_temp);
$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->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='ishani.banerjee@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);
$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;
}
}