File: //var/www/html/taxicamera/application/controllers/admin/Payin.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Payin extends MY_Controller {
public function __construct() {
parent::__construct();
//$this->redirect_guest();
$this->admin=$this->session->userdata('admin');
$this->load->helper('download');
$this->load->model('admin/mdriver');
$this->load->model('admin/mreport');
$this->load->model('admin/mpayin');
define('UPLOAD_DIR', './public/upload_image/temp_payin_images/');
}
public function index() {
//$this->session->unset_userdata('driver_settlement');
//echo $this->session->userdata('email');die;
$this->_load_list_view_new_driver();
}
private function _load_list_view_new_driver() {
// FUNCTION WRIITTEN IN COMMON HELPER
$data = array();
$data['content'] = 'admin/payin/add_payin';
$data['driver_list'] = $this->mdriver->get_driver_list('1','1');
$data['docket_list'] =$this->mcommon->getDetails('master_docket',array('is_active'=>1));
$data['expense_list'] =$this->mcommon->getDetails('master_expense',array('is_active'=>1));
//pr($data['docket_list']);
$this->load->view('admin/layouts/index', $data);
}
public function search_payin(){
$driver_id = $this->input->post('driver_id');
$shift_from_date = $this->input->post('shift_from_date');
$shift_to_date = $this->input->post('shift_to_date');
$shift_details = array();
$driver_shift_details = $this->mpayin->get_driver_shift_details($driver_id,$shift_from_date,$shift_to_date);
$ongoing_shift_details = $this->mpayin->get_ongoing_shift_details($driver_id,$shift_from_date,$shift_to_date);
if(empty($ongoing_shift_details)){
if (!empty($driver_shift_details)) {
$shift_details['status_code'] = 1;
$shift_details['status'] = 'Shift Available';
$shift_details['shift_id'] = '';
$shift_details['shift_no'] = '';
$shift_details['car_id'] = $driver_shift_details['car_id'];
$shift_details['car_no'] = $driver_shift_details['registration_no'];
$shift_details['roster_driver_id'] = $driver_shift_details['roster_driver_id'];
} else {
$shift_details['status_code'] = 0;
$shift_details['status'] = 'No Shift Available';
$shift_details['shift_id'] = '';
$shift_details['shift_no'] = '';
$shift_details['car_id'] = '';
$shift_details['car_no'] = '';
$shift_details['roster_driver_id'] = '';
}
} else {
$shift_details['status_code'] = 2;
$shift_details['status'] = 'Ongoing Shift';
$shift_details['shift_id'] = $ongoing_shift_details['shift_id'];
$shift_details['shift_no'] = $ongoing_shift_details['shift_no'];
$shift_details['car_id'] = $ongoing_shift_details['car_id'];
$shift_details['car_no'] = $ongoing_shift_details['registration_no'];
$shift_details['roster_driver_id'] = $driver_shift_details['roster_driver_id'];
}
//-----------------------------------------------GET PAYIN ONLOAD VALUE----------------------------------------//
$previous_payin_details=array();
$previous_payin_details['payin_id'] = '';
$previous_payin_details['total_extra_start'] = '0.00';
$previous_payin_details['paid_km_start'] = '0';
$previous_payin_details['total_km_start'] = '0';
$previous_payin_details['no_of_hiring_start'] = '0';
$previous_payin_details['extra_start'] = '0';
$previous_payin_details['speedo_reading_start'] = '0';
if($shift_details['car_id']){
$payin_details = $this->mpayin->get_previous_payin_data($shift_details['car_id']);
if (!empty($payin_details)) {
$previous_payin_details['payin_id'] = $payin_details['payin_id'];
$previous_payin_details['total_extra_start'] = $payin_details['total_extra_end'];
$previous_payin_details['paid_km_start'] = $payin_details['paid_km_end'];
$previous_payin_details['total_km_start'] = $payin_details['total_km_end'];
$previous_payin_details['no_of_hiring_start'] = $payin_details['no_of_hiring_end'];
$previous_payin_details['extra_start'] = $payin_details['extra_end'];
$previous_payin_details['speedo_reading_start'] = $payin_details['speedo_reading_end'];
}
}
$driver_details = $this->mcommon->getRow('user_profile', array('user_id' => $driver_id));
$levy_rate = 0;
if (!empty($ongoing_shift_details['levy_applicable']) && ($ongoing_shift_details['levy_applicable'] == 1)) {
$levy_rate = $this->mcommon->getRow('master_levy', array());
}
$lifting_fees = $this->mcommon->getRow('master_lifting_fee', array());
$payin_onload_value = array();
if (!empty($driver_details['dr_commission_id'])) {
$commission_rate = $this->mcommon->getRow('master_commission', array('commission_id' => $driver_details['dr_commission_id']));
$payin_onload_value['commission_rate_driver'] = $commission_rate['owner_share']; // For Logical changes we swap the values.
$payin_onload_value['commission_rate_owner'] = $commission_rate['driver_share']; // For Logical changes we swap the values.
} else {
$payin_onload_value['commission_rate_driver'] = "0";
$payin_onload_value['commission_rate_owner'] = "0";
}
$bond_data = $this->mcommon->getRow('master_bond', array('bond_settlement_flag' => 0, 'driver_id' => $driver_id));
//$amount_due = $bond_data['bond_amt'] - ($bond_data['initial_amt_paid'] + $bond_data['installment_amt_paid']);
$amount_due = $bond_data['bond_accumulated_amt'];
$bond_value ="0";
if($amount_due > 0){
$bond_value = !empty($bond_data['installment_shift']) ? $bond_data['installment_shift'] : "0";
if($amount_due < $bond_data['installment_shift']){
$bond_value = $amount_due;
}
}
$payin_onload_value['bond_value'] = $bond_value;
$payin_onload_value['levy_rate'] = !empty($levy_rate['levy_rate']) ? $levy_rate['levy_rate'] : '0';
$payin_onload_value['lifting_fees'] = !empty($lifting_fees['gtn_share']) ? $lifting_fees['gtn_share'] : '0';
$payin_onload_value['dr_driver_type'] = $driver_details['dr_driver_type'];
$payin_onload_value['dr_rental'] = $driver_details['dr_rental'];
$return_data=array('status'=>true,'msg'=>'success','shift_details'=>$shift_details,'payin_onload_value'=>$payin_onload_value,'previous_payin_details'=>$previous_payin_details);
echo json_encode($return_data);
}
public function start_shift(){
$roster_driver_id = $this->input->post('roster_driver_id');
$shift_details = $this->mcommon->getDetails('driver_shift_details', array('roster_driver_id' => $roster_driver_id));
if (empty($shift_details)) {
$shift_number = $this->mpayin->get_shift_number($roster_driver_id);
if (empty($shift_number)) {
$return_data=array('status'=>false,'msg'=>'Unable to generate shift number');
} else {
$shift_data = array();
$shift_data['roster_driver_id'] = $roster_driver_id;
$shift_data['shift_no'] = $shift_number['shift_no'];
$shift_data['shift_start_time'] = date('Y-m-d H:i:s');
$shift_data['shift_status'] = 1;
$shift_data['created_ts'] = date('Y-m-d H:i:s');
$shift_id = $this->mcommon->insert('driver_shift_details', $shift_data);
if ($shift_id) {
$return_data=array('status' => true, 'msg' => 'Shift Started Successfully', 'shift_details' => array('shift_id' => $shift_id, 'shift_no' => $shift_number['shift_no']));
} else {
$return_data=array('status'=>false,'msg'=>'Oops!something went wrong...');
}
}
} else {
$return_data=array('status'=>false,'msg'=>'Shift Already Started');
}
echo json_encode($return_data);
}
public function save_payin_docket_image(){
$image_parts = explode(";base64,", $_POST['image']);
$image_type_aux = explode("image/", $image_parts[0]);
$image_type = $image_type_aux[1];
$image_base64 = base64_decode($image_parts[1]);
$file_name='docket_images_'. uniqid() . '.png';
$file = UPLOAD_DIR . $file_name;
if(file_put_contents($file, $image_base64)){
$return_data =array('status'=>true,'image_link'=>$file_name,'image_show_link'=>$file);
} else {
$return_data =array('status'=>false,'image_link'=>'','image_show_link'=>'');
}
echo json_encode($return_data);
}
public function save_payin_expense_image(){
$image_parts = explode(";base64,", $_POST['image']);
$image_type_aux = explode("image/", $image_parts[0]);
$image_type = $image_type_aux[1];
$image_base64 = base64_decode($image_parts[1]);
$file_name='expense_images_'. uniqid() . '.png';
$file = UPLOAD_DIR . $file_name;
if(file_put_contents($file, $image_base64)){
$return_data =array('status'=>true,'image_link'=>$file_name,'image_show_link'=>$file);
} else {
$return_data =array('status'=>false,'image_link'=>'','image_show_link'=>'');
}
echo json_encode($return_data);
}
public function save_lifetime_total_image(){
$image_parts = explode(";base64,", $_POST['image']);
$image_type_aux = explode("image/", $image_parts[0]);
$image_type = $image_type_aux[1];
$image_base64 = base64_decode($image_parts[1]);
$file_name='lifetime_total_images_'. uniqid() . '.png';
$file = UPLOAD_DIR . $file_name;
if(file_put_contents($file, $image_base64)){
$return_data =array('status'=>true,'image_link'=>$file_name,'image_show_link'=>$file);
} else {
$return_data =array('status'=>false,'image_link'=>'','image_show_link'=>'');
}
echo json_encode($return_data);
}
public function shift_total_image(){
$image_parts = explode(";base64,", $_POST['image']);
$image_type_aux = explode("image/", $image_parts[0]);
$image_type = $image_type_aux[1];
$image_base64 = base64_decode($image_parts[1]);
$file_name='shift_total_images_'. uniqid() . '.png';
$file = UPLOAD_DIR . $file_name;
if(file_put_contents($file, $image_base64)){
$return_data =array('status'=>true,'image_link'=>$file_name,'image_show_link'=>$file);
} else {
$return_data =array('status'=>false,'image_link'=>'','image_show_link'=>'');
}
echo json_encode($return_data);
}
public function shift_total_image_file(){
if(isset($_FILES['shift_total_image']['name']) && !empty($_FILES['shift_total_image']['name'])){
$upload_file = $this->single_image_upload(UPLOAD_DIR, $_FILES['shift_total_image'],'shift_total_image');
if($upload_file['status']==1){
$return_data =array('status'=>true,'image_link'=>$upload_file['result'],'image_show_link'=>UPLOAD_DIR.$upload_file['result']);
} else {
$return_data =array('status'=>false,'image_link'=>'','image_show_link'=>'');
}
}
echo json_encode($return_data);
}
public function save_lifetime_total_image_file(){
if(isset($_FILES['life_time_total_image']['name']) && !empty($_FILES['life_time_total_image']['name'])){
$upload_file = $this->single_image_upload(UPLOAD_DIR, $_FILES['life_time_total_image'],'life_time_total_image');
if($upload_file['status']==1){
$return_data =array('status'=>true,'image_link'=>$upload_file['result'],'image_show_link'=>UPLOAD_DIR.$upload_file['result']);
} else {
$return_data =array('status'=>false,'image_link'=>'','image_show_link'=>'');
}
}
echo json_encode($return_data);
}
public function submit_payin_data(){
//echo '<pre>';print_r($this->input->post());
//print_r($_FILES);
//die;
if (!empty($this->input->post())) {
$total_payin_payout=$this->input->post('tot_payin_payout');
$driver_profile_details = $this->mcommon->getRow('user_profile', array('user_id' => $this->input->post('driver_id')));
$payin_details = $this->mcommon->getRow('payin', array('shift_id' => $this->input->post('shift_id')));
if (empty($payin_details)) {
if ($driver_profile_details['dr_rental'] > 0) {
$dr_rental = $driver_profile_details['dr_rental'];
$total_dockets = $this->input->post('docket_total');
$total_levy = $this->input->post('levy');
$bond = $this->input->post('bond_value');
$cond_accident_installment = array('master_accident.driver_id' => $this->input->post('driver_id'));
$accident_data = $this->mpayin->GetAccidentData($cond_accident_installment);
$accident = isset($accident_data['accident_installment']) ? $accident_data['accident_installment'] : 0;
$other = 0;
$amount_paid = 0;
$rental_payout = $dr_rental + $total_levy + $bond + $accident + $other - $total_dockets - $amount_paid;
$rental_payout=number_format(round($rental_payout ,1),2,'.','');
$payin_data['final_due_amt'] = $rental_payout;
$payin_data['rental_commission_flag'] = 'R';
$payin_data['rental_amount'] = $dr_rental;
$payin_data['settlement_amt'] = $rental_payout;
} else {
$payin_data['final_due_amt'] = number_format(round($total_payin_payout ,1),2,'.','');
$payin_data['rental_commission_flag'] = 'C';
$payin_data['settlement_amt'] = number_format(round($total_payin_payout ,1),2,'.','');
}
$payin_data['driver_id'] = $this->input->post('driver_id');
$payin_data['shift_id'] = $this->input->post('shift_id');
$payin_data['total_extra_start'] = $this->input->post('total_extra_start');
$payin_data['total_extra_end'] = $this->input->post('total_extra_end');
$payin_data['paid_km_start'] = $this->input->post('paid_km_start');
$payin_data['paid_km_end'] = $this->input->post('paid_km_end');
$payin_data['total_km_start'] = $this->input->post('total_km_start');
$payin_data['total_km_end'] = $this->input->post('total_km_end');
$payin_data['no_of_hiring_start'] = $this->input->post('no_of_hiring_start');
$payin_data['no_of_hiring_end'] = $this->input->post('no_of_hiring_end');
$payin_data['extra_start'] = $this->input->post('extra_start');
$payin_data['extra_end'] = $this->input->post('extra_end');
$payin_data['speedo_reading_start'] = $this->input->post('speedo_reading_start');
$payin_data['speedo_reading_end'] = $this->input->post('speedo_reading_end');
$payin_data['km_traveled'] = $this->input->post('km_travelled');
$payin_data['metered_fares'] = $this->input->post('metered_fares');
$payin_data['bond_charges'] = $this->input->post('bond_value');
$payin_data['subtotal'] = $this->input->post('subtotal');
$payin_data['levy'] = $this->input->post('levy');
$payin_data['no_of_whl'] = $this->input->post('no_of_whl');
$payin_data['total_payin_payout'] = number_format(round($total_payin_payout ,1),2,'.','');
$payin_data['created_by'] = $this->input->post('driver_id');
$payin_data['created_ts'] = date('Y-m-d H:i:s');
//-------------------------------Lifetime & shift total--------------------------------//
$life_time_total_image_type=$this->input->post('life_time_total_image_type');
if($life_time_total_image_type == 'C'){
$life_time_total_image=$this->input->post('life_time_total_image');
if (!empty($life_time_total_image) && file_exists(UPLOAD_DIR.$life_time_total_image)) {
$target_path = './public/upload_image/payin_images/'.$life_time_total_image;
if (copy(UPLOAD_DIR.$life_time_total_image,$target_path)){
$payin_data['payin_lifetime_total'] = $life_time_total_image;
}
}
} elseif($life_time_total_image_type == 'F'){
if(isset($_FILES['life_time_total_image_file']['name']) && !empty($_FILES['life_time_total_image_file']['name'])){
$target_path = './public/upload_image/payin_images/';
$upload_file = $this->single_image_upload($target_path, $_FILES['life_time_total_image_file'],'life_time_total_image_file');
//echo $upload_file['result'];die;
if($upload_file['status']==1){
$payin_data['payin_lifetime_total'] = $upload_file['result'];
} else {
//echo $upload_file['result'];die;
$payin_data['payin_lifetime_total'] = '';
}
}
}
$shift_total_image_type=$this->input->post('shift_total_image_type');
if($shift_total_image_type == 'C'){
$shift_total_image=$this->input->post('shift_total_image');
if (!empty($shift_total_image) && file_exists(UPLOAD_DIR.$shift_total_image)) {
$target_path = './public/upload_image/payin_images/'.$shift_total_image;
if (copy(UPLOAD_DIR.$shift_total_image,$target_path)){
$payin_data['payin_reference_doc'] = $shift_total_image;
}
}
} elseif($shift_total_image_type == 'F'){
if(isset($_FILES['shift_total_image_file']['name']) && !empty($_FILES['shift_total_image_file']['name'])){
$target_path = './public/upload_image/payin_images/';
$upload_file = $this->single_image_upload($target_path, $_FILES['shift_total_image_file'],'shift_total_image_file');
if($upload_file['status']==1){
$payin_data['payin_reference_doc'] = $upload_file['result'];
} else {
$payin_data['payin_reference_doc'] = '';
}
}
}
//echo '<pre>';print_r($payin_data);die;
$payin_id = $this->mcommon->insert('payin', $payin_data);
if ($payin_id) {
$docket_id = $this->input->post('docket_id');
$docket_image = $this->input->post('docket_image');
$docket_price = $this->input->post('docket_price');
$docket_image_type = $this->input->post('docket_image_type');
//print_r($docket_image_type); die;
if (isset($docket_id) && !empty($docket_id)) {
foreach ($docket_id as $docket_key => $docket) {
//echo $docket_image_type[$docket_key];die;
$docket_data = array();
if(!empty($docket) && !empty($docket_price[$docket_key])){
$docket_data['payin_id'] = $payin_id;
$docket_data['docket_id'] = $docket;
$docket_data['value'] = $docket_price[$docket_key];
if($docket_image_type[$docket_key] == 'C'){
$docket_image_name=$docket_image[$docket_key];
if (!empty($docket_image_name) && file_exists(UPLOAD_DIR.$docket_image_name)) {
$target_path = './public/upload_image/payin_images/'.$docket_image_name;
if (copy(UPLOAD_DIR.$docket_image_name,$target_path)){
$docket_data['doc_link'] = $docket_image_name;
}
}
} elseif($docket_image_type[$docket_key] == 'F'){
$_FILES['docket_image']= array();
//echo $_FILES['docket_image_file']['name'][$docket_key];die;
if(isset($_FILES['docket_image_file']['name'][$docket_key]) && !empty($_FILES['docket_image_file']['name'][$docket_key])){
$target_path = './public/upload_image/payin_images/';
$_FILES['docket_image']['name'] = $_FILES['docket_image_file']['name'][$docket_key];
$_FILES['docket_image']['type'] = $_FILES['docket_image_file']['type'][$docket_key];
$_FILES['docket_image']['tmp_name'] = $_FILES['docket_image_file']['tmp_name'][$docket_key];
$_FILES['docket_image']['error'] = $_FILES['docket_image_file']['error'][$docket_key];
$_FILES['docket_image']['size'] = $_FILES['docket_image_file']['size'][$docket_key];
$upload_file = $this->single_image_upload($target_path, $_FILES['docket_image'],'docket_image');
//echo $upload_file['result']; die;
if($upload_file['status']==1){
$docket_data['doc_link'] = $upload_file['result'];
} else {
$docket_data['doc_link'] = '';
}
}
}
$this->mcommon->insert('payin_dockets', $docket_data);
}
}
}
$expense_id = $this->input->post('expense_id');
$expense_image = $this->input->post('expense_image');
$expense_price = $this->input->post('expense_price');
$expense_image_type = $this->input->post('expense_image_type');
if (isset($expense_id) && !empty($expense_id)) {
foreach ($expense_id as $expense_key => $expense) {
//print_r($payin_dockets);die;
$expense_data = array();
if(!empty($expense) && !empty($expense_price[$expense_key])){
$expense_data['payin_id'] = $payin_id;
$expense_data['expense_id'] = $expense;
$expense_data['value'] = $expense_price[$expense_key];
if($expense_image_type[$expense_key] == 'C'){
$expense_image_name=$expense_image[$expense_key];
if (!empty($expense_image_name) && file_exists(UPLOAD_DIR.$expense_image_name)) {
$target_path = './public/upload_image/payin_images/'.$expense_image_name;
if (copy(UPLOAD_DIR.$expense_image_name,$target_path)){
$expense_data['doc_link'] = $expense_image_name;
}
}
} elseif($expense_image_type[$expense_key] == 'F'){
$_FILES['expense_image']= array();
if(isset($_FILES['expense_image_file']['name'][$expense_key]) && !empty($_FILES['expense_image_file']['name'][$expense_key])){
$target_path = './public/upload_image/payin_images/';
$_FILES['expense_image']['name'] = $_FILES['expense_image_file']['name'][$expense_key];
$_FILES['expense_image']['type'] = $_FILES['expense_image_file']['type'][$expense_key];
$_FILES['expense_image']['tmp_name'] = $_FILES['expense_image_file']['tmp_name'][$expense_key];
$_FILES['expense_image']['error'] = $_FILES['expense_image_file']['error'][$expense_key];
$_FILES['expense_image']['size'] = $_FILES['expense_image_file']['size'][$expense_key];
$upload_file = $this->single_image_upload($target_path, $_FILES['expense_image'],'expense_image');
//echo $upload_file['result']; die;
if($upload_file['status']==1){
$expense_data['doc_link'] = $upload_file['result'];
} else {
$expense_data['doc_link'] = '';
}
}
}
$this->mcommon->insert('payin_expenses', $expense_data);
}
}
}
//------------------------------------------Change Shift Status-------------------------------------------//
$condition_shift = array('shift_id' => $this->input->post('shift_id'));
$shift_details = $this->mcommon->getRow('driver_shift_details', $condition_shift);
if (!empty($shift_details)) {
$insert_shift_payin = $this->mpayin->insert_driver_shift_payin($this->input->post('shift_from_date'),$this->input->post('shift_to_date'), $this->input->post('driver_id'), $this->input->post('shift_id'));
if ($insert_shift_payin) {
$shift_data['shift_status'] = 2;
$shift_data['shift_end_time'] = date('Y-m-d H:i:s');
$this->mcommon->update('driver_shift_details', $condition_shift, $shift_data);
}
}
//--------------------------------------------------END--------------------------------------------------//
//------------------------------------------Check Service Notification-----------------------------------//
//$this->mpayin->check_service_notification($this->input->post('shift_id'), $payin_id);
$conds_bond = array('driver_id' => $this->input->post('driver_id'));
$bond_datas = $this->mcommon->getRow('master_bond',$conds_bond);
if(!empty($bond_datas)){
$bond_installment_amt_paid = $this->input->post('bond_value') + $bond_datas['installment_amt_paid'];
$total_paid_amt = $this->input->post('bond_value') + $bond_datas['total_paid_amt'];
$bond_accumulated_amt = $bond_datas['bond_accumulated_amt'] - $this->input->post('bond_value');
$bond_settlement_flag = 0;
if($bond_accumulated_amt <= 0){
$bond_settlement_flag = 1;
}
$bond_update_data = array('installment_amt_paid' => $bond_installment_amt_paid,'total_paid_amt'=>$total_paid_amt,'bond_accumulated_amt'=>$bond_accumulated_amt,'bond_settlement_flag'=>$bond_settlement_flag,'updated_by' =>$this->input->post('driver_id'),'updated_on' => date('Y-m-d'));
$update_payin_result = $this->mcommon->update('master_bond',$conds_bond,$bond_update_data);
}
$response = array('status' => true, 'message' => 'Payin data saved successfully', 'result' => array());
//---------------------------------------------------END-------------------------------------------------//
} else {
$response = array('status' => false, 'message' => 'Oops!something went wrong...', 'result' => array());
}
} else {
$response = array('status' => false, 'message' => 'Payin Already Submitted', 'result' => array());
}
} else {
$response = array('status' => false, 'message' => 'Please provide Pay in data', 'result' => array());
}
echo json_encode($response);
}
private function single_image_upload($path, $files, $document_type){
//echo $document_type;die;
$fileName = $document_type . '_' . time() . '_' . str_replace(" ", "_", $files['name']);
$config = array(
'upload_path' => $path,
'allowed_types' => 'gif|jpg|png|jpeg',
'overwrite' => 1,
'file_name' => $fileName
);
//print_r($config);die;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload($document_type)) {
//echo $this->upload->display_errors();die;
$message = array('result' => $this->upload->display_errors(), 'status' => 0);
} else {
//echo 'success';die;
$data = array('upload_data' => $this->upload->data());
//print_r($data);die;
$message = array('result' => $data['upload_data']['file_name'], 'status' => 1);
}
return $message;
}
}