<?php

require_once(APPPATH . 'third_party/ci_utils/abstract_base_controller' . EXT);
require_once(APPPATH . 'entities/user_details_entity' . EXT);
require_once(APPPATH . 'entities/business_type_entity' . EXT);
require_once(APPPATH . 'entities/business_nature_entity' . EXT);
require_once(APPPATH . 'entities/profession_type_entity' . EXT);
require_once(APPPATH . 'entities/designation_entity' . EXT);
require_once(APPPATH . 'entities/user_business_entity' . EXT);
require_once(APPPATH . 'entities/user_notification_entity' . EXT);
require_once(APPPATH . 'entities/messages_entity' . EXT);
require_once(APPPATH . 'entities/admin_settings_entity' . EXT);

use UrbanAirship\Airship;
use UrbanAirship\Push as P;

class Dashboard extends Abstract_BASE_controller {

    public function __construct() {
        parent::__construct();
        $this->_add_css('custom.css', 'jquery.dataTables.css');
        $this->_add_js('lib.js', 'admin/common.js', 'admin/users.js', 'admin/jquery.dataTables.js', 'admin/company.js', 'admin/products.js', 'admin/services.js', 'admin/notifications.js', 'admin/links.js', 'admin/messages.js');
        $this->load->library('login_lib');
        $this->load->library('get_uuid');
        $this->load->helper('password');
        $this->load->library('mail');
        $this->load->library('email');
        if (!$this->login_lib->check_logged_in()) {
            redirect(base_url() . 'admin/login');
        }
    }

    public function index() {
         redirect(base_url() . 'admin/dashboard/users/');
    }

    public function users($add_edit = '', $id = '') {
        
        if ($add_edit == '' && $id == '') {
            $user_details_obj = new User_details_entity();
          
            $users = $user_details_obj->get_users_list(null,true);
           
            $this->page_data['users'] = $users;
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/users/index', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'add_user' && $id == '') {
          
             $user_obj = new User_details_entity();
           
             $roles = $user_obj->get_role();
            
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/users/add';
            $this->page_data['roles'] = $roles['result'];
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/users/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'add' && $id == '') {

   
            $user_details_obj = new User_details_entity();
            
            $new_name = '';
            if (isset($_FILES) && $_FILES['image']['name'] != '') {
                $new_name = time() . $_FILES['image']['name'];
                $config['encrypt_name'] = false;
                $config['upload_path'] = './uploads/users/';
                $config['allowed_types'] = 'gif|jpg|png|jpeg|JPG|JPEG|PNG|GIF';
                $config['overwrite'] = false;
                $config['remove_spaces'] = true;
                $config['file_name'] = $new_name; // in KB

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

                if (!$this->upload->do_upload("image")) {
                    $this->session->set_flashdata('message', $this->upload->display_errors('error_message', 'Image not uploaded'));
                }
            }
           
            $user_details_obj->id = $this->get_uuid->_get_uuid();
            $user_details_obj->first_name = ucfirst($this->input->post("first_name"));
            $user_details_obj->last_name = ucfirst($this->input->post("last_name"));
            $user_details_obj->gender = $this->input->post("gender");
            $user_details_obj->date_of_birth = $this->input->post("date_of_birth");
            $user_details_obj->native_place = $this->input->post("native_place");
            $user_details_obj->address = $this->input->post("address"); 
            $user_details_obj->blood_group = $this->input->post("blood_group");
            $user_details_obj->marital_status = $this->input->post("marital_status"); 
            $user_details_obj->pass_out_year = $this->input->post("pass_out_year");
            $user_details_obj->contact = $this->input->post("contact");
            $user_details_obj->image = $new_name;
            $user_details_obj->password = create_hash('mobisoft');
            $user_details_obj->active_status=0;
            $user_details_obj->profile_visited=0;
            $user_details_obj->role=1;
            $user_details_obj->created_at = time();
            $user_details_obj->updated_at = time();

            $user_add = $user_details_obj->save();
            $this->session->set_flashdata('success_message', 'User has been sucessfully added');
            redirect(base_url() . 'admin/dashboard/users/');
        }
        if ($add_edit == 'edit_user' && $id != '') {

            $user_obj = new User_details_entity();
          
            $user_obj->user_id = $id;
            
            $user = $user_obj->get_user_details_metadata($user_obj);
          
            $roles = $user_obj->get_role();
            $this->page_data['user'] = $user[0];
            $this->page_data['roles'] = $roles['result'];
            
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/users/edit';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/users/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'edit' && $id == '') {
           
            $this->add_update_user($mode='update',$settings=false);

            $this->session->set_flashdata('success_message', 'User has been sucessfully updated');
            redirect(base_url() . 'admin/dashboard/users/');
        }
        if ($add_edit == 'status' && $id != '') {
           
            $arr = explode('-', $id);

            $user_status_obj = new User_details_entity();
            
            $id = $arr[1];
            if ($arr[0] == 1) {
                $record_status = 0;
            } else if ($arr[0] == 0) {
                $record_status = 1;
            }
           
            $user_add = $user_status_obj->update_active($id, $record_status);
            echo json_encode(array('status' => 'OK'));
            die;
        }
        if ($add_edit == 'delete' && $id != '') {

            $arr = explode('-', $id);

            $user_status_obj = new User_details_entity();
            
            $id = $arr[1];
            if ($arr[0] == 1) {
                $record_status = 'D';
            } else if ($arr[0] == 0) {
                $record_status = 'A';
            }
            
            $user_add = $user_status_obj->update_status($id, $record_status);
            echo json_encode(array('status' => 'OK'));
            die;
        }
        if ($add_edit == 'email' && $id == '') {
            $user_obj = new User_entity();
            $user_obj->email = $this->input->post("email");
            $email = $user_obj->get();
            if (count($email['result']) != 0) {
                echo 'Email already exist.';
                exit;
            }
        }
    }
    
