<?php

namespace App\Controllers;

use App\Models\PemetaanKurikulumModel;
use App\Models\ProgramStudiModel;
use App\Models\KurikulumModel;

class PemetaanKurikulum extends BaseController
{
    protected PemetaanKurikulumModel $pemetaanModel;
    protected ProgramStudiModel $prodiModel;
    protected KurikulumModel $kurikulumModel;

    public function __construct()
    {
        $this->pemetaanModel = new PemetaanKurikulumModel();
        $this->prodiModel = new ProgramStudiModel();
        $this->kurikulumModel = new KurikulumModel();
    }

    public function index()
    {
        $data = [
            'title'      => 'Pemetaan Kurikulum | SIAKAD ITKA',
            'pemetaan'   => $this->pemetaanModel->getPemetaan(),
            'listProdi'  => $this->prodiModel->findAll(),
            'kurikulum'  => $this->kurikulumModel->findAll()
        ];

        return view('kurikulum/pemetaan', $data);
    }

    public function simpan()
    {
        $prodi_id = $this->request->getPost('prodi_id');
        $angkatan = $this->request->getPost('angkatan');
        $kurikulum_id = $this->request->getPost('kurikulum_id');

        if (!$prodi_id || !$angkatan || !$kurikulum_id) {
            return redirect()->back()->with('error', 'Semua kolom harus diisi.');
        }

        // Check if exists
        $existing = $this->pemetaanModel->where([
            'prodi_id' => $prodi_id,
            'angkatan' => $angkatan
        ])->first();

        if ($existing) {
            $this->pemetaanModel->update($existing['id'], ['kurikulum_id' => $kurikulum_id]);
        } else {
            $this->pemetaanModel->insert([
                'prodi_id' => $prodi_id,
                'angkatan' => $angkatan,
                'kurikulum_id' => $kurikulum_id
            ]);
        }

        return redirect()->back()->with('success', 'Pemetaan kurikulum berhasil disimpan.');
    }

    public function hapus($id)
    {
        if ($this->pemetaanModel->find($id)) {
            $this->pemetaanModel->delete($id);
            return redirect()->back()->with('success', 'Pemetaan berhasil dihapus.');
        }
        return redirect()->back()->with('error', 'Data tidak ditemukan.');
    }
}
