<?php
namespace App\Controllers;

use Core\Controller;

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

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

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

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

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

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

        if (!$tokenData) {
            // token di session tidak valid (misal token sudah expired/hapus)
            unset($_SESSION['yudisium_token']);
            return $this->view('yudisium/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('yudisium/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('Yudisium');

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

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

		// Cek apakah mahasiswa sudah terdaftar di tb_yudisium
		$existing = $model->getByNim($nim);
		if ($existing) {
			// Sudah terdaftar, langsung ke form edit/pengisian
			$_SESSION['yudisium_token'] = $tokenInput; // agar tetap bisa akses form
			header('Location: /dashboard/mahasiswa-daftaryudisium');
			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('yudisium/input_token', compact('error'));
		}

		// Insert data awal ke tb_yudisium (nama, nim, id_prodi, token)
		$tsidang = "0000-00-00";
		$data = [
			'nama' => $mhs['nama'],
			'nim' => $nim,
			'id_prodi' => $mhs['id_prodi'],
			'gender' => $mhs['jenis_kelamin'],
			'tempat_lahir' => $mhs['tmpt_lahir'],
			'tanggal_lahir' => $mhs['tgl_lahir'],
			'tahun_masuk' => $mhs['tahun_masuk'],
			'alamat' => $mhs['alamat'],
			'tahun_yudisium' => date('Y'),
			'tgl_sidang' => $tsidang,
			'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['yudisium_token'] = $tokenInput;

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

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

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

		// 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' => $_POST['alamat'] ?? '',
			'judul_skripsi' => $_POST['judul_skripsi'] ?? '',
			'dospem1' => $_POST['dospem1'] ?? '',
			'dospem2' => $_POST['dospem2'] ?? '',
			'link_skripsi' => $_POST['link_skripsi'] ?? '',
			'tgl_sidang' => $_POST['tgl_sidang'] ?? '',
			'no_wa' => $_POST['no_wa'] ?? '',
			'tahun_masuk' => $_POST['tahun_masuk'] ?? '',
		];

		// 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-daftaryudisium");
		exit;
	}
	
	public function searchDosen()
	{
		ob_clean(); // bersihkan output buffer

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

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

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

		$names = array_map(function ($row) {
            return $row['nama'];
        }, $results);


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

}
