<?php
namespace App\Controllers;

use Core\Controller;
use App\Utils\Flasher;
use App\Models\Absensi;
use App\Models\DosenMk;

class AbsensiController extends Controller
{
    private $absensiModel;
    private $dosenMkModel;

    public function __construct()
    {
        $this->absensiModel = $this->model('Absensi');
        $this->dosenMkModel = $this->model('DosenMk');
    }

    public function index()
	{
	   if (!isset($_SESSION['user'])) {
            header('Location: /logout');
            exit;
        }
    
		$username = $_SESSION['user']['niy']; // sesuai native
		$tahunAkademik = $this->dosenMkModel->getTahunAkademikAktif();
		$matkul = $this->dosenMkModel->getMatkulByDosen($username, $tahunAkademik);

		$data = [
			'matkul' => $matkul,
			'mahasiswa' => [],
			'selected' => null
		];
		$this->view('dosen/presensi', $data);
	}


	public function cari()
	{
		$idDmk = $_POST['id_dmk'];
		$latitude = $_POST['latitude'];
		$longitude = $_POST['longitude'];
		$keteranganLokasi = $_POST['keterangan_lokasi'];

		$matkul = $this->dosenMkModel->getMatkulByDosen($_SESSION['user']['niy'], $this->dosenMkModel->getTahunAkademikAktif());
		$mahasiswa = $this->absensiModel->getMahasiswaByDmk($idDmk);

		// Ambil kode_kelas dan kode_mk dari id_dmk
		$detail = $this->dosenMkModel->getDetailMatkul($idDmk);

		// Cek pertemuan terakhir
		$pertemuanKe = $this->absensiModel->getLastPertemuan($idDmk);

		$data = [
			'matkul' => $matkul,
			'mahasiswa' => $mahasiswa,
			'selected' => $idDmk,
			'kode_kelas' => $detail['kode_kelas'] ?? '',
			'kode_mk' => $detail['kode_mk'] ?? '',
			'pertemuan_ke' => $pertemuanKe,
			'latitude' => $latitude,
			'longitude' => $longitude,
			'keterangan_lokasi' => $keteranganLokasi,
		];

		$this->view('dosen/presensi', $data);
	}

	public function simpan()
	{
		$idDmk = $_POST['id_matkul'];
		$pertemuan = $_POST['pertemuan'];
		$latitude = $_POST['latitude'];
		$longitude = $_POST['longitude'];
		$keteranganLokasi = $_POST['keterangan_lokasi'];
		$absensi = $_POST['absensi'] ?? [];

		// Ambil detail kelas + mk + tahun akademik
		$detail = $this->dosenMkModel->getDetailMatkul($idDmk);

		foreach ($absensi as $nim => $status) {
			// Ambil id_krs untuk nim dan mk, tahun akademik
			$id_krs = $this->absensiModel->getIdKrs($nim, $detail['kode_mk'], $detail['tahun_akademik']);

			$this->absensiModel->simpanAbsensi([
				'id_krs' => $id_krs,
				'kode_mk' => $detail['kode_mk'],
				'kode_kelas' => $detail['kode_kelas'],
				'pertemuan_ke' => $pertemuan,
				'status' => $status,
				'tanggal_absensi' => date('Y-m-d'),
				'tahun_akademik' => $detail['tahun_akademik'],
				'latitude' => $latitude,
				'longitude' => $longitude,
				'keterangan_lokasi' => $keteranganLokasi
			]);
		}

		Flasher::setFlash('Absensi berhasil disimpan', 'success');
		header('Location: /dashboard/dosen-absen_mahasiswa');
		exit;
	}

}
