<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Az_access_time {
    public function check(){
        $ci =& get_instance();
        $class = strtolower($ci->router->fetch_class());

        // Halaman yang TIDAK dicek jadwal:
        //  - login & login_device : pintu masuk/keluar (jadwal dicek di dalam auto_device sendiri)
        //  - access_schedule, setting : halaman pengaturan (khusus admin)
        //  CATATAN: 'home' SENGAJA TIDAK masuk sini, supaya dashboard ikut dijaga.
        $skip_pages = array(
            'login',
            'login_device',
            'access_schedule',
            'setting',
        );
        if (in_array($class, $skip_pages)) {
            return;
        }

        $is_logged_in = (strlen($ci->session->userdata('iduser')) > 0);
        $role_name    = $ci->session->userdata('role_name');
        if (!$is_logged_in) { return; }                       // belum login -> biar auth yang tangani
        if (strtolower($role_name) === 'administrator') { return; } // admin selalu bebas

        $ci->load->helper('az_access_time');
        $iduser = $ci->session->userdata('iduser');
        $chk = az_check_access_time($iduser, $role_name);

        if (!$chk['ok']) {
            // Di luar jam / hari libur -> keluarkan user, arahkan ke LOGIN (bukan home, agar tidak loop)
            $ci->session->set_flashdata('error_login', $chk['msg']);
            $ci->session->unset_userdata(array('iduser','username','name','idrole','role_name','idoutlet'));
            redirect('login');
            exit;
        }
    }
}