getMessage(); } } $stmt = $pdo->prepare(" SELECT l.*, a.account_name, a.institution_name, ( SELECT COUNT(*) FROM loan_schedules ls WHERE ls.loan_id = l.id AND ls.is_paid = 0 ) AS unpaid_count, ( SELECT COUNT(*) FROM loan_schedules ls WHERE ls.loan_id = l.id AND ls.is_paid = 1 ) AS paid_count, ( SELECT COUNT(*) FROM loan_schedules ls WHERE ls.loan_id = l.id ) AS total_count, ( SELECT MIN(ls.due_date) FROM loan_schedules ls WHERE ls.loan_id = l.id AND ls.is_paid = 0 ) AS next_due_date, ( SELECT MAX(ls.due_date) FROM loan_schedules ls WHERE ls.loan_id = l.id ) AS maturity_due_date, ( SELECT ls.scheduled_total FROM loan_schedules ls WHERE ls.loan_id = l.id AND ls.is_paid = 0 ORDER BY ls.due_date ASC, ls.cycle_no ASC LIMIT 1 ) AS next_payment_amount, ( SELECT ls.payment_phase FROM loan_schedules ls WHERE ls.loan_id = l.id AND ls.is_paid = 0 ORDER BY ls.due_date ASC, ls.cycle_no ASC LIMIT 1 ) AS next_payment_phase, ( SELECT COALESCE(SUM(ls.scheduled_total), 0) FROM loan_schedules ls WHERE ls.loan_id = l.id AND ls.is_paid = 0 ) AS remaining_total_amount FROM loans l LEFT JOIN accounts a ON a.id = l.account_id WHERE l.user_id = ? ORDER BY CASE WHEN l.status = 'active' THEN 0 ELSE 1 END, l.id DESC "); $stmt->execute([$uid]); $loans = $stmt->fetchAll(); require __DIR__ . '/../app/views/header.php'; ?>