<?php
class TransactionHistory{
	var $id;
	private $db;
	private $username, $email;
	
	function __construct(){
		global $db, $username, $usermail;
		$this->db = $db;		
		$this->username = $username;	
		$this->email = $usermail;		
	}	
	function setId($id){
		$this->id = $id;
	}
	
	function deleteBank(){
		global $db;		
		if (!empty($this->id)){	
			$this->db->query("DELETE from account_bank WHERE account_id='".$this->id."'");			
		}
	}
	
	function getDepositDetail(){
		$sqls = array();
		$dbdata = array();
		if (!empty($this->id)){
			array_push($sqls,'d.deposit_id = \''.$this->id.'\'');
		}
		
		$innerjoin = ' INNER JOIN user u ON u.userid = d.userid';
		
		$sql = '';
		if (sizeof($sqls) > 0){
			$sql = ' WHERE '.implode(' AND ',$sqls);
		}
		$dbdata = $this->db->fetch_one("SELECT d.*, u.firstname FROM deposit d".$innerjoin.$sql);

		return $dbdata;
	}

	function saveDeposit($amount, $date, $files, $status){	
		global $userid;
		
		$inserts['date'] = date('Y-m-d', strtotime($date));
		$inserts['amount'] = $amount;
		$inserts['files'] = $files;
		$inserts['status'] = $status;
		$inserts['userid'] = $userid;
		
 		$lastid = $this->db->insert("deposit",$inserts);	
		return true;		
	}
	
	function updateDeposit($status){			
		if (!empty($this->id)){			
			$updates['status'] = $status;
			
			$this->db->update("deposit",$updates,"deposit_id='".$this->id."'");
 		}
	}
	
	function searchHistory($keyword,$field,$sortfield,$sortdetail,$getreturn,$page = -1, $usergroup=''){
		global $db,$general,$category,$userid,$decimalseparator,$thousandseparator;
		
		$addlimit = '';
		if ($page > 0){
			$addlimit = ' LIMIT '.($page-1)*$general['showperpageadmin'].','.$general['showperpageadmin'];
		}
		
		$sqls = array();
		
		$innerjoin = ' INNER JOIN user u ON u.userid = d.userid';
			
		$fields = '';
		
		if (isset($keyword)){
			$strinarr = '';
			$groupby = '';
			
			$arr1 = array_search('email',$field);
			if ($arr1 !== false){
				$strinarr = 'u.email LIKE (\'%'.$keyword[$arr1].'%\')';
				array_push($sqls,$strinarr);
			}
			$arrf2 = array_search('startdate',$field);
			$arrf22 = array_search('enddate',$field);
			if ($arrf2 !== false && $arrf22 !== false){
				$keyword[$arrf2] = date('Y-m-d', strtotime($keyword[$arrf2]));
				$keyword[$arrf22] = date('Y-m-d', strtotime($keyword[$arrf22]));
				$startdate = /* strtotime( */$keyword[$arrf2]/* ) */;
				$enddate = /* strtotime( */$keyword[$arrf22].' 23:59:59'/* ) */;
				if (!empty($startdate) && !empty($enddate)){
					$strinarr = 'd.transactiondate >= \''.$startdate.'\' AND d.transactiondate <= \''.$enddate.'\'';
					array_push($sqls,$strinarr);
				}
			}
			else if ($arrf2 !== false){
				$keyword[$arrf2] = date('Y-m-d', strtotime($keyword[$arrf2]));
				$startdate = /* strtotime( */$keyword[$arrf2]/* ) */;
				/* $enddate = strtotime($keyword[$arrf2].' 23:59:59'); */
				if (!empty($startdate)/*  && !empty($enddate) */){
					$strinarr = 'd.transactiondate >= \''.$startdate.'\''/* .' AND p.transactiondate <= '.$enddate */;
					array_push($sqls,$strinarr);
				}
			}
			else if ($arrf22 !== false){
				/* $startdate = strtotime($keyword[$arrf22]); */
				$keyword[$arrf22] = date('Y-m-d', strtotime($keyword[$arrf22]));
				$enddate = /* strtotime( */$keyword[$arrf22].' 23:59:59'/* ) */;
				if (/* !empty($startdate) &&  */!empty($enddate)){
					$strinarr = 'd.transactiondate <= \''.$enddate.'\'';
					array_push($sqls,$strinarr);
				}
			}
			
			$arr3 = array_search('type',$field);
			if ($arr3 !== false){
				$strinarr = 'd.transaction_type LIKE (\'%'.$keyword[$arr3].'%\')';
				array_push($sqls,$strinarr);
			}
			
			/* $arr6 = array_search('email',$field);
			if ($arr6 !== false){
				$strinarr = 'u.email LIKE (\''.$keyword[$arr6].'%\')';
				array_push($sqls,$strinarr);
				$fields = 'd.deposit_id';
			} */
		}
		
		if($usergroup == 'member')
		{
			$strinarr = 'd.userid = \''.$this->db->clean($userid).'\'';
			array_push($sqls,$strinarr);
		}
		
		$sql = '';
		if (sizeof($sqls) > 0){
			$sql = ' WHERE '.implode(' AND ',$sqls);
		}
		
		if ($getreturn == 'data'){
			$orders = 'DESC';
			if (!empty($sortdetail)){
				$orders = $sortdetail;
			}
		
			switch ($sortfield){
				case 'sorttransactionnumber': $fields = 'd.transactionnumber'; break;
				case 'sorttransactiondate': $fields = 'd.transactiondate'; break;
				case 'sorttransactiontype': $fields = 'd.notes'; break;
				case 'sortnominal': $fields = 'd.nominal'; break;
				case 'sortemail': $fields = 'u.email'; break;
				case 'sortname': $fields = 'u.firstname'; break;
				case 'sortfee': $fields = 'd.fee'; break;
				case 'sortcommission': $fields = 'd.commission'; break;
				default: $fields = 'd.transactiondate DESC, d.transaction_type'; break;
			}
			
			$dball = $db->fetch_all("SELECT d.*, u.email, u.firstname, u.lastname FROM transaction_history d".$innerjoin." ".$sql." ORDER BY ".$fields." ".$orders.$addlimit);
			
			return $dball;
		}
		else if ($getreturn == 'pagenav'){
			
			$dball = $db->fetch_one("SELECT COUNT(d.history_id) AS totalrecord, SUM(d.nominal) AS nominal FROM transaction_history d".$innerjoin." ".$sql);
			
			if ($dball['totalrecord'] > 0){
				$totalrecord = $dball['totalrecord'];
				$totalpage = ceil($totalrecord / $general['showperpageadmin']);
				$page = handlepage($page,$totalpage);
				$startrecord = ($page - 1) * $general['showperpageadmin'] + 1;
				$endrecord = $startrecord + $general['showperpageadmin'] - 1;
				if ($endrecord > $totalrecord){
					$endrecord = $totalrecord;
				}
				
				$total_nominal = number_format($dball['nominal'], 2, $decimalseparator,$thousandseparator);
			}
			else{
				$page = 0;
				$totalrecord = 0;
				$totalpage = 0;
				$startrecord = 0;
				$endrecord = 0;
				
				$total_nominal = 0;
				$total_fee = 0;
				$total_commission = 0;
			}
			
			return $page.'|^|'.$totalrecord.'|^|'.$totalpage.'|^|'.$startrecord.'|^|'.$endrecord.'|^|'.$total_nominal;
		}
	}
}
?>