<?php

if (! defined ( 'BASEPATH' ))
	exit ( 'No direct script access allowed' );

class User extends MX_Controller {
	const TOKENPW = 'violet';
	public function __construct() {
		parent::__construct ();
		$this->load->helper ( 'cookie' );
		$this->load->helper('language');
		$this->lang->load('messages', 'message');
	}
	
	public function index() {
                
		$admin_info = $this->session->userdata ( 'adminInfo' );
		if ($admin_info) {
			$data ['content'] = $this->get_users ();
			$this->load->view ( 'user/index', $data );
		} else {
			$this->load->view ( 'login' );
		}
	}
	
	public function get_users() {
		$this->load->helper ( 'pagging' );
		$this->load->model ( 'user_model' );
		
		$provinces = lang('_PROVINCES_');
		error_log(var_export($provinces, TRUE), 3, '/srv/www/sbg/log/provinces.log');
		
		$data ['current_page'] = $this->uri->segment ( 4, 1 );
		$data ['itemsoptions'] = array (
				10,
				25,
				50,
				100 
		);
		$data ['perpage'] = 10;
		$data ['statusoptions'] = array (
				0 => "Tất cả",
				1 => "Đã đăng ký VIP",
				2 => "Dùng thử 7 ngày",
				3=> "Dùng thử hạn chế",
				4=> "Hết hạn"
		);
		$data ['status'] = 0;
		if ($this->input->post ( 'status' )) {
			$data ['status'] = ( int ) $this->input->post ( 'status' );
		}
		$data['provinces'] = $provinces;
		$data['province'] = '';
		if ($this->input->post ( 'province' )) {
			$data ['province'] = $this->input->post ( 'province' );
		}
		if ($data['province'])
			$data['districts'] = $this->user_model->getDistrictByProvince($data ['province']);
		if ($this->input->post ( 'district' )) {
			$data['district'] = $this->input->post ( 'district' );
		}
		$data ['keyword'] = "";
		$data ['sorting_order'] = "sorting_desc";
		$data ['sorting_field'] = "created_time";
		if ($this->input->post ( 'sorting_order' )) {
			if ($this->input->post ( 'sorting_ord	er' ) != "sorting") {
				$data ['sorting_order'] = $this->input->post ( 'sorting_order' );
				$data ['sorting_field'] = $this->input->post ( 'sorting_field' );
			}
		}
		if ($this->input->post ( 'items' )) {
			$data ['perpage'] = $this->input->post ( 'items' );
		}
		if ($this->input->post ( 'keyword' )) {
			$data ['keyword'] = $this->input->post ( 'keyword' );
		}
		$data ['daterange_start'] = "";
		$data ['daterange_end'] = "";
		if ($this->input->post ( 'daterange' )) {
			$daterange = explode ( " - ", $this->input->post ( 'daterange' ) );
			$daterange [0] = str_replace ( '/', '-', $daterange [0] );
			$daterange [1] = str_replace ( '/', '-', $daterange [1] );
			$data['date_start'] = $daterange [0];
			$data['date_end'] = $daterange [1];
			$data ['daterange_start'] = date ( 'Y-m-d H:i:s', strtotime ( $daterange [0] ) );
			$data ['daterange_end'] = date ( 'Y-m-d H:is:s', strtotime ( $daterange [1] . ' + 1 day' ) );
		}
		$data ['start'] = ($data ['current_page'] - 1) * $data ['perpage'];
		$data ['total'] = $this->user_model->get_total_users ( $data );
		$us = $this->user_model->get_list_users ( $data );
		$users = array ();
		
		foreach ( $us as $u ) {
			$dist = $this->user_model->getDistrictByIdAndProvince($u['district'], $u['province']);
			$u['district_name'] = $dist['type']." ".$dist['district_name'];
			$u ['province'] = isset($provinces[$u ['province']]) ? $provinces[$u ['province']] : $u ['province'];
			
			$userinfo = $this->get_userinfo ( $u ['us_id'] );
			if ($userinfo) {
				$u ['username'] = $userinfo ['username'];
				$u['fullname'] = $userinfo['fullname'];
			}
			array_push ( $users, $u );
		}
		
		$data ['users'] = $users;
		$data ['paging_url'] = base_url () . "admin/nguoi_dung/trang/";
		$data ['num_links'] = 2;
		$data ['paging'] = pagging ( $data );
		
		if ($this->input->is_ajax_request ()) {
			return $this->load->view ( 'user/listview', $data );
		}
		return $this->load->view ( 'user/listview', $data, true );
	}
	
