<?php
/**
 * وظائف خاصة بالإدارة المالية
 */

/**
 * إضافة دفعة اشتراك شهري كإيراد في الجدول المالي
 *
 * @param int $memberId معرف المنخرط
 * @param string $paymentMonth شهر الدفع (YYYY-MM)
 * @param float $amount المبلغ المدفوع
 * @param string $paymentMethod طريقة الدفع
 * @param string $paymentDate تاريخ الدفع
 * @param int $userId معرف المستخدم الذي قام بالتسجيل
 * @return bool نجاح أو فشل العملية
 */
function addMonthlyPaymentAsIncome($memberId, $paymentMonth, $amount, $paymentMethod, $paymentDate, $userId) {
    // الحصول على اسم المنخرط
    $member = fetchOne("SELECT first_name, last_name FROM members WHERE id = ?", [$memberId]);
    $memberName = $member ? $member['first_name'] . ' ' . $member['last_name'] : 'غير معروف';
    
    // تحديد المصدر والوصف
    $source = 'monthly_subscription';
    $description = 'اشتراك شهري: ' . $memberName . ' - ' . date('m/Y', strtotime($paymentMonth));
    
    // إضافة الإيراد
    $query = "INSERT INTO income (source, description, amount, payment_method, payment_date, created_by, created_at) 
              VALUES (?, ?, ?, ?, ?, ?, datetime('now'))";
    
    $params = [
        $source,
        $description,
        $amount,
        $paymentMethod,
        $paymentDate,
        $userId
    ];
    
    $stmt = executeQuery($query, $params);
    return $stmt->rowCount() > 0;
}

/**
 * التحقق من وجود إيراد مسجل لدفعة اشتراك شهري
 *
 * @param int $memberId معرف المنخرط
 * @param string $paymentMonth شهر الدفع (YYYY-MM)
 * @return bool هل يوجد إيراد مسجل أم لا
 */
function checkMonthlyPaymentIncome($memberId, $paymentMonth) {
    // الحصول على اسم المنخرط
    $member = fetchOne("SELECT first_name, last_name FROM members WHERE id = ?", [$memberId]);
    $memberName = $member ? $member['first_name'] . ' ' . $member['last_name'] : 'غير معروف';
    
    // تحديد الوصف المتوقع
    $description = 'اشتراك شهري: ' . $memberName . ' - ' . date('m/Y', strtotime($paymentMonth));
    
    // البحث عن الإيراد
    $query = "SELECT COUNT(*) as count FROM income WHERE source = 'monthly_subscription' AND description = ?";
    $result = fetchOne($query, [$description]);
    
    return ($result && $result['count'] > 0);
}

/**
 * حساب إجمالي الإيرادات من الاشتراكات الشهرية خلال فترة زمنية
 *
 * @param string $startDate تاريخ البداية
 * @param string $endDate تاريخ النهاية
 * @return float إجمالي الإيرادات
 */
function calculateMonthlySubscriptionIncome($startDate, $endDate) {
    $query = "SELECT SUM(amount) as total FROM income 
              WHERE source = 'monthly_subscription' 
              AND payment_date BETWEEN ? AND ?";
    
    $result = fetchOne($query, [$startDate, $endDate]);
    
    return $result ? (float)$result['total'] : 0;
}

/**
 * إضافة دفعة اشتراك سنوي كإيراد في الجدول المالي
 *
 * @param int $memberId معرف المنخرط
 * @param float $amount المبلغ المدفوع
 * @param string $paymentMethod طريقة الدفع
 * @param string $description وصف الدفعة
 * @return bool نجاح أو فشل العملية
 */
function addSubscriptionAsIncome($memberId, $amount, $paymentMethod, $description = '') {
    // الحصول على اسم المنخرط إذا لم يتم توفير وصف
    if (empty($description)) {
        $member = fetchOne("SELECT first_name, last_name FROM members WHERE id = ?", [$memberId]);
        $memberName = $member ? $member['first_name'] . ' ' . $member['last_name'] : 'غير معروف';
        $description = 'اشتراك سنوي: ' . $memberName;
    }
    
    // تحديد المصدر
    $source = 'subscription';
    
    // إضافة الإيراد
    $query = "INSERT INTO income (source, description, amount, payment_method, payment_date, created_by, created_at) 
              VALUES (?, ?, ?, ?, date('now'), ?, datetime('now'))";
    
    $params = [
        $source,
        $description,
        $amount,
        $paymentMethod,
        $_SESSION['user_id']
    ];
    
    $stmt = executeQuery($query, $params);
    return $stmt->rowCount() > 0;
}
?>
