<?php

namespace App\Controllers;

use CodeIgniter\Controller;
use App\Models\Mauth;

class Auth extends Controller
{
    public function index()
    {
        helper(['form']);
        echo view('pages/loginv');
    }
     public function login()
    {
        $session = session();
        $model = new Mauth();
        $username = $this->request->getVar('username');
        //$password = $this->request->getVar('password');


        $data = $model->cekuser($username)->getRowArray();
        // var_dump($data);
        //exit();
        if ($data) {

            $ses_data = [
                'nip'       => $data['NIP9'],
                'nipp'       => $data['NIP18'],
                'nama'      => $data['NAMA'],
                'kppadm'    => $data['KPPADM'],
                'jabatan'   => $data['NAMA_JABATAN'],
                'kantor'    => $data['NAMA_KANTOR'],
                'seksi'     => $data['NAMA_UNIT_ES3'],
                'tpkantor' => $data['TP_KANTOR'],
                'kwladm' => $data['KD_KANWIL'],
                'isLogin'   => true
            ];
            $session->set($ses_data);
            if (session('tpkantor') == 'KPDJP') {
                return redirect()->to(base_url('Home'));
            } else if (session('tpkantor') == 'Kanwil') {
                return redirect()->to(base_url('Kanwil'));
            } else {
                return redirect()->to(base_url('seksiar'));
            }
        } else {
            //print_r('user tidak ada');
            //exit;
            $session->setFlashdata('msg', 'User Tidak ada');
            return redirect()->to('auth');
        }
    } 


    function ldap_auth()
    {
        $username = $this->request->getVar('username');
        $password = $this->request->getVar('password');
        $session = session();
        if ($password == "")  return redirect()->to(base_url('auth'));
        else {
            $model = new Mauth();
            $ldaprdn = 'INTRANET' . "\\" . $username;
            $adServer = "ldap://10.254.28.141";
            $ldap = ldap_connect($adServer);
            ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
            ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

            $bind = @ldap_bind($ldap, $ldaprdn, $password);

            if ($bind) {
                $filter = "(&(objectCategory=person)(objectClass=user)(cn={$username}*) )";
                $ldap_base_dn = "OU=Pegawai DJP,DC=intranet,DC=pajak,DC=go,DC=id";
                $result = ldap_search($ldap, $ldap_base_dn, $filter);
                $info = ldap_get_entries($ldap, $result);
                for ($i = 0; $i < $info["count"]; $i++) {
                    if ($info['count'] > 1) break;
                    $_SESSION['usr'] = $username;
                    $_SESSION['nama'] = $info[$i]["displayname"][0];
                    $_SESSION['nip'] = $info[$i]["employeenumber"][0];
                }
                @ldap_close($ldap);

                $data = $model->cekuser($username)->getRowArray();
                $ses_data = [
                    'nip'       => $data['NIP9'],
                    'nipp'       => $data['NIP18'],
                    'nama'      => $data['NAMA'],
                    'kppadm'    => $data['KPPADM'],
                    'jabatan'   => $data['NAMA_JABATAN'],
                    'kantor'    => $data['NAMA_KANTOR'],
                    'seksi'     => $data['NAMA_UNIT_ES3'],
                    'tpkantor' => $data['TP_KANTOR'],
                    'kwladm' => $data['KD_KANWIL'],
                    'isLogin'   => true
                ];
                $session->set($ses_data);
                if (session('tpkantor') == 'KPDJP') {
                    return redirect()->to(base_url('Home'));
                } else if (session('tpkantor') == 'Kanwil') {
                    return redirect()->to(base_url('Kanwil'));
                } else {
                    return redirect()->to(base_url('seksiar'));
                }
            } else {
                $ldaprdn = 'INTRANET' . "\\" . $username;
                $adServer = "ldap://10.254.28.142";
                $ldap = ldap_connect($adServer);
                ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
                ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

                $bind = @ldap_bind($ldap, $ldaprdn, $password);

                if ($bind) {
                    $filter = "(&(objectCategory=person)(objectClass=user)(cn={$username}*) )";
                    $ldap_base_dn = "OU=Pegawai DJP,DC=intranet,DC=pajak,DC=go,DC=id";
                    $result = ldap_search($ldap, $ldap_base_dn, $filter);
                    $info = ldap_get_entries($ldap, $result);
                    for ($i = 0; $i < $info["count"]; $i++) {
                        if ($info['count'] > 1) break;
                        $_SESSION['usr'] = $username;
                        $_SESSION['nama'] = $info[$i]["displayname"][0];
                        $_SESSION['nip'] = $info[$i]["employeenumber"][0];
                    }
                    @ldap_close($ldap);

                    $data = $model->cekuser($username)->getRowArray();
                    $ses_data = [
                        'nip'       => $data['NIP9'],
                        'nipp'      => $data['NIP18'],
                        'nama'      => $data['NAMA'],
                        'kppadm'    => $data['KPPADM'],
                        'jabatan'   => $data['NAMA_JABATAN'],
                        'kantor'    => $data['NAMA_KANTOR'],
                        'seksi'     => $data['NAMA_UNIT_ES3'],
                        'tpkantor' => $data['TP_KANTOR'],
                        'kwladm' => $data['KD_KANWIL'],
                        'isLogin'   => true
                    ];
                    $session->set($ses_data);
                    if (session('tpkantor') == 'KPDJP') {
                        return redirect()->to(base_url('Home'));
                    } else if (session('tpkantor') == 'Kanwil') {
                        return redirect()->to(base_url('Kanwil'));
                    } else {
                        return redirect()->to(base_url('seksiar'));
                    }

                    // return true;
                } else {
                    return redirect()->to(base_url('auth'));
                }
            }
        }
    }


    public function logout()
    {
        $session = session();
        $session->destroy();
        return redirect()->to(base_url('auth'));
    }

    public function underconst()
    {
        echo view('errors/html/unconstruct');
    }
}