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

class User_model extends CI_Model
{
	
	const TOKENPW = 'violet';
	
	function __construct(){
        parent::__construct();
		$this->vservices->setApiUrl($this->config->item('api_url'));
		$this->vservices->setConnection($this->curl);
    } 
	
	function checkLogin ($src, $token, $username, $password) 
	{
		$data = $this->vservices->actionExecute('login', array('src' => $src, 'token' => $token, 'username' => $username, 'password' => $password), 'user');		
		$arr_users = explode("&", $data);
		$str_status = "";
		$str_fullname = "";
		$str_usid = "";
		$usid = "";
		$fullname = "";
		for ($i=0; $i<count($arr_users); $i++)
		{
			if (strpos($arr_users[$i], 'status=') !== false)
			{
				$str_status = $arr_users[$i];
			}
			
			if (strpos($arr_users[$i], 'fullname=') !== false)
			{
				$str_fullname = $arr_users[$i];
			}
			
			if (strpos($arr_users[$i], 'id=') !== false)
			{
				$str_usid = $arr_users[$i];
			}
		}
		$arr_status = explode("=", $str_status);
		if ($str_fullname != "")
		{
			$arr_fullname = explode("=", $str_fullname);
			$fullname = $arr_fullname[1];
		}
		if ($str_usid !== "")
		{
			$arr_usid = explode("=", $str_usid);
			$usid = $arr_usid[1];
		}
		$status = (int)$arr_status[1];
		if ($status == 0 || $status = 4){
			$us_id = (int)$usid;
			$query = "SELECT * FROM tbluser WHERE us_id = ?";
			$result = $this->db->query($query, array($us_id));
			if($result->num_rows() == 1){
				return $data;
			}else
			{
				return null;
			}
		}else
		{
			return $data;
		}
	}

	function register ($sentNumber, $receiverID, $serviceID, $commandcode, $info, $receiveTime, &$status)
	{
		$username = '';
		$collaborator = '';
		$username = $receiverID;
		$user = array();
		$smslog = array();
		$password = $this->create_random_password();
		$src = 'SBG';
		$username = '0'.substr($username, 2, strlen($username));
		$token = md5($username.self::TOKENPW);		
		$phone = $username;
		$data = $this->vservices->actionExecute('update', array('src'=>$src, 'username'=>$username, 'password'=>$password, 'fullname'=>null, 'phone'=>$username, 'token'=>$token), 'user');

		$id = 0;
		$errMsg = '';
		parse_str($data);
		$sms = "";
		
		switch((int)$status)
		{
			case 0:
				$us_id = $id;
				$user['created_time'] = $receiveTime;
				$user['us_id'] = $us_id;
				$user['cellphone'] = $username;
				$user['collaborator'] = $collaborator;
				$this->db->insert('tbluser', $user);
				
				$smslog['sender'] = $sentNumber;
				$smslog['us_id'] = $us_id;
				$smslog['service_id'] = $serviceID;
				$smslog['commandcode'] = $commandcode;
				$smslog['info'] = $info;
				$smslog['created_time'] = $receiveTime;
				$this->db->insert('tblsmslog', $smslog);
				$sms = "Chuc mung Qui vi da dang ky thanh cong tai khoan Soan Bai giang Online. Hay dang nhap vao soanbaigiang.smas.vn voi ten truy nhap ".$username.", mat khau ".$password." de su dung.";
				$status = 1;
				break;
			case 2:				
			case 4:
				$sms = "So dien thoai của Qui vi da duoc dang ky !";
				$status = 0;
				break;
			default:
				$status = 0;
				$sms = $errMsg;
				break;
		}
		
		return $status.'|'.$sms;
	}
	
	function create_random_password()
	{
		$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
		$pass = array();
		$alphaLength = strlen($alphabet) - 1;
		for ($i = 0; $i < 6; $i++) {
			$n = rand(0, $alphaLength);
			$pass[] = $alphabet[$n];
		}
		return implode($pass);
	}
	
	function get_user_by_id($us_id)
	{
		$this->db->select('*')->from('tbluser')->where('us_id', $us_id);
		$query = $this->db->get();
		if($query->num_rows() > 0)
		{
			$row = $query->row_array();
			return $row;
		}
	}
	
	function get_user_info($src, $token, $us_id)
	{
		$data = $this->vservices->actionExecute('getinfo', array('src' => $src, 'us_id' => $us_id, 'token'=>$token), 'user');
        return $data;
	}
	