	public function edit_user() {

		$admin_info = $this->session->userdata ( 'adminInfo' );
		if ($admin_info) {
			$input = $this->input->post ();
			$result = array ();
			$result ['success'] = 0;
			$us_id = ( int ) $this->uri->segment ( 4, 0 );
			if ($us_id == 0) {
				$result ['success'] = 0;
			} else {
				$this->load->model ( 'user_model' );
				$input ['updated_time'] = date ( "Y-m-d H:i:s" );
				$this->user_model->update ( $us_id, $input );
				$result ['success'] = 1;
			}
			echo json_encode ( $result );
		} else {
			$this->load->view ( 'login' );
		}
	}
	
	public function delete_user() {
		$admin_info = $this->session->userdata ( 'adminInfo' );
		if ($admin_info) {
			$result = array ();
			$result ['success'] = 0;
			$us_id = ( int ) $this->uri->segment ( 4, 0 );
			if ($us_id == 0) {
				$result ['success'] = 0;
			} else {
				$this->load->model ( 'user_model' );
				$this->user_model->delete ( $us_id );
				$result ['success'] = 1;
			}
			echo json_encode ( $result );
		} else {
			$this->load->view ( 'login' );
		}
	}
	
	public function get_user_by_id() {
		$admin_info = $this->session->userdata ( 'adminInfo' );
		if ($admin_info) {
			$result = array ();
			$result ['success'] = 0;
			$us_id = ( int ) $this->uri->segment ( 4, 0 );
			if ($us_id == 0) {
				$result ['success'] = 0;
			} else {
				$this->load->model ( 'user_model' );
				$data = $this->user_model->search_by_id ( $us_id );
				$result ['item'] = $data;
				$result ['success'] = 1;
			}
			echo json_encode ( $result );
		} else {
			$this->load->view ( 'login' );
		}
	}
	
	private function get_userinfo($us_id) {
            
		$src = 'violet';
		$token = md5 ( $us_id . self::TOKENPW );
		$this->load->model ( 'user_model' );
		$data = $this->user_model->get_user_info ( $src, $us_id, $token );
		$result = array ();
		parse_str ( $data, $result );
		return $result;
	}
	
