<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Userlog_model extends CI_Model {
    protected $_table='user_log';

    public function __construct(){
        parent::__construct();
        date_default_timezone_set("Asia/Ho_Chi_Minh");
    }

    public function add($action, $account_input, $result, $type='BE'){
        $dataInsert = array(
            'action' => $action,
            'time_login' => date('Y-m-d H:i:s'),
            'account_input' => $account_input,
            'ip_address' => $this->input->ip_address(),
            'user_agent' => $this->input->user_agent(),
            'type' => $type,
            'result' => $result
        );
        $this->db->insert($this->_table, $dataInsert);
        $insert_id = $this->db->insert_id();
        return $insert_id;
    }

    public function update($id, $time_login){
        $time_logout = date('Y-m-d H:i:s');
        $duration = (int)(strtotime($time_logout) - strtotime($time_login));
        $dataUpdate = array(
            'time_logout' => $time_logout,
            'duration' => $duration
        );
        $this->db->where('id', $id);
        $this->db->update($this->_table, $dataUpdate);
    }

    public function delete($id){
        $this->db->where('id', $id);
        $this->db->delete($this->_table);
    }

    public function getById($id){
        $this->db->select($this->_table.'.*');
        $this->db->from($this->_table);
        $this->db->where($this->_table.'.id', $id);
        $query = $this->db->get();
        return $query->result_array();
    }

    public function countAll($dtFrom=NULL, $dtTo=NULL, $filterByIP=NULL, $filterByAccount=NULL, $filterByResult=NULL){
        $this->db->select('COUNT(*) AS totalResults');
        $this->db->from($this->_table);

        if($dtFrom != NULL){$this->db->where('DATE(time_login) >=', $dtFrom);}
        if($dtTo != NULL){$this->db->where('DATE(time_login) <=', $dtTo);}
        if($filterByIP != NULL){$this->db->like('ip_address', $filterByIP);}
        if($filterByAccount != NULL){$this->db->like('account_input', $filterByAccount);}
        if($filterByResult != NULL){$this->db->where('UPPER(result)', $filterByResult);}

        $query = $this->db->get();
        $result = $query->result_array();
        if($result){
            return $result[0]['totalResults'];
        }else{
            return 0;
        }
    }

    public function getPagination($record, $start, $dtFrom=NULL, $dtTo=NULL, $filterByIP=NULL, $filterByAccount=NULL, $filterByResult=NULL){
        $this->db->select($this->_table.'.*');
        $this->db->from($this->_table);

        if($dtFrom != NULL){$this->db->where('DATE(time_login) >=', $dtFrom);}
        if($dtTo != NULL){$this->db->where('DATE(time_login) <=', $dtTo);}
        if($filterByIP != NULL){$this->db->like('ip_address', $filterByIP);}
        if($filterByAccount != NULL){$this->db->like('account_input', $filterByAccount);}
        if($filterByResult != NULL){$this->db->where('UPPER(result)', $filterByResult);}

        $this->db->order_by($this->_table.'.id', 'desc');
        $this->db->limit($record, $start);
        $query = $this->db->get();
        return $query->result_array();
    }

}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */