<?php

namespace App\Controllers;

use App\Models\User_model;

class Auth extends BaseController
{
    public function login()
    {
        $data = [
            'settings' => $this->appSetting()
        ];
        return view('Admin/Auth/login', $data);
    }
    public function yologin()
    {
        // Ambil data dari form login
        $username = $this->request->getPost('username');
        $password = $this->request->getPost('password') ?? "";
        $remember_me = $this->request->getPost('remember_me');

        // Query untuk mendapatkan data pengguna dari database berdasarkan username
        $userModel = new User_model();
        $user = $userModel->where('username', $username)->first();

        // Jika pengguna ditemukan dan password cocok
        if ($user && password_verify($password, $user['password'])) {
            // Simpan data pengguna ke session
            $session = session();
            $sessionData = [
                'user_id' => $user['id'],
                'username' => $user['username'],
                'nama' => $user['nama'],
                'role' => $user['role'],
                // Tambahkan data lain yang perlu disimpan di sesi
            ];
            $session->set($sessionData);
            $this->addLogs('Berhasil login aplikasi');
            // Tandai pengguna diingat jika dicentang
            if ($remember_me) {
                // Tambahkan kode untuk mengatur cookie pengingat di sini
            }

            // Kirim respons JSON dengan pesan sukses
            return $this->response->setJSON(['success' => true, 'message' => 'Login successful.']);
        } else {
            // Jika pengguna tidak ditemukan atau password tidak cocok
            // Kirim respons JSON dengan pesan error
            return $this->response->setJSON(['success' => false, 'message' => 'Invalid username or password.']);
        }
    }
    public function dologin()
    {
        $session = session();
        $postLogin = $this->request->getPost();
        $db = db_connect();
        $user = $db->table('users')->getWhere(['username' => $postLogin['username']])->getRow();
        $siswa = $db->table('students')->getWhere(['username' => $postLogin['username']])->getRow();
        if ($user || $siswa) {
            $checkUser = $user ? $user : $siswa;
            if (password_verify($postLogin['password'] ?? "", $checkUser->password)) {
                $role = $user ? $user->role : 'siswa'; // Jika $user tidak kosong, gunakan rolenya dari tabel users, jika kosong, rolenya adalah 'siswa'

                // Redirect berdasarkan peran pengguna
                if ($role === 'siswa') {
                    $ses_data = [
                        'username' => $checkUser->username,
                        'role' => $role,
                        'user_id' => $checkUser->id,
                        'isLogin' => TRUE
                    ];
                    $session->set($ses_data);
                    $this->addLogs('Berhasil login aplikasi');

                    return redirect('profil/siswa');
                } else {
                    $ses_data = [
                        'username' => $checkUser->username,
                        'role' => $role,
                        'user_id' => $checkUser->id,
                        'isLogin' => TRUE
                    ];
                    $session->set($ses_data);
                    $this->addLogs('Berhasil login aplikasi');

                    return redirect('/');
                }
            } else {
                $session->setFlashdata('msg', 'Wrong Password');
                return redirect('auth/login');
            }
        } else {
            $session->setFlashdata('msg', 'User tidak ditemukan');
            return redirect('auth/login');
        }
    }
    public function register(): string
    {

        return view('Admin/Auth/register');
    }
    public function logout()
    {
        $session = session();
        $session->destroy();
        return redirect()->to('auth/login');
    }
}
