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

class Video_Gallery_Model extends CI_Model {
    var $table = TBL_VIDEO_GALLERY;
    var $column_order = array('vg.id','vc.cat_name','vg.title','vg.sequence_no','vg.image','vg.add_date','vg.video_url','vg.status'); 
    var $column_search = array('vg.id','vc.cat_name','vg.title','vg.sequence_no','vg.video_url','vg.url','vg.add_date','vg.status');  
    var $order = array('vg.id' => 'desc');  
    
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
    }
    
    private function _get_datatables_query()
    {
        $this->db->select('vg.*, vc.cat_name, d.doc_name');
        $this->db->from($this->table . ' vg');
        $this->db->join('video_category vc', 'vc.id = vg.video_cat_id', 'LEFT');
        $this->db->join('doc_profile d', 'd.id = vg.doctor_id', 'LEFT');  
        
        $i = 0;
        foreach ($this->column_search as $item) 
        {
            if($_POST['search']['value'])  
            {
                if($i===0)  
                {
                    $this->db->group_start();  
                    $this->db->like($item, $_POST['search']['value']);
                }
                else
                {
                    $this->db->or_like($item, $_POST['search']['value']);
                }
                if(count($this->column_search) - 1 == $i)  
                    $this->db->group_end();  
            }
            $i++;
        }
        
        if(isset($_POST['order']))  
        {
            $this->db->order_by($this->column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
        } 
        else if(isset($this->order))
        {
            $order = $this->order;
            $this->db->order_by(key($order), $order[key($order)]);
        }
    }
    
    function get_datatables()
    {
        $this->_get_datatables_query();
        if($_POST['length'] != -1)
        $this->db->limit($_POST['length'], $_POST['start']);        
        $this->db->where('vg.publish',"1");
        $query = $this->db->get();
        return $query->result();
    }
    
    function count_filtered()
    {
        $this->_get_datatables_query();
        $this->db->where('vg.publish',"1");
        $query = $this->db->get();
        return $query->num_rows();
    }
    
    public function count_all()
    {
        $this->db->from($this->table);
        $this->db->where('publish',"1");
        return $this->db->count_all_results();
    }
    
    public function get_by_id($id)
    {
        $this->db->from($this->table);
        $this->db->where('id',$id);
        $query = $this->db->get();
        return $query->row();
    }
    
    public function save($data)
    {
        $this->db->insert($this->table, $data);
        return $this->db->insert_id();
    }
    
    public function update($where, $data)
    {
        $this->db->update($this->table, $data, $where);
        return $this->db->affected_rows();
    }
    
    public function delete_by_id($id)
    {
        $this->db->where('id', $id);
        $this->db->delete($this->table);
    } 
    
    public function delete_data($where, $data)
    {
        $this->db->update($this->table, $data, $where);
        return $this->db->affected_rows();
    }
    
    public function get_video_cat_list()
    {
        $this->db->select("id, cat_name, status, publish"); 
        $this->db->where('publish', "1");
        $this->db->where('status', "1"); 
        $this->db->order_by('cat_name', 'ASC');
        $query = $this->db->get(TBL_VIDEO_CATEGORY);
        return $query->result();
    }

   
    public function get_doctors_list()
    {
        $this->db->select("id, doc_name, doc_cat_id, doc_cat_sub"); 
        $this->db->where('publish', "1");
        $this->db->where('status', "1"); 
        $this->db->order_by('doc_name', 'ASC');
        $query = $this->db->get('doc_profile');  
        return $query->result();
    }

   
    public function get_doctor_categories()
    {
        $this->db->select("DISTINCT doc_cat_id"); 
        $this->db->where('publish', "1");
        $this->db->where('status', "1");
        $this->db->where('doc_cat_id !=', '');
        $this->db->order_by('doc_cat_id', 'ASC');
        $query = $this->db->get('doc_profile');  
        return $query->result();
    }

    function get_video_by_id($id) {
        $this->db->select("vg.*, vc.cat_name, d.doc_name");
        $this->db->where('vg.id', $id);  
        $this->db->join('video_category vc', 'vc.id = vg.video_cat_id', 'LEFT');
        $this->db->join('doc_profile d', 'd.id = vg.doctor_id', 'LEFT');  
        $query = $this->db->get(TBL_VIDEO_GALLERY . ' vg');
        if ($query->num_rows() > 0) {
            return $query->row();
        }
        return FALSE;
    }

    function get_videos_by_category($cat_id) {
        $this->db->select("vg.*, vc.cat_name, d.doc_name");
        $this->db->where('vg.video_cat_id', $cat_id);
        $this->db->where('vg.status', '1');
        $this->db->where('vg.publish', '1');
        $this->db->join('video_category vc', 'vc.id = vg.video_cat_id', 'LEFT');
        $this->db->join('doc_profile d', 'd.id = vg.doctor_id', 'LEFT');  
        $this->db->order_by('vg.sequence_no', 'ASC');
        $query = $this->db->get(TBL_VIDEO_GALLERY . ' vg');
        return $query->result();
    }

    function get_all_active_videos() {
        $this->db->select("vg.*, vc.cat_name, d.doc_name");
        $this->db->where('vg.status', '1');
        $this->db->where('vg.publish', '1');
        $this->db->join('video_category vc', 'vc.id = vg.video_cat_id', 'LEFT');
        $this->db->join('doc_profile d', 'd.id = vg.doctor_id', 'LEFT');  
        $this->db->order_by('vg.sequence_no', 'ASC');
        $query = $this->db->get(TBL_VIDEO_GALLERY . ' vg');
        return $query->result();
    }
}