<?php

namespace CGClientTickets\Repository;

/**
 * This class generates a ticket list based on various criteria.
 * It is used for the tickets tab in the admin interface, and possibly the
 * frontend user ticket list interface.
 */
class UnreadTicketResultset extends \CGExtensions\query\resultset
{
    public function __construct($parms = array()) {
        // @todo: check the params
        $this->_data = $parms;
    }

    protected function _query()
    {
        if( $this->_rs ) return;

        $db = \cge_utils::get_db();
        $parms = array();
        if( isset($this->_filter['owner']) ) {
            $sql = 'SELECT SQL_CALC_FOUND_ROWS T.priority,COUNT(M.id) AS cnt FROM '.CGST_TICKETS_TABLE.' T
                    LEFT JOIN '.CGST_MSGS_TABLE.' M ON T.id = M.ticket_id AND T.owner = M.dest AND T.owner = ? AND viewed IS NULL GROUP BY T.priority';
        }
        else {
            $sql = 'SELECT T.priority,COUNT(M.id) AS cnt FROM '.CGST_TICKETS_TABLE.' T
                    LEFT JOIN '.CGST_MSGS_TABLE.' M ON T.id = M.ticket_id AND T.alert_group = M.dest AND admin_viewed IS NULL GROUP BY T.priority';
        }
        $this->_rs = $db->Execute($sql,$parms);
        $this->_totalmatching = $db->GetOne('SELECT FOUND_ROWS()');
    }

    public function &get_object()
    {
        $fields = $this->fields;
        return $fields;
    }

} // end of class
