<?php
class TransferSaldo{
	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 getTransferDetail(){
		$sqls = array();
		$dbdata = array();
		if (!empty($this->id)){
			array_push($sqls,'d.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 transfer_saldo d".$innerjoin.$sql);

		return $dbdata;
	}

	function searchTransfer($keyword,$field,$sortfield,$sortdetail,$getreturn,$page = -1, $usergroup=''){
		global $db,$general,$category,$userid;
		
		$addlimit = '';
		if ($page > 0){
			$addlimit = ' LIMIT '.($page-1)*$general['showperpageadmin'].','.$general['showperpageadmin'];
		}
		
		$sqls = array();
		
		$innerjoin = ' INNER JOIN user u ON u.userid = d.to';
			
		$fields = 'd.id';
		
		if (isset($keyword)){
			$strinarr = '';
			$groupby = '';
			
			$arr1 = array_search('amount',$field);
			if ($arr1 !== false){
				$strinarr = 'd.amount LIKE (\'%'.$keyword[$arr1].'%\')';
				array_push($sqls,$strinarr);
				$fields = 'd.id';
			}
			$arrf7 = array_search('startdate',$field);
			$arrf8 = array_search('enddate',$field);
			if ($arrf7 !== false && $arrf8 !== false){
				$startdate = date("Y-m-d H:i:s", strtotime($keyword[$arrf7].' 00:00:00'));
				$enddate = date("Y-m-d H:i:s", strtotime($keyword[$arrf8].' 23:59:59'));
				if (!empty($startdate) && !empty($enddate)){
					$strinarr = 'd.`date` >= \''.$this->db->clean($startdate).'\' AND d.`date` <= \''.$this->db->clean($enddate).'\'';
					array_push($sqls,$strinarr);
				}
			}
			else if ($arrf7 !== false){
				$startdate = date("Y-m-d H:i:s", strtotime($keyword[$arrf7].' 00:00:00'));
				$enddate = date("Y-m-d H:i:s", strtotime($keyword[$arrf8].' 23:59:59'));
				if (!empty($startdate) && !empty($enddate)){
					$strinarr = 'd.`date` >= \''.$this->db->clean($startdate).'\' AND d.`date` <= \''.$this->db->clean($enddate).'\'';
					array_push($sqls,$strinarr);
				}
			}
			else if ($arrf8 !== false){
				$startdate = date("Y-m-d H:i:s", strtotime($keyword[$arrf7].' 00:00:00'));
				$enddate = date("Y-m-d H:i:s", strtotime($keyword[$arrf8].' 23:59:59'));
				if (!empty($startdate) && !empty($enddate)){
					$strinarr = 'd.`date` >= \''.$this->db->clean($startdate).'\' AND d.`date` <= \''.$this->db->clean($enddate).'\'';
					array_push($sqls,$strinarr);
				}
			}
			
			/* $arr6 = array_search('status',$field);
			if ($arr6 !== false){
				$strinarr = 'd.status 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;
			}
		
			if (!empty($sortfield)){
				switch ($sortfield){
					case 'sorttransferdate': $fields = 'd.date'; break;
					case 'sorttransferamount': $fields = 'd.amount'; break;
					case 'sorttransferto': $fields = 'u.email'; break;
					default: $fields = 'd.date'; break;
				}
			}
			
			$dball = $db->fetch_all("SELECT d.*, u.email FROM transfer_saldo d".$innerjoin." ".$sql." ORDER BY ".$fields." ".$orders.$addlimit);
			
			return $dball;
		}
		else if ($getreturn == 'pagenav'){
			$dball = $db->fetch_one("SELECT COUNT(d.id) AS totalrecord FROM transfer_saldo 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;
				}
			}
			else{
				$page = 0;
				$totalrecord = 0;
				$totalpage = 0;
				$startrecord = 0;
				$endrecord = 0;
			}
			
			return $page.'|^|'.$totalrecord.'|^|'.$totalpage.'|^|'.$startrecord.'|^|'.$endrecord;
		}
	}
	
	function saveTransferSaldo($amount, $to, $notes){	
		global $userid, $yearnow, $monthnow, $transactionsetting;
		
		/* get adjust stock number */
		$lastnumber = $this->getTransferNumber($yearnow);
		$totaldigit = empty($transactionsetting['autonumberdigit'])?0:$transactionsetting['autonumberdigit'];
		
		$inserts['transactionnumber'] = 'TRF/'.$yearnow.'/'.$monthnow.'/'.str_pad($lastnumber,$totaldigit,"0",STR_PAD_LEFT);
		
		$inserts['date'] = 'now()';
		$inserts['amount'] = $amount;
		$inserts['userid'] = $userid;
		$inserts['to'] = $to;
		$inserts['notes'] = $notes;
		
 		$lastid = $this->db->insert("transfer_saldo",$inserts);	
		return $inserts['transactionnumber'];		
	}
	
	function saveTransferSaldoHistory($transactionnumber, $nominal, $email, $userid, $type="sender"){
		global $transactionsetting;
		
		$inserts['transactionnumber'] = $transactionnumber;
		
		if($type == "sender"){
			$inserts['transaction_type'] = 'transfer_to';
			$inserts['notes'] = 'Transfer saldo kepada '.$email;
		}
		else{
			$inserts['transaction_type'] = 'transfer_from';
			$inserts['notes'] = 'Saldo dari '.$email;
		}
		
		$inserts['transactiondate'] = 'now()';
		$inserts['nominal'] = $nominal;
 		
		$inserts['userid'] = $userid;
				
		$this->db->insert("transaction_history", $inserts);	
		return true;		
	}
	
	function getTransferNumber($year){
		$theids = '';
		$valid = 'transfer';
		if (!empty($year)){
			$getpoint = $this->db->fetch_one("SELECT number_val FROM number_setup WHERE number_tag = '".$this->db->clean($valid)."' AND year = '".$this->db->clean($year)."'");
			if (!empty($getpoint['number_val'])){
				$theids = $getpoint['number_val'] + 1;
				$this->db->query("UPDATE number_setup SET number_val = '".$this->db->clean($theids)."' WHERE number_tag = '".$this->db->clean($valid)."' AND year = '".$this->db->clean($year)."'");
			}
			else{
				$theids = 1;
				$inserts['number_tag'] = $valid;
				$inserts['number_val'] = $theids;
				$inserts['year'] = $year;
				$this->db->insert("number_setup",$inserts);
			}
		}
		
		return $theids;
	}
}
?>