<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 25/12/2015
 * Time: 2:22 CH
 */
if (!defined('BASEPATH')) exit('No direct script access allowed');
require_once APPPATH."/third_party/PHPExcel.php";
class CmsRanking extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        date_default_timezone_set("Asia/Ho_Chi_Minh");
        //
        $this->load->model('track_model');
        $this->load->model('report_views_daily_model');
        $this->load->model('report_views_weekly_model');
        $this->load->model('report_views_monthly_model');
    }

    public function listByDaily()
    {
        $this->_data['functionName'] = 'BXH theo ngày';
        $this->_data['action'] = 'listByDaily';
        $this->_data['titlePage'] = 'BXH theo ngày';
        $this->_data['loadPage'] = 'backend/cms_ranking/list_by_daily_view';
        $this->load->view('backend/admin_template_view', $this->_data);
    }

    public function listByDailyAjax()
    {
        $data = array();
        $fByName = $this->input->post('fByName');
        $pageId = $this->input->post('pageId');
        //
        $pageId = ($pageId == 0) ? 1 : $pageId;
        //
        $limit = 100;
        $offset = ($pageId - 1) * $limit;
        $data['offset'] = ($pageId - 1) * $limit;
        $totalRecord = $this->report_views_daily_model->cmsCountAll($fByName);
        $data['pagination'] = MyHelper::genPaginationLink($totalRecord, $limit, $pageId);
        $data['listData'] = $this->report_views_daily_model->cmsGetPagination($limit, $offset, $fByName);
        //
        $this->load->view('backend/ajax/cms_ranking/list_by_daily_view', $data);
    }

    /**
     * BXH theo tuần ---------------------------------------------------------------------------------------------------
     */
    public function listByWeekly()
    {
        $this->_data['functionName'] = 'BXH theo tuần';
        $this->_data['action'] = 'listByDaily';
        $this->_data['titlePage'] = 'BXH theo tuần';
        $this->_data['loadPage'] = 'backend/cms_ranking/list_by_weekly_view';
        $this->load->view('backend/admin_template_view', $this->_data);
    }

    public function listByWeeklyAjax()
    {
        $data = array();
        $fByName = $this->input->post('fByName');
        $pageId = $this->input->post('pageId');
        //
        $pageId = ($pageId == 0) ? 1 : $pageId;
        //
        $limit = 100;
        $offset = ($pageId - 1) * $limit;
        $data['offset'] = ($pageId - 1) * $limit;
        $totalRecord = $this->report_views_weekly_model->cmsCountAll($fByName);
        $data['pagination'] = MyHelper::genPaginationLink($totalRecord, $limit, $pageId);
        $data['listData'] = $this->report_views_weekly_model->cmsGetPagination($limit, $offset, $fByName);
        //
        
        // print_r($fByName);
        $this->load->view('backend/ajax/cms_ranking/list_by_weekly_view', $data);
    }

    /**
     * BXH theo tháng --------------------------------------------------------------------------------------------------
     */
    public function listByMonthly()
    {
        $this->_data['functionName'] = 'BXH theo tháng';
        $this->_data['action'] = 'listByDaily';
        $this->_data['titlePage'] = 'BXH theo tháng';
        $this->_data['loadPage'] = 'backend/cms_ranking/list_by_monthly_view';
        $this->load->view('backend/admin_template_view', $this->_data);
    }

    public function listByMonthlyAjax()
    {
        $data = array();
        $fByName = $this->input->post('fByName');
        $pageId = $this->input->post('pageId');
        //
        $pageId = ($pageId == 0) ? 1 : $pageId;
        //
        $limit = 100;
        $offset = ($pageId - 1) * $limit;
        $data['offset'] = ($pageId - 1) * $limit;
        $totalRecord = $this->report_views_monthly_model->cmsCountAll($fByName);
        $data['pagination'] = MyHelper::genPaginationLink($totalRecord, $limit, $pageId);
        $data['listData'] = $this->report_views_monthly_model->cmsGetPagination($limit, $offset, $fByName);
        //
        $this->load->view('backend/ajax/cms_ranking/list_by_monthly_view', $data);
    }

    public function exportExcel() {
        
        $data = array();
        $fByName = $this->input->post('fByName');
        //
        print_r($fByName);
        $limit = 100;
        $data = $this->report_views_monthly_model->cmsGetPagination($limit, '', $fByName);
        //Khởi tạo đối tượng
        $excel = new PHPExcel();
        //Chọn trang cần ghi (là số từ 0->n)
        $excel->setActiveSheetIndex(0);
        //Tạo tiêu đề cho trang. (có thể không cần)
        $excel->getActiveSheet()->setTitle('demo ghi dữ liệu');

        //Xét chiều rộng cho từng, nếu muốn set height thì dùng setRowHeight()
        $excel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
        $excel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
        $excel->getActiveSheet()->getColumnDimension('C')->setWidth(30);

        //Xét in đậm cho khoảng cột
        $excel->getActiveSheet()->getStyle('A1:C1')->getFont()->setBold(true);
        //Tạo tiêu đề cho từng cột
        //Vị trí có dạng như sau:
        /**
         * |A1|B1|C1|..|n1|
         * |A2|B2|C2|..|n1|
         * |..|..|..|..|..|
         * |An|Bn|Cn|..|nn|
         */
        $excel->getActiveSheet()->setCellValue('A1', 'Tên Bài Hát');
        $excel->getActiveSheet()->setCellValue('B1', 'Ca Sĩ');
        $excel->getActiveSheet()->setCellValue('C1', 'Tổng điểm');
        // thực hiện thêm dữ liệu vào từng ô bằng vòng lặp
        // dòng bắt đầu = 2
        $numRow = 2;
        foreach ($data as $row) {
            $excel->getActiveSheet()->setCellValue('A' . $numRow, $row['name_song']);
            $excel->getActiveSheet()->setCellValue('B' . $numRow, $row['all_name']);
            $excel->getActiveSheet()->setCellValue('C' . $numRow, $row['total_point']);
            $numRow++;
        }
        // Khởi tạo đối tượng PHPExcel_IOFactory để thực hiện ghi file
        // ở đây mình lưu file dưới dạng excel2007header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=$fByName");
        PHPExcel_IOFactory::createWriter($excel, 'Excel5')->save('php://output');
    }

} 