<?php
session_start();
// Bắt buộc phải đăng nhập mới được tải dữ liệu
if (!isset($_SESSION['da_dang_nhap']) || $_SESSION['da_dang_nhap'] !== true) {
    die('Truy cập bị từ chối!');
}

require 'config.php';

$loai = $_GET['loai'] ?? '';
if (!in_array($loai, ['ca_nhan', 'doanh_nghiep', 'ung_vien'])) {
    die('Loại dữ liệu không hợp lệ!');
}

// 1. Lấy danh sách câu hỏi để làm Tiêu đề cột (Header) trong Excel
$stmt_qh = $conn->prepare("SELECT id, noi_dung_cau_hoi FROM danh_sach_cau_hoi WHERE loai_khao_sat = ? ORDER BY thu_tu ASC");
$stmt_qh->execute([$loai]);
$cau_hoi_list = $stmt_qh->fetchAll(PDO::FETCH_ASSOC);

// 2. Lấy dữ liệu đáp án để dịch từ a, b, c sang văn bản đầy đủ
$stmt_da = $conn->query("SELECT cau_hoi_id, ky_hieu, noi_dung_dap_an FROM danh_sach_dap_an");
$map_da = [];
while($row = $stmt_da->fetch(PDO::FETCH_ASSOC)) {
    $map_da[$row['cau_hoi_id']][$row['ky_hieu']] = $row['noi_dung_dap_an'];
}

// 3. Cấu hình file tải về (Ép trình duyệt tải file đuôi .csv mở bằng Excel)
$ten_file = "DuLieu_" . strtoupper($loai) . "_" . date('dmY_Hi') . ".csv";
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $ten_file);
$output = fopen('php://output', 'w');

// Thêm BOM để Excel đọc tiếng Việt không bị lỗi font
fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF)); 

// 4. Khởi tạo dòng Tiêu đề (Row 1)
$header = ['ID', 'Thời Gian Gửi'];
if ($loai == 'ca_nhan') {
    array_push($header, 'Họ Tên', 'Số Điện Thoại', 'Email');
} elseif ($loai == 'doanh_nghiep') {
    array_push($header, 'Tên Doanh Nghiệp', 'Người Đại Diện', 'Số Điện Thoại', 'Email');
} elseif ($loai == 'ung_vien') {
    array_push($header, 'Họ Tên', 'Năm Sinh', 'Công Việc', 'Trình Độ', 'Số Điện Thoại', 'Email', 'Tổng Điểm', 'Phân Loại');
}

// Bổ sung các câu hỏi vào làm tiêu đề cột tiếp theo
foreach ($cau_hoi_list as $qh) {
    $header[] = $qh['noi_dung_cau_hoi'];
}
fputcsv($output, $header); // Viết dòng tiêu đề vào file

// 5. Lấy dữ liệu từ DataBase và ghi từng dòng vào Excel
$bang = ($loai == 'ca_nhan') ? 'khaosat_canhan' : (($loai == 'doanh_nghiep') ? 'khaosat_doanhnghiep' : 'ung_vien');
$data_stmt = $conn->query("SELECT * FROM $bang ORDER BY ngay_tao DESC");
$ds_khach_hang = $data_stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($ds_khach_hang as $row) {
    $line = [$row['id'], date('d/m/Y H:i', strtotime($row['ngay_tao']))];
    
    // Nạp thông tin liên hệ
    if ($loai == 'ca_nhan') {
        array_push($line, $row['ho_ten'], $row['so_dien_thoai'], $row['email']);
    } elseif ($loai == 'doanh_nghiep') {
        array_push($line, $row['ten_doanh_nghiep'], $row['nguoi_dai_dien'], $row['so_dien_thoai'], $row['email']);
    } elseif ($loai == 'ung_vien') {
        array_push($line, $row['ho_ten'], $row['nam_sinh'], $row['cong_viec'], $row['trinh_do_van_hoa'], $row['so_dien_thoai'], $row['email'], $row['diem_so'], $row['phan_loai']);
    }

    // Nạp chi tiết câu trả lời vào từng cột tương ứng
    $cau_tra_loi_arr = json_decode($row['cau_tra_loi'], true) ?: [];
    
    foreach ($cau_hoi_list as $qh) {
        $q_id = $qh['id'];
        $ans_str = '';
        
        if (isset($cau_tra_loi_arr[$q_id])) {
            $ans = $cau_tra_loi_arr[$q_id];
            // Nếu là hộp kiểm (Nhiều đáp án)
            if (is_array($ans)) {
                $dich_ans = [];
                foreach ($ans as $opt) {
                    $dich_ans[] = isset($map_da[$q_id][$opt]) ? "- " . $map_da[$q_id][$opt] : $opt;
                }
                $ans_str = implode("\n", $dich_ans);
            } else {
                // Nếu là trắc nghiệm 1 đáp án hoặc tự luận
                $ans_str = isset($map_da[$q_id][$ans]) ? $map_da[$q_id][$ans] : $ans;
            }
        }
        $line[] = $ans_str; // Đẩy vào mảng của dòng
    }
    
    fputcsv($output, $line); // Ghi dòng dữ liệu vào Excel
}

fclose($output);
exit;
?>