<?php
session_start();
require_once '../config/database.php';
require_once '../includes/zashof.php';
require_once '../includes/bKashPayment.php';

// Only logged-in students or admins
if (!isset($_SESSION['user_id']) || ($_SESSION['user_role'] !== 'student' && $_SESSION['user_role'] !== 'admin')) {
    header('Location: ../login.php');
    exit();
}

// Get student ID (either from session or GET parameter for admin)
$student_id = 0;
if ($_SESSION['user_role'] === 'student') {
    // Get student from user
    $stmt = $pdo->prepare("SELECT id FROM students WHERE user_id=? LIMIT 1");
    $stmt->execute([$_SESSION['user_id']]);
    $student = $stmt->fetch();
    if (!$student) { 
        die('Student profile not found'); 
    }
    $student_id = $student['id'];
} else if ($_SESSION['user_role'] === 'admin' && isset($_GET['student_id'])) {
    $student_id = (int)$_GET['student_id'];
}

// Get student details
$stmt = $pdo->prepare("SELECT s.*, c.name as class_name, c.section FROM students s LEFT JOIN classes c ON s.class_id=c.id WHERE s.id=? LIMIT 1");
$stmt->execute([$student_id]);
$student = $stmt->fetch();
if (!$student) { 
    die('Student not found'); 
}

// Check if student has scholarship
$has_scholarship = ($student['scholarship'] === 'yes');

// If student has scholarship, redirect back with message
if ($has_scholarship) {
    $_SESSION['info_message'] = 'আপনি উপবৃত্তি পেয়েছেন। ফি পরিশোধের দরকার নেই।';
    header('Location: my_fees.php');
    exit();
}

// Calculate total due amount
$stmt = $pdo->prepare("SELECT SUM(amount - paid_amount) as total_due FROM fees WHERE student_id=? AND status IN ('pending', 'partial', 'overdue')");
$stmt->execute([$student_id]);
$result = $stmt->fetch();
$total_due = (float)($result['total_due'] ?? 0);

// If no due amount, redirect back
if ($total_due <= 0) {
    $_SESSION['info_message'] = 'আপনার কোন বকেয়া ফি নেই।';
    header('Location: my_fees.php');
    exit();
}

// Get amount from GET parameter or calculate total due
$amount = 0;
if (isset($_GET['amount'])) {
    $amount = (float)$_GET['amount'];
} else {
    $amount = $total_due;
}

// Check if amount is valid
if ($amount <= 0) {
    $_SESSION['error_message'] = 'No due amount found for payment';
    header('Location: my_fees.php');
    exit();
}

// Prevent students from making payments that exceed total due
if ($_SESSION['user_role'] === 'student' && $amount > $total_due) {
    $_SESSION['error_message'] = 'আপনি আপনার মোট বকেয়ার চেয়ে বেশি পরিমাণ পেমেন্ট করতে পারবেন না';
    header('Location: my_fees.php');
    exit();
}

// Check if payment gateways are enabled
$zashof = new ZashofPayment();
$zashof_enabled = $zashof->isEnabled();

$bKash = new bKashPayment();
$bKash_enabled = $bKash->isEnabled();

