<?php
session_start();
require_once 'config/db.php';
require_once 'includes/auth_check.php';
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Reader\Xls;

$pageTitle = 'استيراد المنتجات - نظام إدارة البقالة';

$success_count = 0;
$error_count = 0;
$errors = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['excel_file'])) {
    $file = $_FILES['excel_file'];
    $allowed_types = ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
    
    if (!in_array($file['type'], $allowed_types)) {
        $errors[] = 'نوع الملف غير مدعوم. يرجى استخدام ملف Excel (.xls أو .xlsx)';
    } else {
        try {
            $inputFileName = $file['tmp_name'];
            
            // تحديد نوع القارئ بناءً على امتداد الملف
            $reader = $file['type'] === 'application/vnd.ms-excel' ? new Xls() : new Xlsx();
            
            // قراءة ملف Excel
            $spreadsheet = $reader->load($inputFileName);
            $worksheet = $spreadsheet->getActiveSheet();
            $rows = $worksheet->toArray();
            
            // تجاهل الصف الأول (العناوين)
            array_shift($rows);
            
            $db = new Database();
            $pdo = $db->getConnection();
            
            // بدء المعاملة
            $pdo->beginTransaction();
            
            foreach ($rows as $index => $row) {
                if (empty(array_filter($row))) continue; // تجاهل الصفوف الفارغة
                
                try {
                    $name = trim($row[0]);
                    $price = floatval($row[1]);
                    $quantity = intval($row[2]);
                    $expiry_date = !empty($row[3]) ? date('Y-m-d', strtotime($row[3])) : null;
                    $barcode = !empty($row[4]) ? trim($row[4]) : null;
                    
                    // التحقق من البيانات
                    if (empty($name)) {
                        throw new Exception('اسم المنتج مطلوب');
                    }
                    if ($price <= 0) {
                        throw new Exception('السعر يجب أن يكون أكبر من 0');
                    }
                    if ($quantity < 0) {
                        throw new Exception('الكمية يجب أن تكون 0 أو أكثر');
                    }
                    
                    // التحقق من تكرار الباركود
                    if (!empty($barcode)) {
                        $stmt = $pdo->prepare("SELECT COUNT(*) FROM products WHERE barcode = ?");
                        $stmt->execute([$barcode]);
                        if ($stmt->fetchColumn() > 0) {
                            throw new Exception('الباركود موجود مسبقاً: ' . $barcode);
                        }
                    }
                    
                    // إدخال المنتج
                    $stmt = $pdo->prepare("
                        INSERT INTO products (name, price, quantity, expiry_date, barcode)
                        VALUES (?, ?, ?, ?, ?)
                    ");
                    $stmt->execute([$name, $price, $quantity, $expiry_date, $barcode]);
                    
                    // إذا كانت الكمية أكبر من 0، أضف حركة مخزون
                    if ($quantity > 0) {
                        $product_id = $pdo->lastInsertId();
                        $stmt = $pdo->prepare("
                            INSERT INTO stock_movements (product_id, quantity, type, reason)
                            VALUES (?, ?, 'in', ?)
                        ");
                        $stmt->execute([$product_id, $quantity, 'استيراد أولي']);
                    }
                    
                    $success_count++;
                    
                } catch (Exception $e) {
                    $errors[] = "خطأ في السطر " . ($index + 2) . ": " . $e->getMessage();
                    $error_count++;
                }
            }
            
            // تأكيد المعاملة إذا لم تكن هناك أخطاء
            if (empty($errors)) {
                $pdo->commit();
                $_SESSION['message'] = "تم استيراد $success_count منتج بنجاح";
                header('Location: products.php');
                exit;
            } else {
                $pdo->rollBack();
            }
            
        } catch (Exception $e) {
            if (isset($pdo) && $pdo->inTransaction()) {
                $pdo->rollBack();
            }
            $errors[] = 'حدث خطأ أثناء معالجة الملف: ' . $e->getMessage();
        }
    }
}

include 'includes/header.php';

?>

<div class="container mt-4">
    <div class="row">
        <div class="col-md-8 mx-auto">
            <div class="card">
                <div class="card-header">
                    <h4 class="mb-0">استيراد المنتجات من Excel</h4>
                </div>
                <div class="card-body">
                    <?php if (!empty($errors)): ?>
                        <div class="alert alert-danger">
                            <h5>حدثت الأخطاء التالية:</h5>
                            <ul>
                                <?php foreach ($errors as $error): ?>
                                    <li><?php echo htmlspecialchars($error); ?></li>
                                <?php endforeach; ?>
                            </ul>
                        </div>
                    <?php endif; ?>

                    <form method="POST" enctype="multipart/form-data" class="needs-validation" novalidate>
                        <div class="mb-4">
                            <h5>تعليمات:</h5>
                            <ol>
                                <li>قم بتحميل <a href="assets/templates/products_template_with_barcode.xlsx">نموذج Excel</a></li>
                                <li>املأ البيانات في النموذج حسب الأعمدة التالية:
                                    <ul>
                                        <li>العمود A: اسم المنتج (مطلوب)</li>
                                        <li>العمود B: السعر (مطلوب، يجب أن يكون أكبر من 0)</li>
                                        <li>العمود C: الكمية (مطلوب، يجب أن تكون 0 أو أكثر)</li>
                                        <li>العمود D: تاريخ انتهاء الصلاحية (اختياري، بتنسيق YYYY-MM-DD)</li>
                                        <li>العمود E: الباركود (اختياري)</li>
                                    </ul>
                                </li>
                                <li>احفظ الملف وقم برفعه هنا</li>
                            </ol>
                        </div>

                        <div class="mb-3">
                            <label for="excel_file" class="form-label">اختر ملف Excel</label>
                            <input type="file" class="form-control" id="excel_file" name="excel_file" accept=".xls,.xlsx" required>
                        </div>

                        <div class="d-flex justify-content-between">
                            <a href="products.php" class="btn btn-secondary">رجوع</a>
                            <button type="submit" class="btn btn-primary">
                                <i class="fas fa-file-import me-2"></i>استيراد
                            </button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

<?php include 'includes/footer.php'; ?>