    public function business_type($add_edit = '', $id = '') {
        if ($add_edit == '' && $id == '') {
            
            $business_type_obj = new Business_type_entity();
          
            $business_type = $business_type_obj->get();
            
            $this->page_data['business_type'] = $business_type['result'];
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/business/index', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit_business' && $id!='') {
            
            $business_type_obj = new Business_type_entity();
            $business_type_obj->id = $id;
            $business_type = $business_type_obj->get();
            $this->page_data['business_type'] = $business_type['result'][0];
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/business_type/edit';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/business/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit') {
            
            $business_type_obj = new Business_type_entity();
            $id = $this->input->post('id');
            $type_name = $this->input->post('type');
            $business_type_obj->id = $id;
            $business_type_obj->business_type_name = $type_name;
            unset($business_type_obj->created_at);
            unset($business_type_obj->updated_at);
            $business_type = $business_type_obj->update();
            redirect('admin/dashboard/business_type');
        }
        if($add_edit == 'add_business') {
           
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/business_type/add';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/business/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
            
        }
        if($add_edit == 'add') {
            
            $business_type_obj = new Business_type_entity();
            $type_name = $this->input->post('type');
            $business_type_obj->business_type_name = $type_name;
            unset($business_type_obj->created_at);
            unset($business_type_obj->updated_at);
            $business_type = $business_type_obj->save();
            redirect('admin/dashboard/business_type');
        }
         if($add_edit == 'delete' && $id!='') {
            
            $business_type_obj = new Business_type_entity();
            $business_type_obj->id = $id;
            unset($business_type_obj->created_at);
            unset($business_type_obj->updated_at);
            $business_type = $business_type_obj->delete();
            redirect('admin/dashboard/business_type');
        }
        
           
    }
     public function business_nature($add_edit = '', $id = '') {
        if ($add_edit == '' && $id == '') {
            
            $business_nature_obj = new Business_nature_entity();
          
            $business_nature = $business_nature_obj->get();
            //print_r($business_type);exit;
            $this->page_data['business_nature'] = $business_nature['result'];
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/business/view_nature', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit_business' && $id!='') {
            
            $business_nature_obj = new Business_nature_entity();
            $business_nature_obj->id = $id;
            $business_nature = $business_nature_obj->get();
            $this->page_data['business_nature'] = $business_nature['result'][0];
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/business_nature/edit';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/business/add_edit_nature', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit') {
            
            $business_nature_obj = new Business_nature_entity();
            $id = $this->input->post('id');
            $nature_name = $this->input->post('nature');
            $business_nature_obj->id = $id;
            $business_nature_obj->business_nature_name = $nature_name;
            unset($business_nature_obj->created_at);
            unset($business_nature_obj->updated_at);
            $business_nature = $business_nature_obj->update();
            redirect('admin/dashboard/business_nature');
        }
        if($add_edit == 'add_business') {
           
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/business_nature/add';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/business/add_edit_nature', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
            
        }
        if($add_edit == 'add') {
            
            $business_nature_obj = new Business_nature_entity();
            $nature_name = $this->input->post('nature');
            $business_nature_obj->business_nature_name = $nature_name;
            
            unset($business_nature_obj->created_at);
            unset($business_nature_obj->updated_at);
            $business_nature = $business_nature_obj->save();
            redirect('admin/dashboard/business_nature');
        }
         if($add_edit == 'delete' && $id!='') {
            
            $business_nature_obj = new Business_nature_entity();
            $business_nature_obj->id = $id;
            unset($business_nature_obj->created_at);
            unset($business_nature_obj->updated_at);
            $business_nature = $business_nature_obj->delete();
            redirect('admin/dashboard/business_nature');
        }
        
           
    }
    public function profession_type($add_edit = '', $id = '') {
        if ($add_edit == '' && $id == '') {
            
            $profession_type_obj = new Profession_type_entity();
          
            $profession_type = $profession_type_obj->get();
            
            $this->page_data['profession_type'] = $profession_type['result'];
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/profession/index', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit_profession' && $id!='') {
            
            $profession_type_obj = new Profession_type_entity();
            $profession_type_obj->id = $id;
            $profession_type = $profession_type_obj->get();
            $this->page_data['profession_type'] = $profession_type['result'][0];
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/profession_type/edit';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/profession/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit') {
            
            $profession_type_obj = new Profession_type_entity();
            $id = $this->input->post('id');
            $profession_type_name = $this->input->post('type');
            $profession_type_obj->id = $id;
            $profession_type_obj->profession_type_name = $profession_type_name;
            unset($profession_type_obj->created_at);
            unset($profession_type_obj->updated_at);
            $profession_type = $profession_type_obj->update();
            redirect('admin/dashboard/profession_type');
        }
        if($add_edit == 'add_profession') {
           
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/profession_type/add';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/profession/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
            
        }
        if($add_edit == 'add') {
            
            $profession_type_obj = new Profession_type_entity();
            $profession_type_name = $this->input->post('type');
            $profession_type_obj->profession_type_name = $profession_type_name;
            
            unset($profession_type_obj->created_at);
            unset($profession_type_obj->updated_at);
            $profession_type = $profession_type_obj->save();
            redirect('admin/dashboard/profession_type');
        }
         if($add_edit == 'delete' && $id!='') {
            
            $profession_type_obj = new Profession_type_entity();
            $profession_type_obj->id = $id;
            unset($profession_type_obj->created_at);
            unset($profession_type_obj->updated_at);
            $profession_type = $profession_type_obj->delete();
            redirect('admin/dashboard/profession_type');
        }
        
           
    }

