<?php
require_once '../../config.php';

// التحقق من تسجيل الدخول
requireLogin();

// التحقق من الصلاحيات
requirePermission('admin');

// التحقق من وجود معرف المصروف
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
    setAlert('danger', 'معرف المصروف غير صحيح');
    header('Location: ' . SITE_URL . '/finance/expenses/index.php');
    exit;
}

$expenseId = (int)$_GET['id'];

// الحصول على بيانات المصروف
$query = "SELECT * FROM expenses WHERE id = :id";
$params = [':id' => $expenseId];
$expense = fetchOne($query, $params);

// التحقق من وجود المصروف
if (!$expense) {
    setAlert('danger', 'المصروف غير موجود');
    header('Location: ' . SITE_URL . '/finance/expenses/index.php');
    exit;
}

// معالجة النموذج عند الإرسال
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // التحقق من البيانات المدخلة
    $amount = (float)$_POST['amount'];
    $category = sanitizeInput($_POST['category']);
    $description = sanitizeInput($_POST['description']);
    $paymentMethod = sanitizeInput($_POST['payment_method']);
    $receiptNumber = sanitizeInput($_POST['receipt_number']);
    $paymentDate = sanitizeInput($_POST['payment_date']);
    $notes = sanitizeInput($_POST['notes']);
    
    // التحقق من البيانات المطلوبة
    $errors = [];
    
    if ($amount <= 0) {
        $errors[] = 'المبلغ يجب أن يكون أكبر من صفر';
    }
    
    if (empty($category)) {
        $errors[] = 'فئة المصروف مطلوبة';
    }
    
    if (empty($description)) {
        $errors[] = 'وصف المصروف مطلوب';
    }
    
    if (empty($paymentMethod)) {
        $errors[] = 'طريقة الدفع مطلوبة';
    }
    
    if (empty($paymentDate)) {
        $errors[] = 'تاريخ الدفع مطلوب';
    }
    
    // معالجة الإيصال إذا تم تحميله
    $receiptFile = $expense['receipt_file']; // الاحتفاظ بالملف الحالي إذا لم يتم تحميل ملف جديد
    
    if (isset($_FILES['receipt_file']) && $_FILES['receipt_file']['error'] === UPLOAD_ERR_OK) {
        $allowedTypes = ['image/jpeg', 'image/png', 'image/gif', 'application/pdf'];
        $maxFileSize = 5 * 1024 * 1024; // 5 ميجابايت
        
        $fileType = $_FILES['receipt_file']['type'];
        $fileSize = $_FILES['receipt_file']['size'];
        $fileName = $_FILES['receipt_file']['name'];
        
        if (!in_array($fileType, $allowedTypes)) {
            $errors[] = 'نوع الملف غير مسموح به. الأنواع المسموح بها: JPEG, PNG, GIF, PDF';
        }
        
        if ($fileSize > $maxFileSize) {
            $errors[] = 'حجم الملف كبير جدًا. الحد الأقصى المسموح به: 5 ميجابايت';
        }
        
        if (empty($errors)) {
            // إنشاء مجلد الإيصالات إذا لم يكن موجودًا
            $uploadDir = UPLOAD_DIR . '/receipts';
            if (!file_exists($uploadDir)) {
                mkdir($uploadDir, 0777, true);
            }
            
            // إنشاء اسم فريد للملف
            $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
            $newFileName = uniqid('receipt_') . '.' . $fileExtension;
            $uploadPath = $uploadDir . '/' . $newFileName;
            
            if (move_uploaded_file($_FILES['receipt_file']['tmp_name'], $uploadPath)) {
                // حذف الملف القديم إذا كان موجودًا
                if ($expense['receipt_file'] && file_exists($uploadDir . '/' . $expense['receipt_file'])) {
                    unlink($uploadDir . '/' . $expense['receipt_file']);
                }
                
                $receiptFile = $newFileName;
            } else {
                $errors[] = 'حدث خطأ أثناء تحميل الملف';
            }
        }
    }
    
    // إذا لم تكن هناك أخطاء، قم بتحديث المصروف
    if (empty($errors)) {
        $query = "UPDATE expenses SET 
                  amount = :amount, 
                  category = :category, 
                  description = :description, 
                  payment_method = :payment_method, 
                  receipt_number = :receipt_number, 
                  receipt_file = :receipt_file, 
                  payment_date = :payment_date, 
                  notes = :notes, 
                  updated_by = :updated_by, 
                  updated_at = :updated_at 
                  WHERE id = :id";
        
        $params = [
            ':amount' => $amount,
            ':category' => $category,
            ':description' => $description,
            ':payment_method' => $paymentMethod,
            ':receipt_number' => $receiptNumber,
            ':receipt_file' => $receiptFile,
            ':payment_date' => $paymentDate,
            ':notes' => $notes,
            ':updated_by' => $_SESSION['user_id'],
            ':updated_at' => date('Y-m-d H:i:s'),
            ':id' => $expenseId
        ];
        
        $result = executeQuery($query, $params);
        
        if ($result) {
            setAlert('success', 'تم تحديث المصروف بنجاح');
            header('Location: ' . SITE_URL . '/finance/expenses/index.php');
            exit;
        } else {
            $errors[] = 'حدث خطأ أثناء تحديث المصروف';
        }
    }
    
    // إذا كانت هناك أخطاء، قم بعرضها
    if (!empty($errors)) {
        $errorMessage = implode('<br>', $errors);
        setAlert('danger', $errorMessage);
    }
} else {
    // تعبئة النموذج ببيانات المصروف الحالية
    $_POST = $expense;
}