	public function export(){
		
		$this->load->helper ( 'pagging' );
		$this->load->model ( 'user_model' );
		$provinces = lang('_PROVINCES_');
	
		$data ['current_page'] = $this->uri->segment ( 4, 1 );
		$data ['itemsoptions'] = array (
				10,
				25,
				50,
				100 
		);

		$data ['perpage'] = $this->uri->segment (5, 10);
		$data ['statusoptions'] = array (
				0 => "Tất cả",
				1 => "Đã đăng ký VIP",
				2 => "Dùng thử 7 ngày",
				3=> "Dùng thử hạn chế",
				4=> "Hết hạn"
		);
		$data ['status'] = $this->uri->segment (7, 0);
		
		$data['provinces'] = $provinces;
		$data['province'] = $this->uri->segment (8);
		
		if ($data['province'] == 'default') $data['province'] = null;
		if ($data['province'])
			$data['districts'] = $this->user_model->getDistrictByProvince($data ['province']);

		$data['district'] = $this->uri->segment (9);
		if ($data['district'] == 'default') $data['district'] = null;
		$data ['keyword'] = $this->uri->segment (6);
		if ($data['keyword'] == 'default') $data['keyword'] = null;
		
		$data ['sorting_order'] = "sorting_desc";
		$data ['sorting_field'] = "created_time";
		$data ['sorting_order'] = $this->uri->segment (12);
		$data ['sorting_field'] = $this->uri->segment (13);

		$data ['daterange_start'] = $this->uri->segment (10);
		$data ['daterange_end'] = $this->uri->segment (11);
		if ($data['daterange_start'] == 'default') $data['daterange_start'] = null;
		if ($data['daterange_end'] == 'default') $data['daterange_end'] = null;
		if ($data['daterange_start'])
			$data['daterange_start'] = date ( 'Y-m-d H:i:s', strtotime ( $data ['daterange_start'] ) );
		if ($data['daterange_end'])
			$data['daterange_end'] = date ( 'Y-m-d H:i:s', strtotime ( $data['daterange_end'] . ' + 1 day' ) );

		$data ['start'] = ($data ['current_page'] - 1) * $data ['perpage'];
		//echo json_encode($data);
		$data ['total'] = $this->user_model->get_total_users ( $data );
		$us = $this->user_model->get_list_users ( $data );
		$users = array ();
		
		
		foreach ( $us as $u ) {
			$dist = $this->user_model->getDistrictByIdAndProvince($u['district'], $u['province']);
			$u['district_name'] = $dist['type']." ".$dist['district_name'];
			$u ['province'] = isset($provinces[$u ['province']]) ? $provinces[$u ['province']] : $u ['province'];
			
			$userinfo = $this->get_userinfo ( $u ['us_id'] );
			if ($userinfo) {
				$u ['username'] = $userinfo ['username'];
				$u['fullname'] = $userinfo['fullname'];
			}
			
			if (strtotime($u['expire_date']) > time() && $u['p_id'] != 5 ){
				$u['status'] = 'Đã đăng ký VIP';
			}elseif(strtotime($u['expire_date']) > time() && $u['p_id'] == 5){
				$u['status'] = 'Dùng thử 7 ngày';
			}elseif(strtotime($u['expire_date']) < time() && $u['p_id'] == 5){
				$u['status'] = 'Dùng thử hạn chế';
			}else{
				$u['status'] = 'Hết hạn';
			}
			
			array_push ( $users, $u );
		}
		
		$data ['users'] = $users;
		$data ['paging_url'] = base_url () . "admin/nguoi_dung/trang/";
		$data ['num_links'] = 2;
		$data ['paging'] = pagging ( $data );
		
		$this->load->library("PHPExcel");
        $sheet = $this->phpexcel->getActiveSheet();
		
        $sheet->setTitle("bao cao thue bao " . $data['month'] . " - " . $data['year']);
        $sheet->getColumnDimension('A')->setWidth(10);
        $sheet->getColumnDimension('B')->setWidth(25);
        $sheet->getColumnDimension('C')->setWidth(25);
        $sheet->getColumnDimension('D')->setWidth(15);
        $sheet->getColumnDimension('E')->setWidth(15);
        $sheet->getColumnDimension('F')->setWidth(15);
        $sheet->getColumnDimension('G')->setWidth(15);
        $sheet->getColumnDimension('H')->setWidth(25); 
        $sheet->getColumnDimension('I')->setWidth(25);
		
		
		$sheet->setCellValue('B1', "TẬP ĐOÀN VIỄN THÔNG QUÂN ĐỘI");
		$style = array(
			'font' => array('bold' => true, 'size' => 12, 'name' =>'Cambria', 'color' => array('rgb' => '0070bf')),
			'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
								'vertical' => \PHPExcel_Style_Alignment::VERTICAL_CENTER,
								'wrap' => true )
		);
		$sheet->mergeCells('B1:I1');
		$sheet->getStyle('B1')->applyFromArray($style);
		
