HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: //var/www/html/qcr24/app/application/controllers/admin/DirectDebit.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');

class DirectDebit extends CI_Controller
{

	public function __construct()
	{
		parent::__construct();
		$this->load->model('admin/mrentout');
		$this->load->model('mcommon');
		$this->load->library('advantagepay');
		$this->recs_per_page = 200;
		$this->final_response = array();
		$this->final_response['result_value'] = array();
	}

	public function check_status()
	{//echo 1;die;
		$not_authorized_payments = $this->mrentout->get_not_authorized_payments();
		//print_r($not_authorized_payments);die;
		if (!empty($not_authorized_payments)) {

			foreach ($not_authorized_payments as $not_authorized_payment) {

				try {

					$advantage_pay_token = $this->advantagepay->getToken($not_authorized_payment['advantage_pay_credentials']);
					$advantage_pay_token = json_decode($advantage_pay_token, true);
					//echo '<pre>';print_r($advantage_pay_token);die;
					if (!$advantage_pay_token) {
						$return_data = array('status' => false, 'msg' => 'Token not generated');
						echo json_encode($return_data);
						die;
					}

					$direct_debit_response = $this->advantagepay->viewDirectDebits($not_authorized_payment['direct_debit_id'], $advantage_pay_token['access_token']);
					$direct_debit_response_array = json_decode($direct_debit_response, true);
					//print_r($direct_debit_response_array);die;
					// if(!$direct_debit_response_array){
					// 	$return_data = array('status' => false, 'msg' => 'Direct debit not created');
					// 	echo json_encode($return_data);die;
					// }
					// if(isset($direct_debit_response_array['errorCode'])){
					// 	$return_data = array('status' => false, 'msg' => $direct_debit_response_array['messages'][0]);
					// 	echo json_encode($return_data);die; 
					// }

					if (isset($direct_debit_response_array['Status'])) {

						//if($direct_debit_response_array['Status'] == 'Active'){
						$is_authorised = ($direct_debit_response_array['Status'] == 'Active') ? 1 : (($direct_debit_response_array['Status'] == 'Pending') ? 2 : 0);

						$this->db->update('rent_out_vehcile', array('direct_debit_status_response' => $direct_debit_response, 'is_authorised' => $is_authorised, 'direct_debit_status' => $direct_debit_response_array['Status']), array('rent_out_id' => $not_authorized_payment['rent_out_id']));
						//echo $this->db->last_query();die;
						//} 
					}

					//echo '<pre>';print_r($direct_debit_response_array);die;
				} catch (Exception $e) {
					// this will not catch DB related errors. But it will include them, because this is more general. 
					$return_data = array('status' => false, 'msg' => $e->getMessage());
					echo json_encode($return_data);
					die;
				}
			}

			echo 'All direct debit record status updated successfully';
			die;
		}
	}

