<?php
namespace App\Controllers;

use Core\Controller;

class WisudaController extends Controller
{
    public function index()
    {
        $nim = $_SESSION['user']['nim'] ?? null;
        if (!$nim) {
            echo "Akses ditolak!";
            return;
        }

        $model = $this->model('Wisuda');
        $existing = $model->getByNim($nim);

        if ($existing) {
            // Data sudah ada, tampilkan form edit/pengisian data wisuda
            $r = $existing;
            $prodi = 'Nama Prodi'; // isi sesuai id_prodi → nama
            $idprodi = $r['id_prodi'];
            $token = 'TokenTidakDitampilkan';

            return $this->view('wisuda/form_wisuda', compact('r', 'prodi', 'idprodi', 'token'));
        }

        // Jika belum daftar, cek session token dulu
        if (empty($_SESSION['wisuda_token'])) {
            // belum input token, tampilkan form input token
            return $this->view('wisuda/input_token', []);
        }

        // Token sudah ada, ambil data mahasiswa dan token
        $token = $_SESSION['wisuda_token'];
        $tokenData = $model->getTokenDataByTokenAndKegiatan($token, 'Wisuda');

        if (!$tokenData) {
            // token di session tidak valid (misal token sudah expired/hapus)
            unset($_SESSION['wisuda_token']);
            return $this->view('wisuda/input_token', ['error' => 'Token tidak valid, silakan input ulang.']);
        }

        $mhs = $model->getMahasiswa($nim);

        $r = [
            'nim' => $nim,
            'nama' => $tokenData['nama'] ?? $mhs['nama'] ?? '',
            'tempat_lahir' => $mhs['tmpt_lahir'] ?? '',
            'tanggal_lahir' => $mhs['tgl_lahir'] ?? ''
        ];
        $prodi = 'Nama Prodi'; // isi sesuai id_prodi
        $idprodi = $tokenData['id_prodi'] ?? 0;

        return $this->view('wisuda/form_yudisium', compact('r', 'prodi', 'idprodi', 'token'));
    }

	public function checkToken()
	{
		$nim = $_SESSION['user']['nim'] ?? null;
		if (!$nim) {
			echo "Akses ditolak!";
			return;
		}

		$tokenInput = $_POST['token'] ?? '';

		$model = $this->model('Wisuda');

		// Cari token dengan token = $tokenInput dan kegiatan = 'Wisuda'
		$tokenData = $model->getTokenDataByTokenAndKegiatan($tokenInput, 'Wisuda');

		if (!$tokenData) {
			// token salah
			$error = "Token tidak valid, silakan coba lagi.";
			return $this->view('wisuda/input_token', compact('error'));
		}

		// Cek apakah mahasiswa sudah terdaftar di tb_wisuda
		$existing = $model->getByNim($nim);
		if ($existing) {
			// Sudah terdaftar, langsung ke form edit/pengisian
			$_SESSION['wisuda_token'] = $tokenInput; // agar tetap bisa akses form
			header('Location: /dashboard/mahasiswa-daftarwisuda');
			exit;
		}

		// Ambil data mahasiswa dari tb_mahasiswa
		$mhs = $model->getMahasiswa($nim);
		if (!$mhs) {
			// jika data mahasiswa tidak ditemukan
			$error = "Data mahasiswa tidak ditemukan.";
			return $this->view('wisuda/input_token', compact('error'));
		}

		// Insert data awal ke tb_wisuda (nama, nim, id_prodi, token)
		$tlulus = "0000-00-00";
		$data = [
			'nim' => $nim,
			'nama' => $mhs['nama'],
			'id_prodi' => $mhs['id_prodi'],
			'nik' => $mhs['nik'],
			'nisn' => $mhs['nisn'],
			'tempat_lahir' => $mhs['tempat_lahir'],
			'tanggal_lahir' => $mhs['tanggal_lahir'],
			'gender' => $mhs['gender'],
			'alamat' => $mhs['alamat'],
			'tahun_masuk' => $mhs['tahun_masuk'],
			'judul_skripsi' => $mhs['judul_skripsi'],
			'dospem1' => $mhs['dospem1'],
			'dospem2' => $mhs['dospem2'],
			'no_wa' => $mhs['no_wa'],
			'tgl_sidang' => $mhs['tgl_sidang'],
			'tahun_wisuda' => date('Y'),
			'tgl_lulus' => $tlulus,
			'token' => $tokenInput,
		];
		$model->insertInitial($data);

		// Hapus token agar tidak bisa dipakai lagi
		$model->deleteToken($tokenInput);

		// Simpan token ke session untuk menandai token sudah dipakai oleh user ini
		$_SESSION['wisuda_token'] = $tokenInput;

		// redirect ke halaman index (form wisuda)
		header('Location: /dashboard/mahasiswa-daftarwisuda');
		exit;
	}

	public function daftar()
	{
		$nim = $_POST['nim'] ?? null;
		if (!$nim) {
			echo "NIM tidak ditemukan.";
			header("Location: /dashboard/mahasiswa-daftarwisuda");
			exit;
		}

		$model = $this->model('Wisuda');

		// Ambil data dari POST
		$data = [
			'nim' => $nim,
			'nik' => $_POST['nik'] ?? '',
			'nisn' => $_POST['nisn'] ?? '',
			'tempat_lahir' => $_POST['tempat_lahir'] ?? '',
			'tanggal_lahir' => $_POST['tanggal_lahir'] ?? '',
			'gender' => $_POST['gender'] ?? '',
			'alamat_leng' => $_POST['alamat_leng'] ?? '',
			'judul_skripsi' => $_POST['judul_skripsi'] ?? '',
			'ipk' => $_POST['ipk'] ?? '',
			'nama_ayah' => $_POST['nama_ayah'] ?? '',
			'nama_ibu' => $_POST['nama_ibu'] ?? '',
			'email' => $_POST['email'] ?? '',
			'tgl_lulus' => $_POST['tgl_lulus'] ?? '',
			'no_wa' => $_POST['no_wa'] ?? '',
		];

		// Proses update data berdasarkan NIM
		$model->update($data);

		if ($model) {
			$_SESSION['info'] = 'Pendaftaran Sukses Dilakukan';
			$_SESSION['info_type'] = 'success';
		} else {
			$_SESSION['info'] = 'Pendaftaran Gagal Dilakukan';
			$_SESSION['info_type'] = 'error';
		}

		header("Location: /dashboard/mahasiswa-daftarwisuda");
		exit;
	}
	
	public function searchDosen()
	{
		ob_clean(); // bersihkan output buffer

		$keyword = $_GET['keyword'] ?? '';

		if (!$keyword) {
			header('Content-Type: application/json');
			echo json_encode([]);
			exit;
		}

		$Wisuda = new \App\Models\Wisuda();
		$results = $Wisuda->searchDosenByName($keyword);

		$names = array_map(fn($row) => $row['nama'], $results);

		header('Content-Type: application/json');
		echo json_encode($names);
		exit;
	}	

}
