<?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');
    }

    public function profile() {
        $user_info = $this->session->userdata('userInfo');
        if ($user_info) {
            $this->load->model('servicepackage_model');
            $user = $user_info['user'];
            $us_id = $user_info['us_id'];
            $src = "SBG";
            $token = md5($us_id . self::TOKENPW);
            $data = $this->get_data($src, $token, $us_id);
            $data['current_tab']=$this->uri->segment(4,'edit-basic');
            $data['packages'] = $this->servicepackage_model->getAllPackages();
            $this->load->view('frontend/user_profile', $data);
        } else {
            redirect('frontend/home');
        }
    }

    public function packageRegister() {
        $result = array();
        $input = $this->input->post();
        $this->load->model('user_model');
        $user_info = $this->session->userdata('userInfo');
        if ($user_info) {
            parse_str($user_info['user'], $info);
            $this->load->model('servicepackage_model');
            
            $package = $this->servicepackage_model->getPackage($input['p_id']);
            $user = $user_info['user'];
            $us_id = $user_info['us_id'];
            $user = $this->user_model->get_user_by_id($us_id);
            $result['can_buy'] = 1;
            $result['can_edit'] = 0;
            if ($user['acc_balanced'] < $package['p_price']) {
                $result['can_buy'] = 0;
            }
            if ($user['p_id'] < 1) {
                $result['can_edit'] = 1;
            }
            $result['info'] = $info;
            $result['user'] = $user;
            $result['package'] = $package;
            $result['modal'] = $this->load->view('frontend/package_register_modal', $result, true);
        } else {
            
        }
        echo json_encode($result);
    }

    public function finishRegisterPackage() {
        $result = array();
        $result['success'] = 0;
        $this->load->model('user_model');
        $input = $this->input->post();
        $user_info = $this->session->userdata('userInfo');
        parse_str($user_info['user'],$info);
        if (isset($input['fullname'])) {
            if (strlen($input['fullname']) < 10) {
                $result['errors'][] = "Vui lòng nhập tên đầy đủ tối thiểu 10 kí tự";
            }
            if (strlen($input['school']) < 10) {
                $result['errors'][] = "Vui lòng nhập đơn vị quí vị đang công tác tối thiểu 10 kí tự";
            }
            if (!isset($result['errors'])) {
                $user_info = $this->session->userdata('userInfo');
                if ($user_info) {
                    
                    $src = "SBG";
                    $us_id=$user_info['us_id'];
                    $input['password'] = '';
                    $input['oldpass'] = '';
                    $input['gender'] = '';
                    $input['email'] ='';
                    $input['province'] = '';
                    $info['fullname']=$input['fullname'];
                    $info['school']=$input['school'];
                    $token = md5($us_id . self::TOKENPW);
                    $user = $this->get_data($src, $token, $us_id);
                    if ($input) {
                        $this->load->model('user_model');
                        $update = $this->user_model->update_user($src, $token, $input, $us_id);
                        $info= urldecode(http_build_query($info));
                        $userdata = array('username' => $user_info['username'], 'user' => $info, 'us_id' => $user_info['us_id'], 'logined_in' => TRUE);
                        $this->session->set_userdata('userInfo', $userdata);
                    }
                }
            }
        }
        if (isset($result['errors'])) {
            echo json_encode($result);
            die();
        }
        $this->load->model('servicepackage_model');
        $us_id = $user_info['us_id'];
        $user = $this->user_model->get_user_by_id($us_id);
        $package = $this->servicepackage_model->getPackage($input['p_id']);
        $user['acc_balanced']=$user['acc_balanced']-$package['p_price'];
       
        if ($package['p_unit']=="months")
        {
        $user['expire_date']=date('Y-m-d 00:00:00', strtotime("+".$package['p_period']." months", strtotime($user['expire_date'])));
        }
        if ($package['p_unit']=="days")
        {
        $user['expire_date']=date('Y-m-d 00:00:00', strtotime("+3 days", strtotime($user['expire_date'])));
        }
        $user['expire_date']=date("Y-m-d 00:00:00",  (strtotime($user['expire_date'])-1));
        $user['p_id']=$package['p_id'];
        $this->user_model->updateUser($us_id,$user);
        $user['expire_date']=date("d-m-Y",  (strtotime($user['expire_date'])));
        $result['expire_date']=$user['expire_date'];
        $result['success'] = 1;
        echo json_encode($result);
        
    }
    

    private function get_data($src, $token, $us_id) {
        $this->load->model('user_model');
        $user = $this->user_model->get_user_info($src, $token, $us_id);

        if (strpos($user, '&')) {
            parse_str($user);
            $us = $this->user_model->get_user_by_id($us_id);
            $data = array('us_id' => $us_id, 'username' => $username, 'fullname' => $fullname,
                'gender' => $gender, 'email' => $email, 'phone' => $phone, 'school' => $school, 'province' => $province,
                'acc_balanced' => $us['acc_balanced'], 'expire_date' => $us['expire_date'], 'date_diff' => $this->dateDiff($us['expire_date'])
            );
            return $data;
        } else {
            return "";
        }
    }

    private function dateDiff($expire_date) {
        $date1 = date("Y-m-d");
        if ((strtotime($expire_date) - strtotime($date1)) < 0)
            return "0 ngày còn lại";
        $diff = strtotime($expire_date) - strtotime($date1);
        $years = floor($diff / (365 * 60 * 60 * 24));
        $months = floor(($diff - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
        $days = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24));
        if ($years > 0) {
            return $years . " năm, " . $months . " tháng, " . $days . " ngày còn lại";
        } else {
            if ($months > 0) {
                return $months . " tháng, " . $days . " ngày còn lại";
            } else {
                return $days . " ngày còn lại";
            }
        }
    }
    public function test()
    {
        $user_info = $this->session->userdata('userInfo');
        echo "<pre>";
        print_r ($user_info);
        echo "</pre>";
    }
    public function update_user() {
        $this->load->helper('email');
        $us_id = $this->uri->segment(4);
        $user_info = $this->session->userdata('userInfo');
       
        if ($user_info) {
            $result = array();
            $result['success'] = 0;
            $src = "SBG";
            $token = md5($us_id . self::TOKENPW);
            $user = $this->get_data($src, $token, $us_id);
            $input = $this->input->post();
            if ($input) {
                $input['username'] = $user['username'];
                $input['fullname'] = $user['fullname'];
                $input['password'] = '';
                $input['oldpass'] = '';
                $this->load->model('user_model');
                $result['fullname'] = $input['fullname'];
                if (strlen($input['email']) > 0) {
                    if (!valid_email($input['email'])) {
                        $result['errors']['email_err'] = "Email không đúng định dạng";
                    }
                }
                if (!isset($result['errors'])) {
                    $result['data'] = $this->user_model->update_user($src, $token, $input, $us_id);
                    $result['success'] = 1;
                }
                echo json_encode($result);
            }
        } else {
            redirect('frontend/home');
        }
	private function get_data($src, $token, $us_id)
	{
		$this->load->model('user_model');
		$user = $this->user_model->get_user_info($src, $token, $us_id);
		
		if (strpos($user, '&')){
			parse_str($user);
			$us = $this->user_model->get_user_by_id($us_id);
			$data = array('us_id'=>$us_id, 'username'=>$username, 'fullname'=>$fullname,
						'gender'=>$gender, 'email'=>$email, 'phone'=>$phone, 'school'=>$school, 'province'=>$province,
						'acc_balanced'=>$us['acc_balanced'], 'expire_date'=>date('d/m/Y', strtotime($us['expire_date'])), 'date_diff'=>$this->dateDiff($us['expire_date']), 'use_package'=>$us['use_package']
					);
			return $data;
		}else
		{
			return "";
		}
	}
	
	private function dateDiff($expire_date)
	{
		$date1 = date("Y-m-d");
		if ((strtotime($expire_date) - strtotime($date1))<0) return "0 ngày còn lại";
		$diff = strtotime($expire_date) - strtotime($date1);
		$years = floor($diff / (365*60*60*24));
		$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
		$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
		if ($years>0){
			return $years." năm, ".$months." tháng, ".$days." ngày còn lại";
		}
		else{
			if ($months>0)
			{
				return  $months." tháng, ".$days." ngày còn lại";
			}
			else
			{
				return $days." ngày còn lại";
			}
		}
		
	}
	
	public function update_user()
	{
		$us_id=$this->uri->segment(4);
		$user_info = $this->session->userdata('userInfo');
		if ($user_info)
		{
			$result = array();
			$result['success'] = 0;
			$src = "SBG";
			$token = md5($us_id.self::TOKENPW);
			$user = $this->get_data($src, $token, $us_id);
			$input = $this->input->post();
			if ($input){
				$input['username'] = $user['username'];
				if (array_key_exists('fullname', $input))
				{
					if (strlen($input['fullname'])==0)
					{
						$result['errors']['fullname_err'] = "Họ tên không được để trống !";
					}
				}else
				{
					$input['fullname'] = $user['fullname'];
				}
				/*
				if ($strlen($input['school']) == 0)
				{
					$result['errors']['school_err'] = "Đơn vị không được để trống !";
				}
				if ($strlen($input['province']) == 0)
				{
					$result['errors']['province_err'] = "Tỉnh/thành không được để trống !";
				}*/
				$input['password'] = '';
				$input['oldpass'] = '';
				$this->load->model('user_model');
				//$result['fullname'] = $input['fullname'];
				if (!isset($result['errors'])){
					$result['data'] = $this->user_model->update_user($src, $token, $input, $us_id);
					$result['success'] = 1;
				}
				echo json_encode($result);
			}
			
		}else
		{
			redirect('frontend/home');
		}
	}
	
	public function change_password()
	{
		$us_id=$this->uri->segment(4);
		$user_info = $this->session->userdata('userInfo');
		if ($user_info)
		{
			$this->load->model('user_model');
			$us_id = $user_info['us_id'];
			$src = "SBG";
			$token = md5($us_id.self::TOKENPW);
			$input = $this->input->post();
			if (strlen($input['passwd']) == 0)
			{
				$result['errors']['passwd_old_err'] = "Mật khẩu không được để trống !";
			}
			if (strlen($input['passwd_new']) == 0)
			{
				$result['errors']['passwd_new_err'] = "Mật khẩu không được để trống !";
			}else if($input['passwd'] == $input['passwd_new'])
			{
				$result['errors']['passwd_new_err'] = "Mật khẩu trùng với mật khẩu hiện tại !";
			}
			if ($input['passwd_new'] != $input['confirm_passwd_new'])
			{
				$result['errors']['confirm_passwd_new_err'] = "Mật khẩu không trùng nhau !";
			}
			if (!isset($result['errors']))
			{
				$user = array('username'=>$user_info['username'], 'fullname'=>null, 'gender'=>null, 'email'=>null, 'school'=>null, 'province'=>null, 'password'=>$input['passwd_new'], 'oldpass'=>$input['passwd']);
				$data = $this->user_model->update_user($src, $token, $user, $us_id);
				parse_str($data);
				switch($status)
				{
					case 0:
						$result['success'] = 1;
						break;
					case 6:
						$result['errors']['passwd_old_err'] = "Mật khẩu cung cấp không đúng !";
						break;
					default:
						break;
				}
			}
			
			echo json_encode($result);
		}else
		{
			redirect('frontend/home');
		}
	}
}