<?php

class Deposit
{
    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 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, u.lastname, u.email, u.deposit_status FROM deposit d" . $innerjoin . $sql);

        return $dbdata;
    }

    function getNumber($year)
    {
        $theids = '';
        $valid = 'deposit';
        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;
    }

    function saveDeposit($amount, $date, $files, $notes, $status, $user_bitcoin_account, $bitcoin_account = '')
    {
        global $userid, $yearnow, $monthnow, $transactionsetting;

        $lastnumber = $this->getNumber($yearnow);
        $totaldigit = empty($transactionsetting['autonumberdigit']) ? 0 : $transactionsetting['autonumberdigit'];

        $inserts['transaction_number'] = 'DEP/' . $yearnow . '/' . $monthnow . '/' . str_pad($lastnumber, $totaldigit, "0", STR_PAD_LEFT);
        $inserts['date'] = date('Y-m-d', strtotime($date));
        $inserts['amount'] = $amount;
        $inserts['files'] = $files;
        $inserts['notes'] = $notes;
		$inserts['account_id'] = $user_bitcoin_account;
        $inserts['bitcoin_account'] = $bitcoin_account;
        $inserts['status'] = $status;
        $inserts['userid'] = $userid;
        $inserts['created_date'] = 'now()';

        $lastid = $this->db->insert("deposit", $inserts);
        return $lastid;
    }

    function saveDepositToUser()
    {
        global $userid;

        $data['trading_account_amount'] = 200;
        $data['trading_account_pam_amount'] = 50;
        $data['eshare'] = 50;
        $this->db->update('user', $data, "userid='$userid'");
    }

    function setType($depositId, $type)
    {
        $data['type'] = $type;
        $this->db->update('deposit', $data, "deposit_id='$depositId'");
    }

    function saveDepositHistory($transactionnumber, $nominal, $userid, $type, $note)
    {
		global $deposit_type;
		
        $inserts['transactionnumber'] = $transactionnumber;
        $inserts['transaction_type'] = $type;
        $inserts['notes'] = $note;
        $inserts['transactiondate'] = 'now()';
        $inserts['nominal'] = $nominal;
        $inserts['userid'] = $userid;

        $this->db->insert("transaction_history", $inserts);
        return true;
    }

    function saveTempHistory($transactionnumber, $nominal, $userid, $type, $note, $plus_month)
    {
        $inserts['transactionnumber'] = $transactionnumber;
        $inserts['transaction_type'] = $type;
        $inserts['notes'] = $note;
        $inserts['transactiondate'] = 'now() + interval '.$plus_month.' month';
        $inserts['nominal'] = $nominal;
        $inserts['userid'] = $userid;

        $this->db->insert("temp_history", $inserts);
        return true;
    }

    function saveTempHistoryDaily($transactionnumber, $nominal, $userid, $type, $note, $plus_day)
    {
        $inserts['transactionnumber'] = $transactionnumber;
        $inserts['transaction_type'] = $type;
        $inserts['notes'] = $note;
        $inserts['transactiondate'] = 'now() + interval '.$plus_day.' day';
        $inserts['nominal'] = $nominal;
        $inserts['userid'] = $userid;

        $this->db->insert("temp_history", $inserts);
        return true;
    }

    function updateDeposit($status)
    {
        global $userid;
        if (!empty($this->id)) {
            $updates['status'] = $status;
            $updates['modified_date'] = 'now()';
            $updates['modified_by'] = $userid;

            if ($status == 2) {
                $updates['approved_date'] = 'now()';
                $updates['approved_by'] = $userid;
            }

            $this->db->update("deposit", $updates, "deposit_id='" . $this->id . "'");
        }
    }

    function saveDepositSummary($nominal_in, $nominal_out)
    {
        global $userid;

        $check_db = $this->db->fetch_one("SELECT id FROM transaction_summary WHERE month_year = '" . $this->db->clean(date('Ym')) . "'");

        if (empty($check_db['id'])) {
            $inserts['month_year'] = date('Ym');
            $inserts['nominal_in'] = $nominal_in;
            $inserts['nominal_out'] = $nominal_out;

            $this->db->insert("transaction_summary", $inserts);
        } else {
            $this->db->query("UPDATE transaction_summary SET nominal_in = nominal_in + " . $this->db->clean($nominal_in) . ", nominal_out = nominal_out + " . $this->db->clean($nominal_out) . " WHERE id = '" . $this->db->clean($check_db['id']) . "'");
        }
        return true;
    }

    function searchDeposit($keyword, $field, $sortfield, $sortdetail, $getreturn, $page = -1, $usergroup = '')
    {
        global $general, $category, $userid;

        $addlimit = '';
        if ($page > 0) {
			if ($usergroup == 'member'){
				$addlimit = ' LIMIT ' . ($page - 1) * $general['showperpage'] . ',' . $general['showperpage'];
			}
			else{
				$addlimit = ' LIMIT ' . ($page - 1) * $general['showperpageadmin'] . ',' . $general['showperpageadmin'];
			}
        }

        $sqls = array();

        $innerjoin = ' INNER JOIN user u ON u.userid = d.userid';

        $fields = 'd.deposit_id';

        if (isset($keyword)) {
            $strinarr = '';
            $groupby = '';

            $arr1 = array_search('amount', $field);
            if ($arr1 !== false) {
                $strinarr = 'd.amount LIKE (\'%' . $this->db->clean($keyword[$arr1]) . '%\')';
                array_push($sqls, $strinarr);
                $fields = 'd.deposit_id';
            }
            $arr2 = array_search('user', $field);
            if ($arr2 !== false) {
                $strinarr = '(u.firstname LIKE (\'%' . $this->db->clean($keyword[$arr2]) . '%\') OR u.lastname LIKE (\'%' . $this->db->clean($keyword[$arr2]) . '%\'))';
                array_push($sqls, $strinarr);
                $fields = 'd.deposit_id';
            }
            $arr3 = array_search('email', $field);
            if ($arr3 !== false) {
                $strinarr = 'u.email LIKE (\'%' . $this->db->clean($keyword[$arr3]) . '%\')';
                array_push($sqls, $strinarr);
                $fields = 'd.deposit_id';
            }
            $arr4 = array_search('transaction_number', $field);
            if ($arr4 !== false) {
                $strinarr = 'd.transaction_number LIKE (\'%' . $this->db->clean($keyword[$arr4]) . '%\')';
                array_push($sqls, $strinarr);
                $fields = 'd.deposit_id';
            }
            $arrf7 = array_search('startdate', $field);
            $arrf8 = array_search('enddate', $field);
            if ($arrf7 !== false && $arrf8 !== false) {
                $startdate = $keyword[$arrf7] . ' 00:00:00';
                $enddate = $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 = $keyword[$arrf7] . ' 00:00:00';
                $enddate = $keyword[$arrf7] . ' 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 = $keyword[$arrf8] . ' 00:00:00';
                $enddate = $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 = \'' . $this->db->clean($keyword[$arr6]) . '\'';
                array_push($sqls, $strinarr);
                $fields = 'd.deposit_id';
            }
			$arr7 = array_search('type', $field);
            if ($arr7 !== false) {
                $strinarr = 'd.type LIKE (\'%' . $this->db->clean($keyword[$arr7]) . '%\')';
                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 'sortuser':
                        $fields = 'u.firstname ' . $orders . ', u.lastname';
                        break;
                    case 'sortemail':
                        $fields = 'u.email';
                        break;
                    case 'sorttransactionnumber':
                        $fields = 'd.transaction_number';
                        break;
                    case 'sortdate':
                        $fields = 'd.date';
                        break;
                    case 'sortamount':
                        $fields = 'd.amount';
                        break;
                    case 'sortstatus':
                        $fields = 'd.status';
                        break;
					case 'sorttype':
                        $fields = 'd.type';
                        break;
                    default:
                        $fields = 'd.date';
                        break;
                }
            }

            $dball = $this->db->fetch_all("SELECT d.*, u.firstname, u.lastname, u.email FROM deposit d" . $innerjoin . " " . $sql . " ORDER BY " . $fields . " " . $orders . $addlimit);

            return $dball;
        } else if ($getreturn == 'pagenav') {
            $dball = $this->db->fetch_one("SELECT COUNT(d.deposit_id) AS totalrecord FROM deposit 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;
        }
    }


}

?>