<?php
// config.php को शामिल करें, जो सेशन और डेटाबेस कनेक्शन को संभालेगा।
require_once 'config.php';

// यह फंक्शन जांच करेगा कि मौजूदा यूजर एडमिन या मैनेजर है या नहीं।
function userHasRole($required_roles) {
    if (!isset($_SESSION['user_roles'])) return false;
    return count(array_intersect($required_roles, $_SESSION['user_roles'])) > 0;
}

// सुरक्षा जांच: केवल एडमिन और मैनेजर ही इस पेज को देख सकते हैं।
if (!isset($_SESSION['user_id']) || !userHasRole(['Admin', 'Manager'])) {
    header("Location: dashboard.php");
    exit();
}

// फॉर्म सबमिशन से तारीख की सीमा प्राप्त करें
$start_date = $_POST['start_date'] ?? date('Y-m-01');
$end_date = $_POST['end_date'] ?? date('Y-m-t');

// --- DATA FETCHING ---
// क्वेरी को मल्टी-रोल के लिए अपडेट किया गया है
$sql = "SELECT 
            u.name, 
            GROUP_CONCAT(r.name SEPARATOR ', ') as roles, 
            dr.* FROM daily_reports dr 
        JOIN users u ON dr.user_id = u.id 
        LEFT JOIN user_roles ur ON u.id = ur.user_id
        LEFT JOIN roles r ON ur.role_id = r.id
        WHERE dr.report_date BETWEEN ? AND ? 
        GROUP BY dr.id
        ORDER BY dr.report_date, u.name";
        
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $start_date, $end_date);
$stmt->execute();
$result = $stmt->get_result();

// --- CSV GENERATION ---
$filename = "DigifyOS_Report_" . date('Y-m-d') . ".csv";
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '"');

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

// हैडर पंक्ति जोड़ें
fputcsv($output, ['Date', 'Employee Name', 'Roles', 'Attendance', 'Total Assigned', 'Total Done', 'Additional Assigned', 'Additional Done', 'Pending Yesterday']);

// डेटा पंक्तियाँ जोड़ें
while ($row = $result->fetch_assoc()) {
    fputcsv($output, [
        $row['report_date'],
        $row['name'],
        $row['roles'],
        $row['attendance'],
        $row['total_assigned_tasks'],
        $row['total_done_tasks'],
        $row['additional_assigned_tasks'],
        $row['additional_done_tasks'],
        $row['pending_tasks_yesterday']
    ]);
}

fclose($output);
$stmt->close();
$conn->close();
exit();
?>