<?php
// ============================================================
//  Renewal reminder — daily
// ============================================================
//
//  Finds members whose renewal date is exactly 7 days away and
//  enqueues a renewal-reminder email so they have time to update
//  details or cancel before the next charge.
//
// ============================================================

require_once __DIR__ . '/_bootstrap.php';
require_once __DIR__ . '/../includes/mailer.php';

$run_id = cron_begin('renewal-reminder');

$members = db_all(
    "SELECT * FROM members
        WHERE status = 'active'
          AND cancel_effective_at IS NULL
          AND renewal_date = DATE_ADD(CURDATE(), INTERVAL 7 DAY)"
);

$processed = 0;
foreach ($members as $m) {
    echo "  -> {$m['email']} (renewal {$m['renewal_date']})\n";

    // Look up plan price for this tier (so the email shows the right amount)
    $plan = db_row('SELECT * FROM subscription_plans WHERE name = :n LIMIT 1', ['n' => $m['tier']]);
    $amount = $plan
        ? 'R ' . number_format(($plan['price_cents'] ?? 0) / 100, 2)
        : '';

    $ok = email_enqueue('renewal_reminder', $m['email'],
        trim($m['first_name'] . ' ' . $m['last_name']),
        [
            'first_name'   => $m['first_name'],
            'tier'         => $m['tier'],
            'amount'       => $amount,
            'renewal_date' => date('j F Y', strtotime($m['renewal_date'])),
        ]
    );
    if ($ok) $processed++;
}

cron_finish($run_id, 'ok', $processed);