Your IP : 216.73.216.91


Current Path : /var/www/html/tax/api/controller/
Upload File :
Current File : /var/www/html/tax/api/controller/payment.php

<?php 
require_once('book.php'); 
class payment extends pdocrudhandler{
	private $startUpConfig;
	private $baseUrl;
	public function __construct(){
		$this->_pdo = $this->connect();
		if (session_status() == PHP_SESSION_NONE) {
		    session_start();
		}
	}

	public function getPaymentMethods($data){
		$response = [];
		$companyId = (isset($_SESSION['companyid'])) ? $_SESSION['companyid'] : $data['pay_company_id'];
		$userId = (isset($_SESSION['userid'])) ? $_SESSION['userid'] : $data['pay_user_id'];
		$response = $this->select($this->getTable('paymentmethod'),["*"], "WHERE idCompany = ? and isActive = ?", [$companyId, 1]);
		return $response;
	}

	public function getBanks($data){
		$response = [];
		$companyId = (isset($_SESSION['companyid'])) ? $_SESSION['companyid'] : $data['pay_company_id'];
		$userId = (isset($_SESSION['userid'])) ? $_SESSION['userid'] : $data['pay_user_id'];
		$response = $this->select($this->getTable('bank'),["*"], "WHERE idCompany = ? and isActive = ?", [$companyId, 1]);
		return $response;
	}

	public function createPayment($data){
		$response = [];
		$companyId = (isset($_SESSION['companyid'])) ? $_SESSION['companyid'] : $data['pay_company_id'];
		$userId = (isset($_SESSION['userid'])) ? $_SESSION['userid'] : $data['pay_user_id'];
		// echo "<pre>"; print_r($data); exit;
		$payment = [
			"idBook" => $data['pay_book_id'],
			"idBusiness" => $data['pay_business_id'],
			"idPaymentMethod" => $data['pay_method_id'],
			"paymentRef" => $data['pay_ref_no'],
			"payeeIdBank" => $data['pay_bank_id'],
			"billRef" => $data['bill_ref_no'],
			"town" => $data['pay_town'],
			"date" => $data['pay_date'],
			"status" => $data['pay_status'],
			"amount" => $data['pay_amount'],
			"balance" => $data['pay_bal'],
			"remarks" => $data['pay_remarks'],
			"idCompany" => $companyId,
			"idUser" => $userId
		];
		$book = new book();
		$params = [];
		$params['book_id'] = $data['pay_book_id'];
		$resBook = $book->addBookTransaction($params);
		if($resBook['status'] == "Active" && isset($resBook['serialActive'])){
			$payment['serial'] = $resBook['serialActive'];
			$response = $this->insert($this->getTable('payment'), $payment);
		}else{
			$response = $resBook;
		}
		return $response;
	}

	public function getPayments($data){
		$response = [];
		$companyId = (isset($_SESSION['companyid'])) ? $_SESSION['companyid'] : $data['pay_company_id'];
		$userId = (isset($_SESSION['userid'])) ? $_SESSION['userid'] : $data['pay_user_id'];
		$qry = "Select
						p.idPayment,
						p.serial,
						p.paymentRef, 
						p.billRef, 
						p.town, 
						p.date,
						DATE_FORMAT(p.date,'%d-%m-%Y') as date, 
						p.status, 
						p.amount, 
						p.balance, 
						p.remarks, 
						b.name as bookName, 
						u.userName as receiverName, 
						ba.name as payeeBankName, 
						pm.name as paymentMethod,
						bs.name as businessName
					from payment p 
						left join book b on b.idBook = p.idBook
						left join user u on u.idUser = b.issuedTo
						left join bank ba on ba.idBank = p.payeeIdBank
						left join paymentmethod pm on pm.idPaymentMethod = p.idPaymentMethod
						left join business bs on bs.idBusiness = p.idBusiness
						where p.idCompany = ";
		if(isset($data['source']) && $data['source'] == 'dt'){
			// echo "<pre>"; print_r($data);exit;
			$columns = [
				"idPayment", "serial", "businessName", "town", "billRef", "bookName", "amount", "totalAmount",
				"receiverName", "payeeBankName", "paymentMethod", "paymentRef", "balance", "status", "date", "remarks" 
			];
			$columnsDbMapping = [
				"idPayment" => "p.idPayment", "serial" => "p.serial", "businessName" => "bs.name", "town" => "p.town",
				"billRef" => "p.billRef", "bookName" => "b.name", "amount" => "p.amount",
				"receiverName" => "u.userName", "payeeBankName" => "ba.name", "paymentMethod" => "pm.name",
				"paymentRef" => "p.paymentRef", "balance" => "p.balance", "status" => "p.status",
				"date" => "p.date", "remarks" => "p.remarks" 
			];
			$orderBy = ""; $where = "";
			if($data['order'][0]['column'] != 6){
				$orderBy = " order by ".$columns[$data['order'][0]['column']]. " ".$data['order'][0]['dir'];
			}
			foreach ($data['columns'] as $key => $value) {
				if($value['search']['value'] != "" && $key == 0){
					$where .= " And ".$columnsDbMapping[$value['data']]." like '%". $value['search']['value'] . "%'";
				}else if($value['search']['value'] != ""){
					$where .= " And ".$columnsDbMapping[$value['data']]." like '%". $value['search']['value'] . "%' ";
				}
			}
			$qry.=$companyId.$where.$orderBy." limit ".$data['length']." offset ".$data['start'];
			$response = $this->customSelect($qry);
			$countQry = $this->select($this->getTable('payment'),["idPayment"], "where idCompany = ?", [$companyId]);
			$totalCount = $countQry['rowsAffected'];
			$updatedRes = [];
			$totalAmount = 0;
			// echo "<pre>"; print_r($qry);exit;
			foreach ($response['result'] as $key => $value) {
				$value->DT_RowId = $value->idPayment;
				$totalAmount  += intval($value->amount);
				$value->totalAmount = $totalAmount;
				$updatedRes['data'][] = $value;
			}
			$updatedRes['draw'] = $data['draw'];
			$updatedRes['recordsTotal'] = $data['start'] + $data['length'];
			$updatedRes['recordsFiltered'] = $totalCount;
			$updatedRes['start'] = $data['start'];
			$response = $updatedRes;
		}else{
			$qry .= "?";
			$response = $this->customSelect($qry, [$companyId]);
		}
		return $response;
	}

	public function validateRequestsParams(){
		$this->mendetoryParamsAgainstEachMethod = [
			'getPaymentMethods' => [],
			'getBanks' => [],
			'getPayments' => [],
			'createPayment' => [
				'pay_book_id',
				'pay_date',
				'pay_business_id',
				'pay_method_id',
				'pay_ref_no',
				'pay_bank_id',
				'bill_ref_no',
				'pay_town',
				'pay_amount',
				'pay_status',
				'pay_bal',
				'pay_remarks'
			]
		];
		return $this->mendetoryParamsAgainstEachMethod;
	}
}
?>