// عنوان الصفحة
$pageTitle = 'تعديل المصروف';

// تضمين ملف الهيدر
include '../../includes/header.php';
?>

<div class="d-flex justify-content-between align-items-center mb-4">
    <h1 class="h3 mb-0"><i class="fas fa-edit me-2"></i> تعديل المصروف</h1>
    <div>
        <a href="<?php echo SITE_URL; ?>/finance/expenses/index.php" class="btn btn-secondary">
            <i class="fas fa-arrow-right"></i> العودة إلى قائمة المصروفات
        </a>
    </div>
</div>

<div class="card mb-4">
    <div class="card-body">
        <form action="" method="post" enctype="multipart/form-data">
            <div class="row">
                <!-- معلومات المصروف الأساسية -->
                <div class="col-md-6">
                    <h4 class="mb-3">معلومات المصروف</h4>
                    
                    <div class="mb-3">
                        <label for="amount" class="form-label">المبلغ (درهم) <span class="text-danger">*</span></label>
                        <input type="number" class="form-control" id="amount" name="amount" value="<?php echo isset($_POST['amount']) ? $_POST['amount'] : ''; ?>" step="0.01" min="0" required>
                    </div>
                    
                    <div class="mb-3">
                        <label for="category" class="form-label">فئة المصروف <span class="text-danger">*</span></label>
                        <select class="form-select" id="category" name="category" required>
                            <option value="">اختر الفئة</option>
                            <option value="salaries" <?php echo (isset($_POST['category']) && $_POST['category'] === 'salaries') ? 'selected' : ''; ?>>رواتب ومكافآت</option>
                            <option value="equipment" <?php echo (isset($_POST['category']) && $_POST['category'] === 'equipment') ? 'selected' : ''; ?>>معدات وتجهيزات</option>
                            <option value="rent" <?php echo (isset($_POST['category']) && $_POST['category'] === 'rent') ? 'selected' : ''; ?>>إيجارات</option>
                            <option value="utilities" <?php echo (isset($_POST['category']) && $_POST['category'] === 'utilities') ? 'selected' : ''; ?>>فواتير ومرافق</option>
                            <option value="transportation" <?php echo (isset($_POST['category']) && $_POST['category'] === 'transportation') ? 'selected' : ''; ?>>نقل ومواصلات</option>
                            <option value="maintenance" <?php echo (isset($_POST['category']) && $_POST['category'] === 'maintenance') ? 'selected' : ''; ?>>صيانة</option>
                            <option value="events" <?php echo (isset($_POST['category']) && $_POST['category'] === 'events') ? 'selected' : ''; ?>>فعاليات ومسابقات</option>
                            <option value="administrative" <?php echo (isset($_POST['category']) && $_POST['category'] === 'administrative') ? 'selected' : ''; ?>>مصاريف إدارية</option>
                            <option value="other" <?php echo (isset($_POST['category']) && $_POST['category'] === 'other') ? 'selected' : ''; ?>>أخرى</option>
                        </select>
                    </div>
                    
                    <div class="mb-3">
                        <label for="description" class="form-label">وصف المصروف <span class="text-danger">*</span></label>
                        <textarea class="form-control" id="description" name="description" rows="3" required><?php echo isset($_POST['description']) ? $_POST['description'] : ''; ?></textarea>
                    </div>
                </div>
                
                <!-- معلومات الدفع -->
                <div class="col-md-6">
                    <h4 class="mb-3">معلومات الدفع</h4>
                    
                    <div class="mb-3">
                        <label for="payment_method" class="form-label">طريقة الدفع <span class="text-danger">*</span></label>
                        <select class="form-select" id="payment_method" name="payment_method" required>
                            <option value="">اختر طريقة الدفع</option>
                            <option value="cash" <?php echo (isset($_POST['payment_method']) && $_POST['payment_method'] === 'cash') ? 'selected' : ''; ?>>نقدا</option>
                            <option value="bank_transfer" <?php echo (isset($_POST['payment_method']) && $_POST['payment_method'] === 'bank_transfer') ? 'selected' : ''; ?>>تحويل بنكي</option>
                            <option value="check" <?php echo (isset($_POST['payment_method']) && $_POST['payment_method'] === 'check') ? 'selected' : ''; ?>>شيك</option>
                        </select>
                    </div>
                    
                    <div class="mb-3">
                        <label for="receipt_number" class="form-label">رقم الإيصال</label>
                        <input type="text" class="form-control" id="receipt_number" name="receipt_number" value="<?php echo isset($_POST['receipt_number']) ? $_POST['receipt_number'] : ''; ?>">
                    </div>
                    
                    <div class="mb-3">
                        <label for="receipt_file" class="form-label">صورة الإيصال</label>
                        <input type="file" class="form-control" id="receipt_file" name="receipt_file" accept="image/jpeg,image/png,image/gif,application/pdf">
                        <div class="form-text">الأنواع المسموح بها: JPEG, PNG, GIF, PDF. الحد الأقصى للحجم: 5 ميجابايت.</div>
                        
                        <?php if (!empty($expense['receipt_file'])): ?>
                        <div class="mt-2">
                            <p class="mb-1">الإيصال الحالي:</p>
                            <?php if (in_array(pathinfo($expense['receipt_file'], PATHINFO_EXTENSION), ['jpg', 'jpeg', 'png', 'gif'])): ?>
                                <img src="<?php echo SITE_URL . '/uploads/receipts/' . $expense['receipt_file']; ?>" alt="إيصال" class="img-thumbnail" style="max-width: 200px;">
                            <?php else: ?>
                                <a href="<?php echo SITE_URL . '/uploads/receipts/' . $expense['receipt_file']; ?>" target="_blank" class="btn btn-sm btn-outline-primary">
                                    <i class="fas fa-file-pdf"></i> عرض الإيصال
                                </a>
                            <?php endif; ?>
                        </div>
                        <?php endif; ?>
                    </div>
                    
                    <div class="mb-3">
                        <label for="payment_date" class="form-label">تاريخ الدفع <span class="text-danger">*</span></label>
                        <input type="date" class="form-control" id="payment_date" name="payment_date" value="<?php echo isset($_POST['payment_date']) ? $_POST['payment_date'] : date('Y-m-d'); ?>" required>
                    </div>
                    
                    <div class="mb-3">
                        <label for="notes" class="form-label">ملاحظات إضافية</label>
                        <textarea class="form-control" id="notes" name="notes" rows="3"><?php echo isset($_POST['notes']) ? $_POST['notes'] : ''; ?></textarea>
                    </div>
                </div>
            </div>
            
            <div class="d-grid gap-2 d-md-flex justify-content-md-end mt-4">
                <a href="<?php echo SITE_URL; ?>/finance/expenses/index.php" class="btn btn-secondary me-md-2">
                    <i class="fas fa-times"></i> إلغاء
                </a>
                <button type="submit" class="btn btn-primary">
                    <i class="fas fa-save"></i> حفظ التغييرات
                </button>
            </div>
        </form>
    </div>
</div>

<?php
// تضمين ملف الفوتر
include '../../includes/footer.php';
?>
