<?php
// हेडर को शामिल करें
require_once 'header.php';

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

$message = '';
$message_type = '';
$success_count = 0;
$error_count = 0;

// --- CSV FILE UPLOAD LOGIC ---
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["client_csv"])) {
    
    // जांचें कि फाइल अपलोड में कोई एरर तो नहीं है
    if ($_FILES["client_csv"]["error"] > 0) {
        $message = "File Upload Error: " . $_FILES["client_csv"]["error"];
        $message_type = 'error';
    } else {
        $file_name = $_FILES['client_csv']['tmp_name'];
        
        // फाइल को पढ़ने के लिए खोलें
        if (($handle = fopen($file_name, "r")) !== FALSE) {
            
            // हेडर रो को स्किप करें
            fgetcsv($handle); 
            
            // ट्रांजैक्शन शुरू करें ताकि कोई अधूरा डेटा सेव न हो
            $conn->begin_transaction();
            try {
                $stmt = $conn->prepare("INSERT INTO clients (name, contact_person, contact_phone, activation_date) VALUES (?, ?, ?, ?)");

                // CSV की हर एक लाइन को पढ़ें
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                    // सुनिश्चित करें कि अनिवार्य कॉलम खाली नहीं हैं
                    $name = $data[0] ?? '';
                    $person = $data[1] ?? '';
                    $phone = $data[2] ?? '';
                    $date = $data[3] ?? '';

                    if (!empty($name) && !empty($person) && !empty($phone) && !empty($date)) {
                        // तारीख को सही फॉर्मेट में बदलें
                        $formatted_date = date('Y-m-d', strtotime($date));
                        $stmt->bind_param("ssss", $name, $person, $phone, $formatted_date);
                        $stmt->execute();
                        $success_count++;
                    } else {
                        $error_count++;
                    }
                }
                
                // अगर सब कुछ सही रहा, तो ट्रांजैक्शन को सेव करें
                $conn->commit();
                $message = "Import complete! {$success_count} clients were successfully imported. {$error_count} rows were skipped due to missing data.";
                $message_type = 'success';

            } catch (mysqli_sql_exception $exception) {
                // अगर कोई एरर आई, तो ट्रांजैक्शन को रोलबैक करें
                $conn->rollback();
                $message = "An error occurred during import: " . $exception->getMessage();
                $message_type = 'error';
            }
            
            fclose($handle);
            $stmt->close();
        } else {
            $message = "Error opening the uploaded CSV file.";
            $message_type = 'error';
        }
    }
    $conn->close();
}
?>

<title>Import Clients - Digify OS</title>
<h2 class="text-xl font-bold text-gray-800">Import Clients</h2>

<?php
// मुख्य कंटेंट यहाँ से शुरू होता है
?>
<main class="p-6 md:p-10">
    <div class="max-w-2xl mx-auto">
        <?php if (!empty($message)): ?>
            <div class="mb-6 p-4 rounded <?php echo ($message_type == 'success') ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'; ?>">
                <?php echo htmlspecialchars($message); ?>
            </div>
        <?php endif; ?>

        <div class="bg-white p-8 rounded-lg shadow">
            <h3 class="text-xl font-semibold mb-4">Upload CSV File</h3>
            <div class="bg-blue-50 border border-blue-200 p-4 rounded-lg mb-6 text-sm text-blue-800">
                <p class="font-bold">Instructions:</p>
                <ul class="list-disc list-inside mt-2">
                    <li>Your CSV file must have a header row, which will be ignored.</li>
                    <li>The columns must be in this specific order: <strong>Business Name, Contact Person, Phone Number, Activation Date</strong>.</li>
                    <li>All four columns are mandatory for each client. Rows with missing data will be skipped.</li>
                    <li>Date format should be easily readable, like YYYY-MM-DD, DD-MM-YYYY, or MM/DD/YYYY.</li>
                </ul>
            </div>
            
            <form method="POST" action="import-clients.php" enctype="multipart/form-data">
                <div>
                    <label for="client_csv" class="block text-sm font-medium text-gray-700">Select CSV file to upload</label>
                    <input type="file" name="client_csv" id="client_csv" required accept=".csv" class="mt-1 block w-full text-sm text-gray-500
                        file:mr-4 file:py-2 file:px-4
                        file:rounded-full file:border-0
                        file:text-sm file:font-semibold
                        file:bg-blue-50 file:text-blue-700
                        hover:file:bg-blue-100
                    "/>
                </div>

                <div class="flex justify-end mt-8">
                    <a href="clients.php" class="px-4 py-2 border rounded-md text-sm font-medium text-gray-700 hover:bg-gray-50">Cancel</a>
                    <button type="submit" class="ml-3 inline-flex items-center px-4 py-2 bg-blue-600 border border-transparent rounded-md font-semibold text-white hover:bg-blue-700">
                        Upload and Import
                    </button>
                </div>
            </form>
        </div>
    </div>
</main>

<?php
// फुटर को शामिल करें
require_once 'footer.php';
?>