    public function designation($add_edit = '', $id = '') {
        if ($add_edit == '' && $id == '') {
            
            $designation_obj = new Designation_entity();
          
            $designation = $designation_obj->get();
            
            $this->page_data['designation'] = $designation['result'];
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/designation/index', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit_designation' && $id!='') {
            
            $designation_obj = new Designation_entity();
            $designation_obj->id = $id;
            $designation = $designation_obj->get();
            $this->page_data['designation'] = $designation['result'][0];
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/designation/edit';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/designation/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit') {
            
            $designation_obj = new Designation_entity();
            $id = $this->input->post('id');
            $designation_name = $this->input->post('type');
            $designation_obj->id = $id;
            $designation_obj->designation = $designation_name;
            unset($designation_obj->created_at);
            unset($designation_obj->updated_at);
            $designation = $designation_obj->update();
            redirect('admin/dashboard/designation');
        }
        if($add_edit == 'add_profession') {
           
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/designation/add';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/designation/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
            
        }
        if($add_edit == 'add') {
            
            $designation_obj = new Designation_entity();
            $designation_name = $this->input->post('type');
            $designation_obj->designation = $designation_name;
            
            unset($designation_obj->created_at);
            unset($designation_obj->updated_at);
            $designation = $designation_obj->save();
            redirect('admin/dashboard/designation');
        }
         if($add_edit == 'delete' && $id!='') {
            
            $designation_obj = new Designation_entity();
            $designation_obj->id = $id;
            unset($designation_obj->created_at);
            unset($designation_obj->updated_at);
            $designation = $designation_obj->delete();
            redirect('admin/dashboard/designation');
        }
        
           
    }
    
