<?php

/**
 * This file defines the MessageListResultset class.
 *
 * @package CGClientTickets
 * @category Application
 * @author  calguy1000 <calguy1000@cmsmadesimple.org>
 * @copyright Copyright 2010 by Robert Campbell
 */

namespace CGClientTickets\Repository;

/**
 * This resultset is a simple resultset class to retrieve messages for a specific ticket.
 */
class MessageListResultset extends \CGExtensions\query\resultset
{
    /**
     * Constructor
     *
     * @param MessageListQuery $filter
     */
    public function __construct(MessageListQuery $filter) {
        $this->_filter = $filter;
    }

    /**
     * @ignore
     */
    protected function _query()
    {
        if( $this->_rs ) return;

        $db = \cge_utils::get_db();
        $sql = 'SELECT SQL_CALC_FOUND_ROWS id,ticket_id,sender,dest,subject,body,extra,sent,created,modified,viewed,viewed_by,admin_viewed
                FROM '.CGST_MSGS_TABLE;
        $where = array();
        $parms = array();
        if( ($ticket_id = (int)$this->_filter['ticket_id']) ) {
            $where[] = 'ticket_id = ?';
            $parms[] = $ticket_id;
        }

        if( count($where) ) $sql .= ' WHERE '.implode(' AND ',$where);
        $sql .= ' ORDER BY modified ASC';
        $this->_rs = $db->SelectLimit($sql,$this->_filter['limit'],$this->_filter['offset'],$parms);
        $this->_totalmatching = $db->GetOne('SELECT FOUND_ROWS()');
    }

    /**
     * Get the message for the current row in the resultset.
     *
     * @return \CGClientTickets\message
     */
    public function &get_object()
    {
        $obj = new \CGClientTickets\message;
        $obj->private_fill($this->fields);
        return $obj;
    }
} // end of class

?>
