<?php
require_once dirname(__DIR__) . '/models/Evaluation.php';
require_once dirname(__DIR__) . '/../config/db.php';

class EvaluationController {
    private $conn;
    private $evaluation;

    public function __construct() {
        $this->conn = connectDB();
        $this->evaluation = new Evaluation($this->conn);
    }

    // Menampilkan formulir evaluasi
    public function showForm() {
        // Cukup panggil view-nya, karena tidak ada data yang perlu di-load sebelumnya
        require_once dirname(__DIR__) . '/../views/evaluation/form.php';
    }

    // Memproses data yang dikirim dari formulir
    public function submit() {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            // Mengisi properti objek evaluation dari data POST
            $this->evaluation->nama = $_POST['nama'];
            $this->evaluation->email = $_POST['email'];
            $this->evaluation->unit = $_POST['unit'];
            $this->evaluation->jabatan = $_POST['jabatan'];
            $this->evaluation->lama_penggunaan = $_POST['lama_penggunaan'];
            
            // Simpan data pemahaman pribadi dan unit ke kolom masing-masing
            $this->evaluation->pengalaman_pengguna = $_POST['pemahaman_pribadi'];
            $this->evaluation->pemahaman_unit = $_POST['pemahaman_unit'];
            
            // Menggabungkan usulan fitur dan deskripsinya
            $usulan_fitur = "Usulan Fitur: " . $_POST['usulan_fitur'] . "\n\n" .
                            "Deskripsi & Alur Bisnis: " . $_POST['deskripsi_fitur'];
            $this->evaluation->usulan_fitur = $usulan_fitur;

            $this->evaluation->saran_pengembangan = $_POST['saran_pengembangan'];

            // Menyimpan data ke database
            if ($this->evaluation->save()) {
                // Jika berhasil, redirect ke halaman form dengan pesan sukses
                header("Location: index.php?page=evaluation_form&status=success");
                exit();
            } else {
                // Jika gagal, redirect dengan pesan error
                header("Location: index.php?page=evaluation_form&status=error");
                exit();
            }
        }
        // Jika bukan POST request, redirect kembali ke form
        header("Location: index.php?page=evaluation_form");
        exit();
    }

    // Menampilkan semua hasil evaluasi (untuk admin)
    public function showResults() {
        // Periksa apakah pengguna adalah admin
        if (!isset($_SESSION['role']) || $_SESSION['role'] !== 'admin') {
            // Jika bukan admin, redirect atau tampilkan pesan error
            echo "Akses ditolak. Halaman ini hanya untuk admin.";
            exit;
        }

        $results = $this->evaluation->getAll();
        require_once dirname(__DIR__) . '/../views/evaluation/results.php';
    }

    // Method untuk mengunduh hasil evaluasi (khusus admin)
    public function downloadResults() {
        // Periksa apakah pengguna adalah admin
        if (!isset($_SESSION['role']) || $_SESSION['role'] !== 'admin') {
            echo "Akses ditolak. Anda bukan admin.";
            exit;
        }

        $results = $this->evaluation->getAll();

        if (empty($results)) {
            echo "Tidak ada data evaluasi untuk diunduh.";
            exit;
        }

        // Set header untuk download CSV
        header('Content-Type: text/csv');
        header('Content-Disposition: attachment; filename="hasil_evaluasi_' . date('Y-m-d') . '.csv"');
        header('Pragma: no-cache');
        header('Expires: 0');

        // Buat file output PHP
        $output = fopen('php://output', 'w');

        // Tulis header CSV
        $header = [
            'ID',
            'Nama',
            'Email',
            'Unit',
            'Jabatan',
            'Lama Penggunaan SIMRS',
            'Pengalaman Pengguna',
            'Pemahaman Unit',
            'Usulan Fitur',
            'Saran Pengembangan',
            'Tanggal Submit'
        ];
        fputcsv($output, $header, ';'); // Use semicolon as delimiter to avoid issues with commas in text fields

        // Tulis data baris CSV
        foreach ($results as $row) {
            $rowData = [
                $row['id'],
                $row['nama'],
                $row['email'],
                $row['unit'],
                $row['jabatan'],
                $row['lama_penggunaan'],
                str_replace(["\r", "\n"], " ", $row['pengalaman_pengguna']), // Clean newlines for CSV
                str_replace(["\r", "\n"], " ", $row['pemahaman_unit']),
                str_replace(["\r", "\n"], " ", $row['usulan_fitur']),
                str_replace(["\r", "\n"], " ", $row['saran_pengembangan']),
                $row['created_at']
            ];
            fputcsv($output, $rowData, ';');
        }

        fclose($output);
        exit;
    }
}
