<?php

/**
 * [Discuz!] (C)2001-2099 Discuz! Team
 * This is NOT a freeware, use is subject to license terms
 * https://license.discuz.vip
 */

if(!defined('IN_DISCUZ')) {
	exit('Access Denied');
}

class table_forum_tradecomment extends discuz_table {
	public static function t() {
		static $_instance;
		if(!isset($_instance)) {
			$_instance = new self();
		}
		return $_instance;
	}

	public function __construct() {

		$this->_table = 'forum_tradecomment';
		$this->_pk = 'id';

		parent::__construct();
	}

	function fetch_all_by_rateeid($rateeid, $type, $dateline = 0) {
		$dateline = $dateline ? 'AND dateline>='.intval($dateline) : '';
		return DB::fetch_all('SELECT * FROM %t WHERE rateeid=%d AND type=%d %i', [$this->_table, $rateeid, $type, $dateline]);
	}

	function fetch_all_list($from, $uid, $dateline, $score, $start) {
		$sql = $from == 'myself' ? "tc.raterid='".intval($uid)."'" : "tc.rateeid='".intval($uid)."'";
		$sql .= $from == 'buyer' ? ' AND tc.type=0' : ($from == 'seller' ? ' AND tc.type=1' : '');
		$dateline = $dateline !== false ? ' AND tc.dateline>='.intval($dateline) : '';
		$score = $score !== false ? ' AND tc.score='.intval($score) : '';

		return DB::fetch_all('SELECT tc.*, tl.subject, tl.price, tl.credit FROM %t tc LEFT JOIN %t tl USING(orderid) WHERE %i %i %i ORDER BY tc.dateline DESC LIMIT %d, 10',
			[$this->_table, 'forum_tradelog', $sql, $dateline, $score, $start]);
	}

	function count_list($from, $uid, $dateline, $score) {
		$sql = $from == 'myself' ? "tc.raterid='".intval($uid)."'" : "tc.rateeid='".intval($uid)."'";
		$sql .= $from == 'buyer' ? ' AND tc.type=0' : ($from == 'seller' ? ' AND tc.type=1' : '');
		$dateline = $dateline !== false ? ' AND tc.dateline>='.intval($dateline) : '';
		$score = $score !== false ? ' AND tc.score='.intval($score) : '';

		return DB::result_first('SELECT COUNT(*) FROM %t tc WHERE %i %i %i', [$this->_table, $sql, $dateline, $score]);
	}

	function get_month_score($uid, $type, $rateeid) {
		$monthfirstday = mktime(0, 0, 0, date('m', TIMESTAMP), 1, date('Y', TIMESTAMP));
		return DB::result_first('SELECT COUNT(score) FROM %t WHERE raterid=%d AND type=%d AND dateline>=%d AND rateeid=%d', [$this->_table, $uid, $type, $monthfirstday, $rateeid]);
	}

}

