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

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

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

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        // التحقق من البيانات المطلوبة
        if (empty($_POST['payment_id']) || empty($_POST['member_id']) || empty($_POST['payment_month']) || empty($_POST['payment_status'])) {
            setAlert('danger', 'يرجى ملء جميع الحقول المطلوبة');
            header('Location: ' . SITE_URL . '/monthly_payments/index.php');
            exit;
        }

        // تجهيز البيانات
        $paymentId = (int) sanitizeInput($_POST['payment_id']);
        $memberId = (int) sanitizeInput($_POST['member_id']);
        $paymentMonth = sanitizeInput($_POST['payment_month']) . '-01'; // إضافة اليوم الأول من الشهر
        $paymentStatus = sanitizeInput($_POST['payment_status']);
        $paymentDate = !empty($_POST['payment_date']) ? sanitizeInput($_POST['payment_date']) : null;
        $amountPaid = !empty($_POST['amount_paid']) ? (float) sanitizeInput($_POST['amount_paid']) : 0;
        $paymentMethod = !empty($_POST['payment_method']) ? sanitizeInput($_POST['payment_method']) : null;
        $notes = !empty($_POST['notes']) ? sanitizeInput($_POST['notes']) : null;

        // التحقق من وجود الدفعة
        $payment = fetchOne("SELECT id FROM monthly_payments WHERE id = ?", [$paymentId]);
        if (!$payment) {
            setAlert('danger', 'الدفعة غير موجودة');
            header('Location: ' . SITE_URL . '/monthly_payments/index.php');
            exit;
        }

        // التحقق من وجود المنخرط
        $member = fetchOne("SELECT id FROM members WHERE id = ?", [$memberId]);
        if (!$member) {
            setAlert('danger', 'المنخرط غير موجود');
            header('Location: ' . SITE_URL . '/monthly_payments/index.php');
            exit;
        }

        // التحقق من عدم وجود دفعة أخرى لنفس المنخرط ونفس الشهر (باستثناء الدفعة الحالية)
        $existingPayment = fetchOne("SELECT id FROM monthly_payments WHERE member_id = ? AND payment_month = ? AND id != ?", [$memberId, $paymentMonth, $paymentId]);
        if ($existingPayment) {
            setAlert('warning', 'توجد دفعة أخرى مسجلة لهذا المنخرط في هذا الشهر');
            header('Location: ' . SITE_URL . '/monthly_payments/index.php');
            exit;
        }

        // تعديل البيانات بناءً على حالة الدفع
        if ($paymentStatus === 'unpaid') {
            $paymentDate = null;
            $amountPaid = 0;
            $paymentMethod = null;
        }

        // تحديث البيانات
        $stmt = $db->prepare("
            UPDATE monthly_payments SET 
                member_id = ?, 
                payment_month = ?, 
                payment_status = ?, 
                payment_date = ?, 
                amount_paid = ?, 
                payment_method = ?, 
                notes = ?
            WHERE id = ?
        ");

        $stmt->execute([
            $memberId, $paymentMonth, $paymentStatus, $paymentDate,
            $amountPaid, $paymentMethod, $notes, $paymentId
        ]);

        setAlert('success', 'تم تحديث دفعة الاشتراك الشهري بنجاح');
    } catch (PDOException $e) {
        setAlert('danger', 'حدث خطأ أثناء تحديث الدفعة: ' . $e->getMessage());
    }
}

// Redirection vers la page appropriée
$redirectUrl = !empty($_POST['redirect_url']) ? $_POST['redirect_url'] : SITE_URL . '/monthly_payments/index.php';
header('Location: ' . $redirectUrl);
exit;
?>