	public function get_payments_cron($company_id)
	{

		try {
			$get_company_credential = $this->mcommon->getRow('master_company',array('company_id'=>$company_id));
			$payment_response_array = $this->get_payments(0,$get_company_credential['advantage_pay_credentials']);
			//echo '<pre>';print_r($payment_response_array);die;
			if (isset($payment_response_array['Meta']['total_recs']) && !empty($payment_response_array['Meta']['total_recs'] > 0)) {

				$drivers = $this->db->select('md.driver_id,ddc.advantage_pay_customer_id')->from('master_driver md')->join('direct_debit_customers ddc','ddc.driver_id = md.driver_id','inner')->where('md.status !=', 3)->get()->result_array();
				
				if (empty($drivers)) {
					$return_data = array('status' => false, 'msg' => 'Driver not found');
					echo json_encode($return_data);
					die;
				}
				$drivers_advantage_pay_id_array = array_column($drivers, 'advantage_pay_customer_id');
				// echo '<pre>';print_r($drivers);
				// echo '<pre>';print_r($drivers_advantage_pay_id_array);die;
				foreach ($payment_response_array['result_value'] as $payment_records) {
					$search_key = array_search($payment_records['Customer']['Code'], $drivers_advantage_pay_id_array);
					//echo $search_key;die;

					if(!empty($payment_records['ExternalID'])){

						$payment_records_data[] = array(
							'direct_debit_id' => $payment_records['ExternalID'],
							'payment_code' => $payment_records['Code'],
							'driver_id' => (($search_key) ? $drivers[$search_key]['driver_id'] : NULL),
							'created_ts' => (($payment_records['DateCreated']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateCreated'])) : NULL),
							'paid_ts' => (($payment_records['DatePaid']) ? date('Y-m-d H:i:s', strtotime($payment_records['DatePaid'])) : NULL),
							'failed_ts' => (($payment_records['DateFailed']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateFailed'])) : NULL),
							'clears_date' => (($payment_records['DateClears']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateClears'])) : NULL),
							'settled_date' => (($payment_records['DateSettled']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateSettled'])) : NULL),
							'updated_ts' => (($payment_records['DateUpdated']) ? date('Y-m-d H:i:s', strtotime($payment_records['DateUpdated'])) : NULL),
							'payment_type' => ((in_array($payment_records['PaymentType'], array('direct_debit_bank_account', 'direct_debit_credit_card'))) ? 1 : 2),
							'payment_status' => !empty($payment_records['FailCode']) ? 'Failed' : 'Success',
							'amount' => $payment_records['Amount'],
							'amount_inc_fees' => $payment_records['AmountIncFees'],
							'payment_response_json' => $payment_records['ExternalID'],
							'fail_code' => $payment_records['FailCode'],
							'failed_reason' => $payment_records['FailReason'],
							'payment_response_json' => json_encode($payment_records)
						);

					}
					
				}
				//echo '<pre>';print_r($payment_records_data);die;
				if (!empty($payment_records_data)) {
					$this->db->insert_batch('direct_debit_payments', $payment_records_data);
				}
				echo 'Execution Completed';
				die;
			}
		} catch (Exception $e) {
			// this will not catch DB related errors. But it will include them, because this is more general. 
			$return_data = array('status' => false, 'msg' => $e->getMessage());
			echo json_encode($return_data);
			die;
		}



		echo 'All direct debit record status updated successfully';
		die;
	}

	function get_payments($page,$advantage_pay_credentials)
	{


		if (intval($page) == 0) {

			$this->final_response = array();
			$this->final_response['result_value'] = array();
		}

		$advantage_pay_token = $this->advantagepay->getToken($advantage_pay_credentials);
		$advantage_pay_token = json_decode($advantage_pay_token, true);

		if (!$advantage_pay_token) {
			$return_data = array('status' => false, 'msg' => 'Token not generated');
			echo json_encode($return_data);
			die;
		}

		$datepaidfrom = date('dmY', strtotime('-2 days'));
		$datepaidto = date('dmY', strtotime('-1 days'));

		$payment_response = $this->advantagepay->payments($advantage_pay_token['access_token'], $datepaidfrom, $datepaidto, $page, $this->recs_per_page);
		$payment_response_array = json_decode($payment_response, true);
		//echo '<pre>';print_r($payment_response_array);die;

		if (!empty($payment_response_array)) {

			if (isset($payment_response_array['Meta']['total_recs']) && !empty($payment_response_array['Meta']['total_recs'] > 0)) {

				$this->final_response['result_value'] = array_merge($this->final_response['result_value'], $payment_response_array['Records']);
				$this->final_response['Meta'] = $payment_response_array['Meta'];
			}

			if ($payment_response_array['Meta']['total_recs'] >= (intval($page) * intval($this->recs_per_page))) {

				$page++;
				$this->get_payments($page,$advantage_pay_credentials);
			}
		}

		return $this->final_response;
	}

	// public function get_payments_failed()
	// {

	// 	try {

	// 		$advantage_pay_token = $this->advantagepay->getToken();
	// 		$advantage_pay_token = json_decode($advantage_pay_token, true);

	// 		if (!$advantage_pay_token) {
	// 			$return_data = array('status' => false, 'msg' => 'Token not generated');
	// 			echo json_encode($return_data);
	// 			die;
	// 		}

	// 		$failed_payment_response = $this->advantagepay->failedPayments($advantage_pay_token['access_token'], date('0102Y'));
	// 		$failed_payment_response_array = json_decode($failed_payment_response, true);
	// 		echo '<pre>';
	// 		print_r($failed_payment_response_array);
	// 		die;
	// 		if (!$failed_payment_response_array) {
	// 			$return_data = array('status' => false, 'msg' => 'Direct debit not created');
	// 			echo json_encode($return_data);
	// 			die;
	// 		}
	// 		if (isset($direct_debit_response_array['errorCode'])) {
	// 			$return_data = array('status' => false, 'msg' => $direct_debit_response_array['messages'][0]);
	// 			echo json_encode($return_data);
	// 			die;
	// 		}

	// 		if (isset($direct_debit_response_array['Status'])) {
	// 			if ($direct_debit_response_array['Status'] == 'Active') {
	// 				$is_authorised = ($direct_debit_response_array['Status'] == 'Active') ? 1 : 0;

	// 				$this->db->update('rent_out_vehcile', array('direct_debit_status_response' => $direct_debit_response, 'is_authorised' => $is_authorised), array('rent_out_id' => $not_authorized_payment['rent_out_id']));
	// 				//echo $this->db->last_query();die;
	// 			}
	// 		}


	// 		//echo '<pre>';print_r($direct_debit_response_array);die;


	// 	} catch (Exception $e) {
	// 		// this will not catch DB related errors. But it will include them, because this is more general. 
	// 		$return_data = array('status' => false, 'msg' => $e->getMessage());
	// 		echo json_encode($return_data);
	// 		die;
	// 	}



	// 	echo 'All direct debit record status updated successfully';
	// 	die;
	// }

	// public function get_payments_settled()
	// {

	// 	try {

	// 		$advantage_pay_token = $this->advantagepay->getToken();
	// 		$advantage_pay_token = json_decode($advantage_pay_token, true);

	// 		if (!$advantage_pay_token) {
	// 			$return_data = array('status' => false, 'msg' => 'Token not generated');
	// 			echo json_encode($return_data);
	// 			die;
	// 		}

	// 		$failed_payment_response = $this->advantagepay->failedPayments($advantage_pay_token['access_token'], date('0102Y'));
	// 		$failed_payment_response_array = json_decode($failed_payment_response, true);
	// 		echo '<pre>';
	// 		print_r($failed_payment_response_array);
	// 		die;
	// 		if (!$failed_payment_response_array) {
	// 			$return_data = array('status' => false, 'msg' => 'Direct debit not created');
	// 			echo json_encode($return_data);
	// 			die;
	// 		}
	// 		if (isset($direct_debit_response_array['errorCode'])) {
	// 			$return_data = array('status' => false, 'msg' => $direct_debit_response_array['messages'][0]);
	// 			echo json_encode($return_data);
	// 			die;
	// 		}

	// 		if (isset($direct_debit_response_array['Status'])) {
	// 			if ($direct_debit_response_array['Status'] == 'Active') {
	// 				$is_authorised = ($direct_debit_response_array['Status'] == 'Active') ? 1 : 0;

	// 				$this->db->update('rent_out_vehcile', array('direct_debit_status_response' => $direct_debit_response, 'is_authorised' => $is_authorised), array('rent_out_id' => $not_authorized_payment['rent_out_id']));
	// 				//echo $this->db->last_query();die;
	// 			}
	// 		}


	// 		//echo '<pre>';print_r($direct_debit_response_array);die;


	// 	} catch (Exception $e) {
	// 		// this will not catch DB related errors. But it will include them, because this is more general. 
	// 		$return_data = array('status' => false, 'msg' => $e->getMessage());
	// 		echo json_encode($return_data);
	// 		die;
	// 	}



	// 	echo 'All direct debit record status updated successfully';
	// 	die;
	// }

	public function send_push_notification(){

		send_android_notification();
	}
}