// Process payment initiation
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['initiate_payment'])) {
    try {
        // If bKash is enabled, redirect to bKash payment page
        if ($bKash_enabled) {
            // Redirect to bKash payment page
            header('Location: bKash_payment.php?amount=' . $amount . '&student_id=' . $student_id);
            exit();
        } 
        // If Zashof is enabled, use it
        else if ($zashof_enabled) {
            // Prepare student info
            $student_info = [
                'student_id' => $student['id'],
                'name' => $student['first_name'] . ' ' . $student['last_name'],
                'email' => $student['email'] ?? '',
                'phone' => $student['phone'] ?? ''
            ];
            
            // URLs
            $redirect_url = 'http://' . $_SERVER['HTTP_HOST'] . '/fees/zashof_success.php';
            $cancel_url = 'http://' . $_SERVER['HTTP_HOST'] . '/fees/my_fees.php';
            
            // Create charge
            $response = $zashof->createCharge($amount, $student_info, $redirect_url, $cancel_url);
            
            if (isset($response['status']) && $response['status'] === 'success' && isset($response['charge_url'])) {
                // Save payment reference in database
                $stmt = $pdo->prepare("
                    INSERT INTO fee_payments (amount, payment_method, transaction_id, payment_date, remarks) 
                    VALUES (?, 'online', ?, CURDATE(), ?)
                ");
                $stmt->execute([
                    $amount, 
                    $response['transaction_id'] ?? 'pending_' . time(), 
                    'Payment initiated for student ID: ' . $student['id']
                ]);
                
                // Redirect to payment page
                header('Location: ' . $response['charge_url']);
                exit();
            } else {
                throw new Exception("Failed to create payment charge: " . json_encode($response));
            }
        } else {
            throw new Exception("Payment system is currently disabled. Please contact administrator.");
        }
    } catch (Exception $e) {
        $error_message = $e->getMessage();
    }
}

?>
<!DOCTYPE html>
<html lang="bn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>অনলাইন পেমেন্ট</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
    <link href="../assets/css/style.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
    <div class="container-fluid">
        <a class="navbar-brand" href="../index.php"><i class="fas fa-graduation-cap"></i> স্কুল ম্যানেজমেন্ট সিস্টেম</a>
        <div class="navbar-nav ms-auto">
            <?php if ($_SESSION['user_role'] === 'student'): ?>
                <a class="nav-link" href="my_fees.php"><i class="fas fa-arrow-left"></i> আমার ফি</a>
            <?php else: ?>
                <a class="nav-link" href="manage.php"><i class="fas fa-arrow-left"></i> ফি ম্যানেজ</a>
            <?php endif; ?>
            <a class="nav-link" href="../logout.php"><i class="fas fa-sign-out-alt"></i> লগআউট</a>
        </div>
    </div>
</nav>

<div class="container-fluid mt-4">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">
                    <h5><i class="fas fa-money-bill-wave"></i> অনলাইন পেমেন্ট</h5>
                </div>
                <div class="card-body">
                    <?php if (isset($error_message)): ?>
                        <div class="alert alert-danger">
                            <i class="fas fa-exclamation-triangle"></i> 
                            <?php if (strpos($error_message, 'Unauthorized request. Invalid API key') !== false): ?>
                                পেমেন্ট গেটওয়ে সিস্টেম সাময়িকভাবে কাজ করছে না। অফিসে যোগাযোগ করুন বা ক্যাশে ফি পরিশোধ করুন।
                            <?php else: ?>
                                <?= htmlspecialchars($error_message) ?>
                            <?php endif; ?>
                        </div>
                    <?php endif; ?>
                    
                    <div class="row mb-4">
                        <div class="col-md-6">
                            <div class="card bg-light">
                                <div class="card-body">
                                    <h6 class="card-title"><i class="fas fa-user-graduate"></i> শিক্ষার্থীর তথ্য</h6>
                                    <p class="mb-1"><strong>নাম:</strong> <?= htmlspecialchars($student['first_name'] . ' ' . $student['last_name']) ?></p>
                                    <p class="mb-1"><strong>আইডি:</strong> <?= htmlspecialchars($student['student_id']) ?></p>
                                    <p class="mb-1"><strong>ক্লাস:</strong> <?= htmlspecialchars(($student['class_name'] ?? '') . ' - ' . ($student['section'] ?? '')) ?></p>
                                    <?php if (!empty($student['roll_number'])): ?>
                                        <p class="mb-0"><strong>রোল নম্বর:</strong> <?= htmlspecialchars($student['roll_number']) ?></p>
                                    <?php endif; ?>
                                </div>
                            </div>
                        </div>
                        
                        <div class="col-md-6">
                            <div class="card bg-info text-white">
                                <div class="card-body">
                                    <h6 class="card-title"><i class="fas fa-receipt"></i> পেমেন্ট বিবরণ</h6>
                                    <p class="mb-1"><strong>পরিমাণ:</strong> ৳<?= number_format($amount, 2) ?></p>
                                    <p class="mb-1"><strong>পদ্ধতি:</strong> bKash Personal</p>
                                    <p class="mb-0"><strong>পেমেন্ট গেটওয়ে:</strong> 
                                        <?php if ($bKash_enabled): ?>
                                            bKash Direct
                                        <?php elseif ($zashof_enabled): ?>
                                            Zashof
                                        <?php else: ?>
                                            Not Available
                                        <?php endif; ?>
                                    </p>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <div class="alert alert-warning">
                        <h6><i class="fas fa-info-circle"></i> নির্দেশনা</h6>
                        <ul>
                            <?php if ($bKash_enabled): ?>
                                <li>পেমেন্ট সম্পূর্ণ করার জন্য "পেমেন্ট করুন" বাটনে ক্লিক করুন</li>
                                <li>আপনি bKash Personal এর মাধ্যমে সরাসরি পেমেন্ট করতে পারবেন</li>
                                <li>পেমেন্ট সম্পূর্ণ হলে আপনি সিস্টেমে ফিরে আসবেন</li>
                                <li>পেমেন্ট বাতিল করতে চাইলে "বাতিল করুন" বাটন ব্যবহার করুন</li>
                            <?php elseif ($zashof_enabled): ?>
                                <li>পেমেন্ট সম্পূর্ণ করার জন্য "পেমেন্ট করুন" বাটনে ক্লিক করুন</li>
                                <li>আপনি bKash Personal এর মাধ্যমে পেমেন্ট করতে পারবেন</li>
                                <li>পেমেন্ট সম্পূর্ণ হলে আপনি সিস্টেমে ফিরে আসবেন</li>
                                <li>পেমেন্ট বাতিল করতে চাইলে "বাতিল করুন" বাটন ব্যবহার করুন</li>
                            <?php else: ?>
                                <li>পেমেন্ট সিস্টেম সাময়িকভাবে কাজ করছে না</li>
                                <li>অফিসে যোগাযোগ করুন বা ক্যাশে ফি পরিশোধ করুন</li>
                            <?php endif; ?>
                        </ul>
                    </div>
                    
                    <form method="POST">
                        <div class="d-grid gap-2">
                            <button type="submit" name="initiate_payment" class="btn btn-success btn-lg" <?php echo (isset($error_message) && strpos($error_message, 'Unauthorized request. Invalid API key') !== false) ? 'disabled' : ''; ?>>
                                <i class="fas fa-money-bill-wave"></i> পেমেন্ট করুন (৳<?= number_format($amount, 2) ?>)
                            </button>
                            <?php if ($_SESSION['user_role'] === 'student'): ?>
                                <a href="my_fees.php" class="btn btn-secondary">
                                    <i class="fas fa-arrow-left"></i> আমার ফি-তে ফিরে যান
                                </a>
                            <?php else: ?>
                                <a href="manage.php" class="btn btn-secondary">
                                    <i class="fas fa-arrow-left"></i> ফি ম্যানেজ-এ ফিরে যান
                                </a>
                            <?php endif; ?>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>