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

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

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

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

        // تجهيز البيانات
        $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;
        $createdBy = $_SESSION['user_id'];

        // التحقق من وجود المنخرط
        $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 = ?", [$memberId, $paymentMonth]);
        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("
            INSERT INTO monthly_payments (
                member_id, payment_month, payment_status, payment_date, 
                amount_paid, payment_method, notes, created_by
            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        ");

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

        // إضافة الدفعة كإيراد إذا كانت مدفوعة
        if ($paymentStatus === 'paid' && $amountPaid > 0) {
            addMonthlyPaymentAsIncome(
                $memberId,
                $paymentMonth,
                $amountPaid,
                $paymentMethod,
                $paymentDate,
                $createdBy
            );
        }

        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;
?>
