<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 25/12/2015
 * Time: 2:22 CH
 */
if (!defined('BASEPATH')) exit('No direct script access allowed');

class CmsTrack extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        date_default_timezone_set("Asia/Ho_Chi_Minh");
        //
        $this->load->model('track_model');
        $this->load->model('user_model');
        $this->load->model('actionlog_model');
    }

    public function listTrack()
    {
        $this->_data['functionName'] = 'Track';
        $this->_data['action'] = 'listTrack';
        $this->_data['titlePage'] = 'Track';
        $this->_data['loadPage'] = 'backend/cms_track/list_track_view';
        $this->load->view('backend/admin_template_view', $this->_data);
    }

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

    public function editTrack($track_id, $id_user = '', $id_artist = '')
    {
        $this->_data['contest'] = $track = $this->track_model->getById($track_id);
        $track_user = '';
        $this->_data['track_artists'] = $track_artists = '';
        if ($id_user != 0) {
            $track_user = $this->track_model->getByIdUser('track_user', $id_user);
        $this->_data['track_user'] = $track_user;
        }
        if ($id_artist != 0) {
            $track_artists = $this->track_model->getByIdUser('track_artists', $id_artist);
            $this->_data['track_artists'] = $track_artists;
        }
        $this->_data['list_user'] = $list_user = $this->track_model->getListUsers();
        // print_r($id_user.'Nhạc sĩ'.$id_artist);
        // Kiểm tra trùng giá trị nếu thay đổi ở form

        //Thiết lập validate
        $this->form_validation->set_rules(
            'id',
            'ID',
            'trim'
        );

        $this->form_validation->set_rules(
            'title',
            'Tên bài hát',
            'trim|required|xss_clean'
        );

        $this->form_validation->set_message('required', '<li>Bắt buộc nhập, chọn.</li>');
        $this->form_validation->set_message('is_unique', '<li>Đã tồn tại.</li>');
        
        // Xử lý form đăng nhập
        if($this->form_validation->run($this) == false) {
            // $this->_data['date_limit'] = $this->input->post('name');
            $this->_data['title'] = $this->input->post('title');
            $this->_data['update_singer'] = $this->input->post('update_singer');
            
            $this->_data['singer'] = $this->input->post('singer');
            $this->_data['artist'] = $this->input->post('artist');
            $this->_data['update_artist'] = $this->input->post('update_artist');
            $this->_data['functionName'] = 'Cập nhật thông tin';
            $this->_data['action'] = 'editTrack';
            $this->_data['titlePage'] = 'Cập nhật thông tin';
            $this->_data['loadPage'] = 'backend/cms_track/edit_track_view';
            $this->load->view('backend/admin_template_view', $this->_data);
        } else {
            
            $title = $this->input->post('title');
            $update_singer = $this->input->post('update_singer');
            $singer = ($track_user != '') ? $track_user[0]['user_id']: '';
            $artist = ($track_artists != '') ? $track_artists[0]['user_id']: '';
            $update_artist = $this->input->post('update_artist');
            $file = $_FILES['avatar']['name'];
            $id_singer = ($update_singer > 0) ? $update_singer: $singer;
            $id_artists = ($update_artist > 0) ? $update_artist: $artist;
            ($singer || $id_user) ? $active_singer = 'update': $active_singer = 'insert';
            ($artist || $id_artist) ? $active_artist = 'update': $active_artist = 'insert';
            // die($active_artist.$active_singer.'ca sĩ'.$id_singer.'/'.$singer.'nhạc sĩ'.$id_artists.'/'.$artist);
            // Xử lý upload: avatar
            if($file != ''){
                // MyHelper::echoPreDie('1230');
                $db_art_path = '';
                $upload_path = 'uploads/tracks/arts';
                $upload_full_path = '/home/aseanvn/public_html/vmusicchart.dcv.vn/' . $upload_path;
                $config['upload_path']          = $upload_full_path;
                $config['file_name'] =  md5($track_id.time());
                $config['allowed_types']        = 'gif|jpg|png|jpeg';
                $config['max_size']             = 20480;
                $config['max_width']            = 1024;
                $config['max_height']           = 768;

                $this->load->library('upload', $config);
                // if()
                if ($this->upload->do_upload('avatar')) {
                    $upload_data = $this->upload->data();
                    // MyHelper::echoPreDie('ac: '.$$upload_data);
                    $db_art_path = $upload_path . '/' . $upload_data['file_name'];
                }
                $this->track_model->update($track_id, $title, $db_art_path);
            } else {
                $art = $track[0]['art'];
                $this->track_model->update($track_id, $title, $art);
            }
            // MyHelper::echoPreDie($config);
            $this->track_model->update_track_artists($track_id, $id_artists, $id_artist, $active_artist);
            $this->track_model->update_track_user($track_id, $id_singer, $id_user, $active_singer);
            

            $this->session->set_flashdata('success', 'Tạo bài hát thành công');
            redirect(base_url().'backend/cmsTrack/showTrack/'.$track_id);
        }
    }

    //Thêm bài hát mới
    public function addTrack()
    {
        $this->_data['list_user'] = $list_user = $this->track_model->getListUsers();
        // Thiết lập validate
        $this->form_validation->set_rules(
            'id',
            'ID',
            'trim'
        );

        $this->form_validation->set_rules(
            'title',
            'Tên bài hát',
            'trim|required|callback_check_title|xss_clean'
        );

        $this->form_validation->set_rules(
            'singer',
            'Ca sĩ',
            'trim|required|callback_check_default|xss_clean'
        );
        $this->form_validation->set_rules(
            'artist',
            'Sáng tác',
            'trim|required|callback_check_default|xss_clean'
        );
        $this->form_validation->set_rules(
            'nct_id',
            'ID bài hát trên nhạc của tui',
            'callback_check_nct_id|xss_clean'
        );

        $this->form_validation->set_message('required', '<li class="list-unstyled">Bắt buộc nhập, chọn.</li>');
        $this->form_validation->set_message('is_unique', '<li class="list-unstyled">Đã tồn tại.</li>');
        // Xử lý form đăng nhập
        if($this->form_validation->run($this) == false) {
            $this->_data['title'] = $this->input->post('title');
            $this->_data['singer'] = $this->input->post('singer');
            $this->_data['artist'] = $this->input->post('artist');
            $this->_data['avatar'] = $this->input->post('avatar');
            $this->_data['source'] = $this->input->post('source');
            $this->_data['src_option'] = $this->input->post('src_option');
            $this->_data['link'] = $this->input->post('link');
            $this->_data['nct_id'] = $this->input->post('nct_id');


            $this->_data['functionName'] = 'Tạo mới Bài hát';
            $this->_data['action'] = 'addTrack';
            $this->_data['titlePage'] = 'Tạo mới Bài hát';
            $this->_data['loadPage'] = 'backend/cms_track/add_track_view';
            $this->load->view('backend/admin_template_view', $this->_data);
        }else{
            // $username = $this->input->post('username');
            $title = $this->input->post('title');
            $singer = $this->input->post('singer');
            $artist = $this->input->post('artist');
            $link = $this->input->post('link');
            $source = $this->input->post('source');
            $nct_id = $this->input->post('nct_id');

            if($title){
                $slug = MyHelper::genSlug($title);
            $dataUpdate = array(
                'title' => $title,
                'userid' => $artist,
                'link' => ($source == 'zing')? $link : '',
                'link_nct' => ($source == 'nct')? $link : '',
                'link_keeng' => ($source == 'keeng')? $link : '',
                'id_nct' => $nct_id,
                'slug' => $slug,
                'tag' => 'vmusic',
                'genre' => 1,
                'time' => time()
            );
            $insert_id = $this->track_model->add($dataUpdate);
            if ($insert_id) {
                    // Xử lý upload: avatar
                $db_art_path = '';
                $upload_path = 'uploads/tracks/arts';
                $upload_full_path = '/home/aseanvn/public_html/vmusicchart.dcv.vn/' . $upload_path;
                $config['upload_path']          = $upload_full_path;
                $config['file_name'] =  md5($insert_id.time());
                $config['allowed_types']        = 'gif|jpg|png|jpeg';
                $config['max_size']             = 20480;
                $config['max_width']            = 1024;
                $config['max_height']           = 768;

                $this->load->library('upload', $config);

                if ($this->upload->do_upload('avatar')) {
                    $upload_data = $this->upload->data();
                    $db_art_path = $upload_path . '/' . $upload_data['file_name'];
                }
                $this->track_model->update($insert_id, $title, $db_art_path);
                $this->track_model->add_singer($singer,$insert_id);
                $this->track_model->add_artist($artist, $insert_id);
            }
                // Ghi log
                // $this->mactionlog->add('UPDATED', 'Cập nhật Cuộc đua thành công!', 'Mactionlog', 'action_log', $contest_id);
                //
                $this->session->set_flashdata('success', 'Tạo Bài hát thành công');
            }else{
                $this->session->set_flashdata('error', 'Tạo Bài hát không thành công');
            }
            redirect(base_url().'backend/cmsTrack/listTrack');
        }
    }

    public function addSinger($track_id)
    {
        $this->_data['track'] = $contest = $this->track_model->getById($track_id);
        $this->_data['list_user'] = $list_user = $this->track_model->getListUsers();

        $this->form_validation->set_rules(
            'singer',
            'Ca sĩ',
            'trim|required|callback_check_default|xss_clean'
        );

        $this->form_validation->set_message('required', '<li class="list-unstyled">Bắt buộc nhập, chọn.</li>');
        $this->form_validation->set_message('is_unique', '<li class="list-unstyled">Đã tồn tại.</li>');
        // Xử lý form đăng nhập
        if($this->form_validation->run($this) == false) {
            $this->_data['singer'] = $this->input->post('singer');
        
            $this->_data['functionName'] = 'Thêm Người thể hiện vào bài hát';
            $this->_data['action'] = 'addSinger';
            $this->_data['titlePage'] = 'Thêm Người thể hiện vào bài hát';
            $this->_data['loadPage'] = 'backend/cms_track/add_singer_view';
            $this->load->view('backend/admin_template_view', $this->_data);
        } else {
            $singer = $this->input->post('singer');

            $this->track_model->add_singer($singer,$track_id);

            $this->session->set_flashdata('success', 'Thêm ca sĩ vào bài hát thành công');
        }
    }
    
    public function showTrack($track_id)
    {
        $this->_data['track']= $this->track_model->getById($track_id);
        //
        $this->_data['functionName'] = 'Thông tin Bài Hát';
        $this->_data['action'] = 'showTrack';
        $this->_data['titlePage'] = 'Thông tin Bài Hát';
        $this->_data['loadPage'] = 'backend/cms_track/show_track_view';
        $this->load->view('backend/admin_template_view', $this->_data);
    }

    // Tên bài hát tồn tại hay chưa
    public function check_title($title)
    {
        if ($this->input->post('id')) {
            $id = $this->input->post('id');
        }
        else {
            $id = '';
        }
        $result = $this->track_model->getByTitle($title, $id);
        if($result) {
            $this->form_validation->set_message('check_title', '<li class="list-unstyled">Bài hát đã tồn tại.</li>');
           return false;
        }else{
            return TRUE;
        }
    }

    // kiểm tra đã chọn ca sĩ/nhạc sĩ
    public function check_default($value)
    {
        if ($value == '0') {
            $this->form_validation->set_message('check_default', '<li class="list-unstyled">Vui lòng chọn ca sĩ hoặc sáng tác.</li>');
           return false;
        } else
        return TRUE;
    }

    // kiểm tra id_nct khác null
    public function check_nct_id($nct_id)
    {
        $source = $this->input->post('source');
        if($nct_id == '' && $source == 'nct') {
            $this->form_validation->set_message('check_nct_id', '<li class="list-unstyled">Vui lòng nhập ID bài hát trên NCT.</li>');
           return false;
        } else
        return TRUE;
    }

}