		$sheet->setCellValue('B2', "TỔNG CÔNG TY VIỄN THÔNG VIETTEL");
		$style = array(
			'font' => array('size' => 12, 'name' =>'Cambria', 'color' => array('rgb' => '0070bf')),
			'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
								'vertical' => \PHPExcel_Style_Alignment::VERTICAL_CENTER,
								'wrap' => true )
		);
		$sheet->mergeCells('B2:I2');
		$sheet->getStyle('B2')->applyFromArray($style);
		
		
		$sheet->setCellValue('A4', "DANH SÁCH NGƯỜI DÙNG");
		$style = array(
			'font' => array('bold' => true, 'size' => 14, 'name' =>'Cambria'),
			'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
								'vertical' => \PHPExcel_Style_Alignment::VERTICAL_CENTER,
								'wrap' => true )
		);
		$sheet->mergeCells('A4:I4');
		$sheet->getStyle('A4')->applyFromArray($style);
		
		$sheet->setCellValue('A6', 'STT');
		$style = array(
			'font' => array('bold' => true, 'size' => 11, 'name' =>'Cambria'),
			'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
								'vertical' => \PHPExcel_Style_Alignment::VERTICAL_CENTER,
								'wrap' => true),
			'borders' =>	array(
				'allborders' => array(
					'style' => \PHPExcel_Style_Border::BORDER_THIN
					)
			)
		);
		$sheet->getStyle('A6')->applyFromArray($style);
		$style = array(
			'font' => array('bold' => true, 'size' => 11, 'name' =>'Cambria'),
			'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
								'vertical' => \PHPExcel_Style_Alignment::VERTICAL_CENTER,
								'wrap' => true),
			'borders' =>	array(
				'allborders' => array(
					'style' => \PHPExcel_Style_Border::BORDER_THIN
					)
			)
		);
		
		$sheet->setCellValue('B6', 'Số điện thoại');
		$sheet->setCellValue('C6', "Họ tên)");
		$sheet->setCellValue('D6', "Tài khoản SBG");
		$sheet->setCellValue('E6', "Ngày đăng ký");
		$sheet->setCellValue('F6', "Ngày hết hạn");
		$sheet->setCellValue('G6', "Tỉnh/Thành phố");
		$sheet->setCellValue('H6', "Quận/Huyện");
		$sheet->setCellValue('I6', "Tình trạng");
		$sheet->getStyle('A6:I6')->applyFromArray($style);
		
		$styleSTT = array(
			'font' => array('size' => 11, 'name' =>'Cambria'),
			'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
								'vertical' => \PHPExcel_Style_Alignment::VERTICAL_CENTER),
			'borders' =>	array(
				'allborders' => array(
					'style' => \PHPExcel_Style_Border::BORDER_THIN
					)
			)
		);
		$style = array(
			'font' => array('size' => 11, 'name' =>'Cambria'),
			'alignment' => array('vertical' => \PHPExcel_Style_Alignment::VERTICAL_CENTER),
			'borders' =>	array(
				'allborders' => array(
					'style' => \PHPExcel_Style_Border::BORDER_THIN
					)
			)
		);
		$dem = 0;
		foreach ($users as $index => $user):
			$sheet->setCellValue('A' . ($dem + 7), $index + 1);
			$sheet->setCellValueExplicit('B' . ($dem + 7), $user['username'], PHPExcel_Cell_DataType::TYPE_STRING);
            $sheet->setCellValue('C' . ($dem + 7), $user['fullname']);
            $sheet->setCellValue('D' . ($dem + 7), $user['acc_balanced']);
            $sheet->setCellValue('E' . ($dem + 7), date('d/m/Y', strtotime($user['created_time'])));
            $sheet->setCellValue('F' . ($dem + 7), isset($user['expire_date']) && strtotime($user['expire_date']) > 0 ? date('d/m/Y', strtotime($user['expire_date'])) : '');
            $sheet->setCellValue('G' . ($dem + 7), $user['province']);
            $sheet->setCellValue('H' . ($dem + 7), $user['district_name']);
			$sheet->setCellValue('I' . ($dem + 7), $user['status']);
			$sheet->getStyle('A' . ($dem + 7))->applyFromArray($styleSTT);
			$sheet->getStyle('B' . ($dem + 7).':I'.($dem + 7))->applyFromArray($style);
			
			
			$dem++;
		endforeach;
		
		$writer = new PHPExcel_Writer_Excel5($this->phpexcel);
		header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment; filename="danhsachnguoidung_trang_'.$data['current_page'].'.xls"');
        $writer->save('php://output');
		
	}
	
}