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

class Crawler_listen_history_model extends CI_Model
{
    protected $_table = 'crawler_listen_histories';
    protected $_table_view = 'listen_history_view';

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

    /**
     * Lấy lịch sử lượt nghe của bài hát theo ID
     *
     * @param $track_id
     * @return mixed
     */
    public function getByTrackId($track_id)
    {
        $this->db->select($this->_table . '.*');
        $this->db->from($this->_table);
        $this->db->where($this->_table . '.track_id', $track_id);
        $this->db->order_by($this->_table . '.date_log', 'asc');
        $query = $this->db->get();

        return $query->result_array();
    }

    /**
     * Lấy lịch sử lượt nghe của bài hát theo ID từ views
     *
     * @param $track_id
     * @return mixed
     */
    public function getByTrackIdFromView($track_id)
    {
        $this->db->select($this->_table_view . '.*');
        $this->db->from($this->_table_view);
        $this->db->where($this->_table_view . '.track_id', $track_id);
        $query = $this->db->get();

        return $query->result_array();
    }

    /**
     * Hàm thực hiện reset lượt nghe lịch sử ở nguồn và track id tương ứng
     * khi user tích chọn không lấy lượt nghe ở nguồn src nào đó
     * Lưu ý: ko reset được tổng lượt nghe, nên dùng trigger để xử lý
     *
     * @param $track_id
     * @param $src
     * @return bool
     */
    public function resetCrawlerListenHistoryBySrc($track_id, $src)
    {
        try {
            $this->db->select($this->_table . '.*');
            $this->db->from($this->_table);
            $this->db->where($this->_table . '.track_id', $track_id);
            $query = $this->db->get();
            $history = $query->result_array();
            //
            if (isset($history[0])) {
                switch ($src) {
                    case 'zing':
                        $data_reset = [
                            'alltime_zing' => 0,
                            'zing_count' => 0,
                            'updated_at' => date('Y-m-d H:i:s')
                        ];
                        break;
                    case 'nct':
                        $data_reset = [
                            'alltime_nct' => 0,
                            'nct_count' => 0,
                            'updated_at' => date('Y-m-d H:i:s')
                        ];
                        break;
                    case 'keeng':
                        $data_reset = [
                            'alltime_keeng' => 0,
                            'keeng_count' => 0,
                            'updated_at' => date('Y-m-d H:i:s')
                        ];
                        break;
                    default:
                        $data_reset = [];
                }
                if (count($data_reset) > 0) {
                    $this->db->where('track_id', $track_id);
                    $this->db->update($this->_table, $data_reset);
                    //
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        } catch (Exception $e) {
            return false;
        }
    }

}

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