    public function admin_user($add_edit = '', $id = '') {
        if($this->session->userdata('role')=='Super Admin') {
        if ($add_edit == '' && $id == '') {
            
            $admin_obj = new User_details_entity();
          
            $users = $admin_obj->get_admin_users_list();
            
            $this->page_data['users'] = $users;
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/admin_users/index', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        }
        if($add_edit == 'edit_admin' && $id!='') {
            
            $user_obj = new User_details_entity();
            $admin_settings_obj = new Admin_settings_entity();
            $admin_settings_obj->admin_id = $id;
            $user_obj->user_id = $id;
           
            $user = $user_obj->get_user_details_metadata($user_obj);
            $roles = $user_obj->get_role();
            $settings = $admin_settings_obj->get();
            
            $this->page_data['user'] = $user[0];
            $this->page_data['roles'] = $roles['result'];
            $this->page_data['settings'] = $settings['result'];
           
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/admin_user/edit';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/admin_users/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit') {
           
            $this->add_update_user($mode='update',$settings=true);
            $this->session->set_flashdata('success_message', 'User has been sucessfully updated');
            redirect(base_url() . 'admin/dashboard/admin_user/');
        }
        if ($add_edit == 'add_admin' && $id == '') {
          
             $user_obj = new User_details_entity();
           
             $roles = $user_obj->get_role();
            
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/admin_user/add';
            $this->page_data['roles'] = $roles['result'];
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/users/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        
        if($add_edit == 'add') {
            
            
            $this->add_update_user($mode='save',$settings=true);
            
            $userdata['first_name'] = ucfirst($this->input->post("first_name"));
            $userdata['last_name']  =  ucfirst($this->input->post("last_name"));
            
            $this->notifyAdmin($userdata,$type='activate_user');
            
            $this->session->set_flashdata('success_message', 'User has been sucessfully updated');
            redirect(base_url() . 'admin/dashboard/admin_user/');
           
        }
         if($add_edit == 'delete' && $id!='') {
            
            $admin_obj = new Admin_entity();
            $admin_obj->id = $id;
            unset($admin_obj->created_at);
            unset($admin_obj->updated_at);
            $admin = $admin_obj->delete();
            redirect('admin/dashboard/admin_user');
        }
        
        
           
    }
    public function myProfile($add_edit = '', $id = '') {
        if($this->session->userdata('role')=='Super Admin'){
            if($add_edit == 'view') {       
                $admin_obj = new Admin_entity();

                $admin_obj->id = $this->session->userdata('user_id');
                
                $admin = $admin_obj->get();

                $this->page_data['admin'] = $admin['result'];
                $this->load->view('admin/inc/top', $this->page_data);
                $this->load->view('admin/profile/index', $this->page_data);
                $this->load->view('admin/inc/footer', $this->page_data);
                $this->load->view('admin/inc/bottom');
            }
        } else {
            
            if($add_edit == 'view') {       
                $admin_obj = new User_details_entity();
                
                $admin_obj->id = $this->session->userdata('user_id');
                
                $admin = $admin_obj->get_users_list($admin_obj->id);
               
                $this->page_data['users'] = $admin;
                $this->load->view('admin/inc/top', $this->page_data);
                $this->load->view('admin/admin_users/index', $this->page_data);
                $this->load->view('admin/inc/footer', $this->page_data);
                $this->load->view('admin/inc/bottom');
            }
        
        }
        if($add_edit == 'edit_admin' && $id!='') {
            
            $admin_obj = new Admin_entity();
            $admin_obj->id = $id;
            $admin = $admin_obj->get();
            $this->page_data['admin'] = $admin['result'][0];
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/myProfile/edit';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/profile/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if($add_edit == 'edit') {
           
            $admin_obj = new Admin_entity();
            $admin_obj->id = $this->session->userdata('user_id');
            $admin = $admin_obj->get();
            
            $email = $this->input->post('email');
            $contact = $this->input->post('contact');
            $admin_name = $this->input->post('admin_name');
            $password = !empty($admin['result'][0]['password'])?$admin['result'][0]['password']: create_hash('mobisoft');
            
            $admin_obj->admin_name = $admin_name;
            $admin_obj->contact = $contact;
            $admin_obj->email = $email;
            $admin_obj->password = $password;
            //$admin_obj->enable_notifications = !empty($this->input->post('notification'))?$this->input->post('notification'):0;
            $admin_obj->role = $admin['result'][0]['role'];
            $admin_obj->updated_at = time();
            $admin_obj->update();
            redirect('admin/dashboard/myProfile/view');
        }
    }
    
    public function notifications($add_edit = '', $id = '') {

        if ($add_edit == '' && $id == '') {
            $notification_obj = new User_notification_entity();
            $notifications = $notification_obj->get_all();
            $this->page_data['notifications'] = $notifications;
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/notifications/index', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'delete' && $id != '') {

            $notification_obj = new User_notification_entity();
            $record_status = 'D';
            $notification_update = $notification_obj->update_status($id, $record_status);
            echo json_encode(array('status' => 'OK'));
            die;
        }
        if ($add_edit == 'send_notification' && $id == '') {

            $user_obj = new User_entity();
            $users = $user_obj->get_all_details();

            $product_obj = new Company_products_entity();
            $products = $product_obj->get_all_products();
            //print_r($products);exit;
            //$company_obj = new Cougar_100_entity();
            // $compnies = $company_obj->get_all();
            //$this->page_data['compnies'] = $compnies['result'];
            $this->page_data['products'] = $products;
            $this->page_data['users'] = $users['result'];
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/notifications/add_notification';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/notifications/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'add_notification' && $id == '') {
            $this->load->library('parse');
            $product_obj = new Company_products_entity();
            $notification_obj = new User_notification_entity();
            $product_obj->id = $this->input->post("product_id");

            $cougar_id = $product_obj->get_cougar_id();
            // $notification = 'Message';
            //$notification_type = 'Test';
            //$flag = $this->parse->_send_push($notification, $notification_type);


            $new_name = '';
            if (isset($_FILES) && $_FILES['image']['name'] != '') {
                $new_name = time() . $_FILES['image']['name'];
                $config['encrypt_name'] = false;
                $config['upload_path'] = './uploads/notifications/';
                $config['allowed_types'] = 'gif|jpg|png|jpeg|JPG|JPEG|PNG|GIF';
                $config['overwrite'] = false;
                $config['remove_spaces'] = true;
                $config['file_name'] = $new_name; // in KB

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

                if (!$this->upload->do_upload("image")) {
                    $this->session->set_flashdata('message', $this->upload->display_errors('error_message', 'Image not uploaded'));
                }
            }
            $notification_obj->id = $this->get_uuid->_get_uuid();
            $notification_obj->user_id = $this->input->post("user_id");
            $notification_obj->message = $this->input->post("message");
            $notification_obj->title = $this->input->post("title");
            $notification_obj->cougar_id = $cougar_id[0]['cougar_id'];
            $notification_obj->product_id = $this->input->post("product_id");
            $notification_obj->image = base_url() . 'uploads/notifications/' . $new_name;
            $notification_obj->read_status = 'N';
            $notification_obj->created_by = $this->login_lib->get_session_data('user_id');
            $notification_obj->updated_by = $this->login_lib->get_session_data('user_id');
            $notification_obj->save();
            $this->session->set_flashdata('success_message', 'Notification has been sucessfully send');
            redirect(base_url() . 'admin/dashboard/notifications/');
        }
        if ($add_edit == 'edit_notification' && $id != '') {
            $notification_obj = new User_notification_entity();
            $user_obj = new User_entity();
            $users = $user_obj->get_all_details();

            $product_obj = new Company_products_entity();
            $products = $product_obj->get_all_products();
            $notification_obj->id = $id;
            $notifications = $notification_obj->get_all();
            //print_r($notifications); exit;
            $this->page_data['notification'] = $notifications[0];
            $this->page_data['products'] = $products;
            $this->page_data['users'] = $users['result'];
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/notifications/add_notification';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/notifications/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
    }
    public function generateOtp() {
        $length = 6;
        $alphabets = range('A', 'Z');
        $numbers = range('0', '9');
        $final_array = array_merge($alphabets, $numbers);

        $new_password = '';

        while ($length--) {
            $key = array_rand($final_array);
            $new_password .= $final_array[$key];
        }
        return $new_password;
    }
    public function notifyAdmin($user_data,$type){
        
        $admin_user_obj = new Admin_entity();
        $admin_user_obj->id = $this->session->userdata('id');
        $admin_detail = $admin_user_obj->get();
   
        $data['first_name']     = ucfirst($user_data["first_name"]);
        $data['last_name']      = ucfirst($user_data["last_name"]);
        $email                  = $admin_detail['result'][0]['email'];
        $data['email']          = $email;
        
     
        $this->mail->_create_template($type, $data, $email);
        return;
    }
    public function add_update_user($mode='save',$settings=false) {
            
        $user_details_obj = new User_details_entity();
            
            if($mode=='save'){
                 $new_password = $this->generateOtp();
                 $password = create_hash($new_password);
                 $user_details_obj->id = $this->get_uuid->_get_uuid();
            }
           
            else
            {   $user_details_obj->id = $this->input->post("id");
                $password = $this->input->post("old_password");
                
            }
            
            if($mode=='update')
            { 
                $new_name = $this->input->post('old_image');
                
            }
           
            if (isset($_FILES) && $_FILES['image']['name'] != '') {
                $new_name = time() . $_FILES['image']['name'];
                $config['encrypt_name'] = false;
                $config['upload_path'] = './uploads/users/';
                $config['allowed_types'] = 'gif|jpg|png|jpeg|JPG|JPEG|PNG|GIF';
                $config['overwrite'] = false;
                $config['remove_spaces'] = true;
                $config['file_name'] = $new_name; // in KB

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

                if (!$this->upload->do_upload("image")) {
                    $this->session->set_flashdata('message', $this->upload->display_errors('error_message', 'Image not uploaded'));
                }
                if ($this->input->post('old_image') != '') {
                    $deleted = unlink($_SERVER['DOCUMENT_ROOT'] . "/alumni/uploads/users/" . $this->input->post('old_image'));
                }
            }
        
       
        
        $user_details_obj->first_name = ucfirst($this->input->post("first_name"));
        $user_details_obj->last_name = ucfirst($this->input->post("last_name"));
        $user_details_obj->gender = $this->input->post("gender");
        $user_details_obj->date_of_birth = $this->input->post("date_of_birth");
        $user_details_obj->email = $this->input->post("email");
        $user_details_obj->native_place = $this->input->post("native_place");
        $user_details_obj->address = $this->input->post("address"); 
        $user_details_obj->blood_group = $this->input->post("blood_group");
        $user_details_obj->marital_status = $this->input->post("marital_status");
        $user_details_obj->pass_out_year = $this->input->post("pass_out_year");
        $user_details_obj->contact = $this->input->post("contact");
        $user_details_obj->image = $new_name;
        $user_details_obj->profile_visited=1;
        $user_details_obj->active_status=$this->input->post("active_status");
        $user_details_obj->role=$this->input->post("role");
        $user_details_obj->password = $password;
        $user_details_obj->updated_at = time();
        
        if($mode=='save'){
            $user_details_obj->save();
        }else
        {
            $user_details_obj->update();
        }
        if($settings) {
            
            $admin_settings_obj = new Admin_settings_entity();
           
            $admin_settings_obj->admin_id=$this->input->post("id");
            $admin_setting_details = $admin_settings_obj->get();
            
            $admin_settings_obj->enable_notifications = !empty($this->input->post("enable_notifications"))?1:0;
            $admin_settings_obj->enable_moderations = !empty($this->input->post("enable_moderations"))?1:0;
            unset($admin_settings_obj->created_at);
            unset($admin_settings_obj->updated_at);
            
            if(count($admin_setting_details['result'])==0){
                $admin_settings_obj->id=$this->get_uuid->_get_uuid();
                $admin_settings_obj->save();
            }else {
                $admin_settings_obj->id = $admin_setting_details['result'][0]['id'];
                $admin_settings_obj->admin_id = $admin_setting_details['result'][0]['admin_id'];
                $admin_settings_obj->update();
            }
        }
        return true;
    }
    public function csv_to_array($filename = '', $delimiter = ',') {
        if (!file_exists($filename) || !is_readable($filename))
            return FALSE;

        $header = NULL;
        $data = array();
        if (($handle = fopen($filename, 'r')) !== FALSE) {
            while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
                if (!$header)
                    $header = $row;
                else
                    $data[] = array_combine($header, $row);
            }
            fclose($handle);
        }
        return $data;
    }

    public function search() {
        $keyword = $this->input->post("keyword");
        $user_obj = new User_entity();
        $keyword = ucfirst($keyword);
        $users = $user_obj->get_auto_search($keyword);
        ///echo "<pre>";
        //print_r($users);
        //exit;
        $html = '';
        $html .= '<ul id = "country-list">';
        foreach ($users['result'] as $country) {
            $name = $country["first_name"] . ' ' . $country["last_name"];
            $html .= "<li  onclick=\"selectCountry('" . $name . "','" . $country["uid"] . "')\">" . $country["first_name"] . " " . $country["last_name"] . "</li>";
        }
        $html .= '</ul>';
        echo $html;
        die;
    }

    public function messages($add_edit = '', $id = '') {
        if ($add_edit == '' && $id == '') {
            $messages_obj = new Messages_entity();
            $messages_obj->record_status = 'A';
            $messages = $messages_obj->get_all();
            //echo "<pre>";print_r($users); exit;
            $this->page_data['messages'] = $messages;
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/messages/index', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'add_message' && $id == '') {
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/messages/add';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/messages/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'add' && $id == '') {

            $messages_obj = new Messages_entity();

            $messages_obj->id = $this->get_uuid->_get_uuid();
            $messages_obj->message = $this->input->post("message");
            $messages_obj->created_by = $this->login_lib->get_session_data('user_id');
            $messages_obj->updated_by = $this->login_lib->get_session_data('user_id');
            $messages_add = $messages_obj->save();


            $messages_obj = new Messages_entity();
            $messages_obj->record_status = 'A';
            $messages = $messages_obj->get_all();
            $this->page_data['messages'] = $messages;
            $this->session->set_flashdata('success_message', 'Messages has been sucessfully added');
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/messages/index', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'edit_message' && $id != '') {

            $messages_obj = new Messages_entity();
            $messages_obj->id = $id;

            $message = $messages_obj->get_all();
            $this->page_data['message'] = $message[0];
            $this->page_data['form_action'] = base_url() . 'admin/dashboard/messages/edit';
            $this->load->view('admin/inc/top', $this->page_data);
            $this->load->view('admin/messages/add_edit', $this->page_data);
            $this->load->view('admin/inc/footer', $this->page_data);
            $this->load->view('admin/inc/bottom');
        }
        if ($add_edit == 'edit' && $id == '') {
            $messages_obj = new Messages_entity();

            $messages_obj->id = $this->input->post("id");
            $messages_obj->message = $this->input->post("message");
            $messages_obj->created_by = $this->login_lib->get_session_data('user_id');
            $messages_obj->updated_by = $this->login_lib->get_session_data('user_id');

            $message_add = $messages_obj->update();

            $this->session->set_flashdata('success_message', 'Message has been sucessfully updated');
            //redirect(base_url() . 'admin/dashboard/messages/edit_message/' . $this->input->post("id"));
            redirect(base_url() . 'admin/dashboard/messages/');
        }
        if ($add_edit == 'status' && $id != '') {
            //echo $add_edit;echo $id; exit;
            $arr = explode('-', $id);

            $messages_status_obj = new Messages_entity();
            $record_status = '';
            $id = $arr[1];
            if ($arr[0] == 1) {
                $record_status = 0;
            } else if ($arr[0] == 0) {
                $record_status = 1;
            }
            $link_add = $messages_status_obj->update_active($id, $record_status);
            echo json_encode(array('status' => 'OK'));
            die;
        }
        if ($add_edit == 'delete' && $id != '') {

            $messages_status_obj = new Messages_entity();
            $record_status = 'D';
            $link_add = $messages_status_obj->update_status($id, $record_status);
            echo json_encode(array('status' => 'OK'));
            die;
        }
    }

}
