<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Admin_Acc extends MX_Controller
{
	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)
		{
			$role_id = $admin_info['role_id'];
			if($role_id == 1){
				$data['content'] = $this->get_admins();
				$this->load->model('admin_model');
				$data['roles'] = $this->admin_model->get_roles();
				$this->load->view('admin_acc/index', $data);
			}else
			{
				show_404();
			}
		}else
		{
			$this->load->view('login');
		}
	}
	
	public function get_admins()
	{
		$this->load->helper('pagging');
		$this->load->model('admin_model');
		$data['current_page'] = $this->uri->segment(4, 1);
		$data['itemsoptions'] = array(10, 25, 50, 100);
		$data['perpage'] = 10;
		$data['keyword'] = "";
		$data['sorting_order']="sorting_desc";
        $data['sorting_field']="created_time";
		if ($this->input->post('sorting_order')) {
			if ($this->input->post('sorting_order') != "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['start'] = ($data['current_page'] - 1) * $data['perpage'];
		$data['total'] = $this->admin_model->get_total_admins($data);
		$data['admins'] = $this->admin_model->get_list_admins($data);
		$data['paging_url'] = base_url() . "admin/quan_tri_vien/trang/";
		$data['num_links'] = 2;
		$data['paging'] = pagging($data);
		if ($this->input->is_ajax_request())
		{
			return $this->load->view('admin_acc/listview', $data);
		}
		return $this->load->view('admin_acc/listview', $data, true);
	}
	
	public function add_admin()
	{
		$admin_info = $this->session->userdata('adminInfo');
		if ($admin_info)
		{
			$this->load->helper('email');
			$result = array();
			$result['success'] = 0;
			$input = $this->input->post();
			$this->load->model('admin_model');
			if (strlen($input['full_name'])==0)
			{
				$result['errors']['full_name_err'] = lang('_SBG_FULLNAME_REQUIRED_MSG');
			}
			if (strlen($input['login_name'])==0)
			{
				$result['errors']['login_name_err'] = lang('_SBG_LOGIN_NAME_REQUIRED_MSG');
			}
			else
			{
				if ($this->admin_model->check_exist(array('field'=>'login_name','value'=>$input['login_name'])))
				{
					$result['errors']['login_name_err'] = lang('_SBG_LOGIN_NAME_DUPLICATE_MSG');
				}
			}
			if (strlen($input['phone'])==0)
			{
				$result['errors']['phone_err'] = lang('_SBG_PHONE_REQUIRED_MSG');
			}
			else
			{
				if(!preg_match('/^([0-9]{10,11}$)$/', $input['phone'])){
					$result['errors']['phone_err'] = lang('_SBG_PHONE_FORMAT_ERROR_MSG');
				}else if ($this->admin_model->check_exist(array('field'=>'phone','value'=>$input['phone'])))
				{
					$result['errors']['phone_err'] = lang('_SBG_PHONE_DUPLICATE_MSG');
				}
				
			}
			if (strlen($input['passwd'])==0)
			{
				$result['errors']['pwd1_err'] = lang('_SBG_PASSWORD_REQUIRED_MSG');
			}
			if ($input['passwd'] != $input['pwd2'])
			{
				$result['errors']['pwd2_err'] = lang('_SBG_PASSWORD_CONFIRM_MSG');
			}
			if(strlen($input['email'])==0)
			{
				$result['errors']['email_err'] = lang('_SBG_EMAIL_REQUIRED_MSG');
			}else{
				if(!valid_email($input['email']))
				{
					$result['errors']['email_err'] = lang('_SBG_EMAIL_FORMAT_ERROR_MSG');
				}
			}
			if (!isset($result['errors']))
			{
				unset($input['pwd2']);
				$input['passwd'] = md5($input['passwd']);
				$input['created_time']=date("Y-m-d H:i:s");
				$input['updated_time']=date("Y-m-d H:i:s");
				$this->admin_model->insert($input);
				$result['success'] = 1;
			}
			echo json_encode($result);
		}else{
			$this->load->view('login');
		}
	}
	
	public function edit_admin()
	{
		$admin_info = $this->session->userdata('adminInfo');
		if ($admin_info)
		{
			$admin_id = $this->uri->segment(4);
			$this->load->model('admin_model');
			$data = $this->admin_model->search_by_id($admin_id);
			$this->load->view('admin_acc/edit_admin', $data);
		}else
		{
			$this->load->view('login');
		}
	}
	
	public function update_admin()
	{
		$admin_info = $this->session->userdata('adminInfo');
		if ($admin_info)
		{
			$input = $this->input->post();
			$result = array();
			$result['success'] = 0;
			$this->load->model('admin_model');
			$input['updated_time']=date("Y-m-d H:i:s");
			$this->admin_model->update($input['admin_id'], $input);
			$result['success'] = 1;
			echo json_encode($result);
		}else
		{
			$this->load->view('login');
		}
	}
	
	public function delete_admin()
	{
		$admin_info = $this->session->userdata('adminInfo');
		if ($admin_info)
		{
			$result = array();
			$result['success'] = 0;
			$admin_id = (int)$this->uri->segment(4, 0);
			if ($admin_id == 0){
				$result['success'] = 0;
			}else
			{
				$this->load->model('admin_model');
				$this->admin_model->delete($admin_id);
				$result['success'] = 1;
			}
			echo json_encode($result);
		}else
		{
			$this->load->view('login');
		}
	}
	
	public function get_admin_by_id()
	{
		$admin_info = $this->session->userdata('adminInfo');
		if ($admin_info)
		{
			$admin_id = (int)$this->uri->segment(4);
			$this->load->model('admin_model');
			$data = $this->admin_model->search_by_id($admin_id);
			$this->load->view('admin_acc/view_admin', $data);
		}else
		{
			$this->load->view('login');
		}
	}
	
	public function admin_profile()
	{
		$admin_info = $this->session->userdata('adminInfo');
		if($admin_info)
		{
			$admin_id = $admin_info['admin_id'];
			$this->load->model(array('admin_model'));
			$data = $this->admin_model->search_by_id($admin_id);
			$this->load->view('admin_acc/admin_profile', $data);
		}else
		{
			$this->load->view('login');
		}
	}
	
	public function update_info()
	{
		$admin_info = $this->session->userdata('adminInfo');
		if ($admin_info)
		{
			$this->load->helper('email');
			$input = $this->input->post();
			$result = array();
			$result['success'] = 0;
			if(strlen($input['email'])>0){
				if(!valid_email($input['email']))
				{
					$result['errors']['email_err'] = lang('_SBG_EMAIL_FORMAT_ERROR_MSG');
				}
			}
			if(strlen($input['phone'])>0){
				if (!preg_match('/[0-9]/', $input['phone']))
				{
					$result['errors']['phone_err'] = lang('_SBG_PHONE_FORMAT_ERROR_MSG');
				}
			}
			if (!isset($result['errors']))
			{
				$input['admin_id'] = $admin_info['admin_id'];
				$input['updated_time']=date("Y-m-d H:i:s");
				$this->load->model('admin_model');
				$this->admin_model->update($input['admin_id'], $input);
				$result['success'] = 1;
			}
			echo json_encode($result);
		}else
		{
			$this->load->view('login');
		}
	}
	
	public function change_password()
	{
		$admin_info = $this->session->userdata('adminInfo');
		if ($admin_info){
			$result = array();
			$result['success'] = 0;
			$this->load->model('admin_model');
			$input = $this->input->post();
			$input['admin_id'] = $admin_info['admin_id'];
			if (strlen($input['passwd']) == 0)
			{
				$result['errors']['passwd_old_err'] = lang('_SBG_PASSWORD_REQUIRED_MSG');
			}else
			{
				$check_pass = $this->admin_model->check_password($input['admin_id'], $input['passwd']);
				if (!$check_pass)
				{
					$result['errors']['passwd_old_err'] = lang('_SBG_OLD_PASSWORD_FAIL_MSG');
				}
			}
			if (strlen($input['passwd_new']) == 0)
			{
				$result['errors']['passwd_new_err'] = lang('_SBG_PASSWORD_REQUIRED_MSG');
			}else if(strcmp($input['passwd'], $input['passwd_new']) == 0)
			{
				$result['errors']['passwd_new_err'] = lang('_SBG_PASSWORD_DUPLICATE_MSG');
			}
			if ($input['passwd_new'] != $input['confirm_passwd_new'])
			{
				$result['errors']['confirm_passwd_new_err'] = lang('_SBG_PASSWORD_CONFIRM_MSG');
			}
			if (!isset($result['errors']))
			{
				$updated_time=date("Y-m-d H:i:s");
				$data = array('passwd'=>md5($input['passwd_new']), 'updated_time'=>$updated_time);
				$this->admin_model->update($input['admin_id'], $data);
				$result['success'] = 1;
			}
			
			echo json_encode($result);
		}else
		{
			$this->load->view('login');
		}
		
	}
	
}