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

// Titre de la page
echo "<h1>Synchronisation des paiements mensuels avec les revenus</h1>";

// Récupérer tous les paiements mensuels avec le statut "paid"
$query = "SELECT mp.*, m.first_name, m.last_name
          FROM monthly_payments mp
          JOIN members m ON mp.member_id = m.id
          WHERE mp.payment_status = 'paid' AND mp.amount_paid > 0";
$monthlyPayments = fetchAll($query);

echo "<p>Nombre total de paiements mensuels avec statut 'paid': " . count($monthlyPayments) . "</p>";

// Compteurs pour les statistiques
$alreadyAddedCount = 0;
$newlyAddedCount = 0;
$errorCount = 0;

// Parcourir tous les paiements mensuels
foreach ($monthlyPayments as $payment) {
    // Vérifier si ce paiement est déjà enregistré comme revenu
    $memberName = $payment['first_name'] . ' ' . $payment['last_name'];
    $description = 'اشتراك شهري: ' . $memberName . ' - ' . date('m/Y', strtotime($payment['payment_month']));
    
    $existingIncome = fetchOne(
        "SELECT id FROM income WHERE source = 'monthly_subscription' AND description = ? AND amount = ? AND payment_date = ?",
        [$description, $payment['amount_paid'], $payment['payment_date']]
    );
    
    if ($existingIncome) {
        echo "<p style='color: blue;'>✓ Paiement déjà enregistré comme revenu: " . $description . " - " . $payment['amount_paid'] . " " . CURRENCY . "</p>";
        $alreadyAddedCount++;
    } else {
        // Ajouter le paiement comme revenu
        try {
            $result = addMonthlyPaymentAsIncome(
                $payment['member_id'],
                $payment['payment_month'],
                $payment['amount_paid'],
                $payment['payment_method'],
                $payment['payment_date'],
                $payment['created_by']
            );
            
            if ($result) {
                echo "<p style='color: green;'>✓ Paiement ajouté avec succès comme revenu: " . $description . " - " . $payment['amount_paid'] . " " . CURRENCY . "</p>";
                $newlyAddedCount++;
            } else {
                echo "<p style='color: red;'>✗ Erreur lors de l'ajout du paiement comme revenu: " . $description . " - " . $payment['amount_paid'] . " " . CURRENCY . "</p>";
                $errorCount++;
            }
        } catch (Exception $e) {
            echo "<p style='color: red;'>✗ Exception lors de l'ajout du paiement comme revenu: " . $description . " - " . $e->getMessage() . "</p>";
            $errorCount++;
        }
    }
}

// Afficher le résumé
echo "<h2>Résumé de la synchronisation</h2>";
echo "<ul>";
echo "<li>Paiements déjà enregistrés comme revenus: " . $alreadyAddedCount . "</li>";
echo "<li>Paiements nouvellement ajoutés comme revenus: " . $newlyAddedCount . "</li>";
echo "<li>Erreurs lors de l'ajout: " . $errorCount . "</li>";
echo "</ul>";

if ($newlyAddedCount > 0) {
    echo "<p style='color: green; font-weight: bold;'>La synchronisation a été effectuée avec succès. " . $newlyAddedCount . " paiements mensuels ont été ajoutés aux revenus.</p>";
} else if ($alreadyAddedCount > 0 && $errorCount == 0) {
    echo "<p style='color: blue; font-weight: bold;'>Tous les paiements mensuels étaient déjà enregistrés comme revenus. Aucune action n'était nécessaire.</p>";
} else if ($errorCount > 0) {
    echo "<p style='color: red; font-weight: bold;'>La synchronisation a rencontré des erreurs. Veuillez vérifier les messages ci-dessus.</p>";
} else {
    echo "<p style='color: orange; font-weight: bold;'>Aucun paiement mensuel avec statut 'paid' n'a été trouvé dans la base de données.</p>";
}

// Lien de retour
echo "<p><a href='" . SITE_URL . "/finance/reports.php'>Retour aux rapports financiers</a></p>";
?>
