<?php

namespace CGClientTickets\Actor;

class MessagePersistActor extends PersistActor
{
    private $_insert_id;

    protected function _update(\CGClientTickets\message $obj)
    {
        $db = \cge_utils::get_db();
        $query = 'UPDATE '.CGST_MSGS_TABLE.' SET ticket_id = ?, sender = ?, dest = ?, subject = ?, body = ?, extra = ?, sent = ?,
                    viewed = ?, viewed_by = ?, admin_viewed = ?
                  WHERE id = ?';
        $dbr = $db->Execute($query,array($obj->ticket_id,$obj->sender,$obj->dest,$obj->subject,$obj->body,$obj->extra,$obj->sent,
                                         $obj->viewed,$obj->viewed_by,$obj->admin_viewed,$obj->id));
        $this->_insert_id = $obj->id;
    }

    protected function _insert(\CGClientTickets\message $obj)
    {
        $db = \cge_utils::get_db();
        $query = 'INSERT INTO '.CGST_MSGS_TABLE.' (ticket_id,sender,dest,subject,body,extra,sent,viewed,viewed_by,admin_viewed,created,modified)
                  VALUES (?,?,?,?,?,?,?,?,?,?,UNIX_TIMESTAMP(),UNIX_TIMESTAMP())';
        $dbr = $db->Execute($query,array($obj->ticket_id,$obj->sender,$obj->dest,$obj->subject,$obj->body,$obj->extra,$obj->sent,
                                         $obj->viewed,$obj->viewed_by,$obj->admin_viewed));
        $this->_insert_id = $db->Insert_ID();
    }

    public function get_saved_id()
    {
        return $this->_insert_id;
    }

    public function save(\CGClientTickets\DataObject $obj)
    {
        if( $obj->id ) {
            $this->_update($obj);
        }
        else {
            $this->_insert($obj);
        }
    }

    public function delete(\CGClientTickets\DataObject $obj)
    {
        $db = \cge_utils::get_db();
        if( $obj->id < 1 ) return;

        $query = 'DELETE FROM '.CGST_MSGS_TABLE.' WHERE id = ?';
        $db->Execute($query,array($obj->id));
    }

    public function load_by_id($id)
    {
        $id = (int) $id;
        $db = \cge_utils::get_db();
        $query = 'SELECT id,ticket_id,sender,dest,subject,body,extra,viewed,viewed_by,admin_viewed,sent,created,modified FROM '.CGST_MSGS_TABLE.' WHERE id = ?';
        $row = $db->GetRow($query,array($id));

        $obj = new \CGClientTickets\message;
        $obj->private_fill($row);
        return $obj;
    }
} // end of class

?>