	function update_user($src, $token, $user, $us_id)
	{
		$data = $this->vservices->actionExecute('update', array('src'=>$src, 'token'=>$token, 'us_id'=>$us_id, 
																'password'=>$user['password'], 'fullname'=>$user['fullname'], 'gender'=>$user['gender'],
																'email'=>$user['email'], 'school'=>$user['school'], 'province'=>$user['province'], 'oldpass'=>$user['oldpass']),
												'user');
		return $data;
								
	}
	
	function changeProfile($sentNumber, $receiverID, $password, $serviceID, $commandcode, $info, $receiveTime, &$status)
	{
		$username = '';
		$username = $receiverID;
		$user = array();
		$src = 'SBG';
		$us_id = 0;
		$errMsg = '';
		$sms = "";
		$this->db->select('*')->from('tbluser')->where('cellphone', $receiverID);
		$query = $this->db->get();
		if($query->num_rows() > 0)
		{
			$row = $query->row_array();
			$us_id = $row['us_id'];
			$token = md5($us_id.self::TOKENPW);
			$data = $this->vservices->actionExecute('update', array('src'=>$src, 'token'=>$token, 'us_id'=>$us_id, 'username'=>$sentNumber, "password"=>$password, 'oldpass'=>$password, 'phone'=>$sentNumber), 'user');
			var_dump($data);
			parse_str($data);
			switch((int)$status)
			{
				case 0:
					$us_id = $id;
					$user['updated_time'] = $receiveTime;
					$user['us_id'] = $us_id;
					$user['cellphone'] = $sentNumber;
					$this->db->where('us_id', $us_id);
					$this->db->update('tbluser', $user);
					$sms = "Qui vi da doi so dien thoai tren soanbaigiang.smas.vn sang so dien thoai [".$sentNumber."]";
					$status = 1;
					break;
				case 5:
					$sms = "So dien thoai của Qui vi chua duoc dang ky !";
					$status = 0;
					break;
				case 6:
					$sms = "Mat khau cua qui vi khong dung !";
					$status = 0;
					break;
				default:
					$status = 0;
					$sms = $errMsg;
					break;				
			}
		}else
		{
			$sms = "So dien thoai của Qui vi chua duoc dang ky !";
			$status = 0;
		}
		$this->insert_smslog($sentNumber, $us_id, $serviceID, $commandcode, $info, $receiveTime);
		return $status.'|'.$sms;
	}
	
	function changePassword($sentNumber, $password, $serviceID, $commandcode, $info, $receiveTime, &$status)
	{
		$username = $sentNumber;
		$user = array();
		$src = 'SBG';
		$us_id = 0;
		$errMsg = '';
		$sms = "";
		$flag = false;
		$pass = $password;
		if (is_null($password) || $password = "")
		{
			$pass = $this->create_random_password();
			$flag = true;
		}
		$this->db->select('*')->from('tbluser')->where('cellphone', $username);
		$query = $this->db->get();
		if($query->num_rows() > 0)
		{
			$row = $query->row_array();
			$us_id = $row['us_id'];
			$token = md5($us_id.self::TOKENPW);
			$data = $this->vservices->actionExecute('update', array('src'=>$src, 'token'=>$token, 'us_id'=>$us_id, "password"=>$pass), 'user');
			parse_str($data);
			switch((int)$status)
			{
				case 0:
					$us_id = $id;
					$user['updated_time'] = $receiveTime;
					$user['us_id'] = $us_id;
					$user['cellphone'] = $sentNumber;
					$this->db->where('us_id', $us_id);
					$this->db->update('tbluser', $user);
					if ($flag)
					{
						$sms = "Mat khau moi cua quy vi tren soanbaigiang.smas.vn la [".$password."]";
					}else{
						$sms = "Qui vi da doi thanh cong mat khau tren soanbaigiang.smas.vn. ";
					}
					$status = 1;
					break;
				case 5:
					$sms = "So dien thoai của Qui vi da duoc dang ky !";
					$status = 0;
					break;
				default:
					$status = 0;
					$sms = $errMsg;
					break;	
			}
		}
		else
		{
			$sms = "So dien thoai của Qui vi da duoc dang ky !";
			$status = 0;
		}
		$this->insert_smslog($sentNumber, $us_id, $serviceID, $commandcode, $info, $receiveTime);
		return $status.'|'.$sms;
	}
	
	function insert_smslog($sentNumber, $userID, $serviceID, $commandcode, $info, $receiveTime)
	{
		$smslog = array();
		$smslog['sender'] = $sentNumber;
		$smslog['us_id'] = $userID;
		$smslog['service_id'] = $serviceID;
		$smslog['commandcode'] = $commandcode;
		$smslog['info'] = $info;
		$smslog['created_time'] = $receiveTime;
		$this->db->insert('tblsmslog', $smslog);
	}
}
