403Webshell
Server IP : 198.54.126.135  /  Your IP : 216.73.216.217
Web Server : Apache
System : Linux host11.registrar-servers.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : linearpo ( 12988)
PHP Version : 8.1.34
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : ON |  Sudo : OFF |  Pkexec : OFF
Directory :  /home/linearpo/www/app/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/linearpo/www/app/float_management.php
<?php
// float_management.php - Float Entry and Management
require_once 'config.php';
checkAuth();

$success = '';
$error = '';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $entry_type = $conn->real_escape_string($_POST['entry_type']);
    $cash_amount = floatval($_POST['cash_amount'] ?? 0);
    $digital_amount = floatval($_POST['digital_amount'] ?? 0);
    $description = $conn->real_escape_string($_POST['description'] ?? '');
    
    // Validation based on entry type
    if ($entry_type == 'cash_to_digital' && $cash_amount <= 0) {
        $error = 'Please enter valid cash amount to convert';
    } elseif ($entry_type == 'digital_to_cash' && $digital_amount <= 0) {
        $error = 'Please enter valid digital amount to convert';
    } elseif ($entry_type == 'initial' && ($cash_amount <= 0 || $digital_amount <= 0)) {
        $error = 'Please enter both cash and digital amounts for initial float';
    } else {
        // For conversion entries, amounts should match
        if ($entry_type == 'cash_to_digital') {
            $digital_amount = $cash_amount; // Converting cash to digital
        } elseif ($entry_type == 'digital_to_cash') {
            $cash_amount = $digital_amount; // Converting digital to cash
        }
        
        $sql = "INSERT INTO float_entries (user_id, entry_type, cash_amount, digital_amount, description) 
                VALUES ({$_SESSION['user_id']}, '$entry_type', $cash_amount, $digital_amount, '$description')";
        
        if ($conn->query($sql)) {
            $success = 'Float entry recorded successfully!';
        } else {
            $error = 'Error recording float: ' . $conn->error;
        }
    }
}

$float = getCurrentFloat($conn, $_SESSION['user_id']);
$page_title = "Float Management";
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo $page_title; ?> - M-Pesa Agent System</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css" rel="stylesheet">
    <style>
        :root { --mpesa-green: #00a650; }
        body { background-color: #f8f9fa; }
        .navbar { background: linear-gradient(135deg, var(--mpesa-green) 0%, #008f43 100%); }
        .sidebar { min-height: calc(100vh - 56px); background: white; box-shadow: 2px 0 10px rgba(0,0,0,0.1); }
        .sidebar .nav-link { color: #333; padding: 15px 20px; }
        .sidebar .nav-link:hover, .sidebar .nav-link.active { background-color: rgba(0, 166, 80, 0.1); color: var(--mpesa-green); border-right: 3px solid var(--mpesa-green); }
        .sidebar .nav-link i { margin-right: 10px; width: 20px; }
        .float-card { background: white; border-radius: 15px; box-shadow: 0 5px 15px rgba(0,0,0,0.08); }
        .balance-display { background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); border-radius: 10px; padding: 20px; }
        .type-card { cursor: pointer; transition: all 0.3s; border: 2px solid transparent; }
        .type-card:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0,0,0,0.1); }
        .type-card.selected { border-color: var(--mpesa-green); background-color: rgba(0, 166, 80, 0.05); }
        .btn-submit { background: var(--mpesa-green); border: none; }
        .btn-submit:hover { background: #008f43; }
        .history-item { border-left: 3px solid var(--mpesa-green); padding-left: 15px; margin-bottom: 15px; }
        .history-item.conversion { border-left-color: #6c757d; }
        .history-item.initial { border-left-color: #ffc107; }
    </style>
</head>
<body>
    <nav class="navbar navbar-dark">
        <div class="container-fluid">
            <a class="navbar-brand" href="dashboard.php"><i class="bi bi-phone-fill me-2"></i><strong>M-Pesa Agent</strong> System</a>
            <div class="d-flex align-items-center text-white">
                <span class="me-3"><i class="bi bi-person-circle me-1"></i> <?php echo $_SESSION['full_name']; ?></span>
                <a href="logout.php" class="btn btn-outline-light btn-sm"><i class="bi bi-box-arrow-right"></i> Logout</a>
            </div>
        </div>
    </nav>

    <div class="container-fluid">
        <div class="row">
            <div class="col-md-2 sidebar p-0">
                <nav class="nav flex-column">
                    <a class="nav-link" href="dashboard.php"><i class="bi bi-speedometer2"></i> Dashboard</a>
                    <a class="nav-link" href="transactions.php"><i class="bi bi-cash-coin"></i> Transactions</a>
                    <a class="nav-link active" href="float_management.php"><i class="bi bi-wallet2"></i> Float Management</a>
                    <a class="nav-link" href="reports.php"><i class="bi bi-graph-up"></i> Reports</a>
                    <?php if ($_SESSION['role'] == 'admin'): ?>
                    <a class="nav-link" href="users.php"><i class="bi bi-people"></i> User Management</a>
                    <?php endif; ?>
                    <a class="nav-link" href="change_password.php"><i class="bi bi-key"></i> Change Password</a>
                </nav>
            </div>

            <div class="col-md-10 p-4">
                <h2 class="mb-4"><i class="bi bi-wallet2 me-2"></i>Float Management</h2>
                
                <!-- Current Balance Display -->
                <div class="row mb-4">
                    <div class="col-md-4">
                        <div class="balance-display text-center">
                            <i class="bi bi-cash-stack text-warning fs-1"></i>
                            <h3 class="mt-2 mb-0">KES <?php echo number_format($float['cash_balance'], 2); ?></h3>
                            <small class="text-muted text-uppercase">Cash Float</small>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="balance-display text-center">
                            <i class="bi bi-phone text-info fs-1"></i>
                            <h3 class="mt-2 mb-0">KES <?php echo number_format($float['digital_balance'], 2); ?></h3>
                            <small class="text-muted text-uppercase">Digital Float</small>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="balance-display text-center bg-success bg-opacity-10">
                            <i class="bi bi-calculator text-success fs-1"></i>
                            <h3 class="mt-2 mb-0">KES <?php echo number_format($float['cash_balance'] + $float['digital_balance'], 2); ?></h3>
                            <small class="text-success text-uppercase">Total Float Value</small>
                        </div>
                    </div>
                </div>

                <?php if ($success): ?>
                    <div class="alert alert-success alert-dismissible fade show" role="alert">
                        <i class="bi bi-check-circle-fill me-2"></i><?php echo $success; ?>
                        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                    </div>
                <?php endif; ?>
                
                <?php if ($error): ?>
                    <div class="alert alert-danger alert-dismissible fade show" role="alert">
                        <i class="bi bi-exclamation-triangle-fill me-2"></i><?php echo $error; ?>
                        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                    </div>
                <?php endif; ?>

                <div class="row">
                    <!-- Float Entry Form -->
                    <div class="col-md-7">
                        <div class="float-card p-4">
                            <h5 class="mb-3"><i class="bi bi-plus-circle me-2"></i>Record Float Entry</h5>
                            
                            <form method="POST" action="" id="floatForm">
                                <!-- Entry Type Selection -->
                                <div class="row g-3 mb-4">
                                    <div class="col-md-4">
                                        <div class="type-card p-3 rounded border text-center" onclick="selectEntryType('initial', this)">
                                            <i class="bi bi-stars text-warning fs-2"></i>
                                            <div class="fw-bold mt-2">Initial Float</div>
                                            <small class="text-muted">Starting balance</small>
                                        </div>
                                    </div>
                                    <div class="col-md-4">
                                        <div class="type-card p-3 rounded border text-center" onclick="selectEntryType('cash_to_digital', this)">
                                            <i class="bi bi-arrow-right-circle text-primary fs-2"></i>
                                            <div class="fw-bold mt-2">Cash → Digital</div>
                                            <small class="text-muted">Deposit cash to M-Pesa</small>
                                        </div>
                                    </div>
                                    <div class="col-md-4">
                                        <div class="type-card p-3 rounded border text-center" onclick="selectEntryType('digital_to_cash', this)">
                                            <i class="bi bi-arrow-left-circle text-secondary fs-2"></i>
                                            <div class="fw-bold mt-2">Digital → Cash</div>
                                            <small class="text-muted">Withdraw to cash</small>
                                        </div>
                                    </div>
                                </div>
                                <input type="hidden" name="entry_type" id="entry_type" required>

                                <div id="amountFields" style="display: none;">
                                    <div class="row g-3">
                                        <div class="col-md-6" id="cashField">
                                            <label class="form-label fw-bold">Cash Amount (KES)</label>
                                            <div class="input-group">
                                                <span class="input-group-text">KES</span>
                                                <input type="number" class="form-control" name="cash_amount" id="cash_amount" step="0.01" min="0">
                                            </div>
                                        </div>
                                        <div class="col-md-6" id="digitalField">
                                            <label class="form-label fw-bold">Digital Amount (KES)</label>
                                            <div class="input-group">
                                                <span class="input-group-text">KES</span>
                                                <input type="number" class="form-control" name="digital_amount" id="digital_amount" step="0.01" min="0">
                                            </div>
                                        </div>
                                        <div class="col-12">
                                            <label class="form-label">Description</label>
                                            <textarea class="form-control" name="description" rows="2" placeholder="Source of float, super agent name, etc."></textarea>
                                        </div>
                                    </div>
                                    
                                    <div class="d-grid gap-2 d-md-flex justify-content-md-end mt-4">
                                        <button type="button" class="btn btn-outline-secondary" onclick="resetForm()">Cancel</button>
                                        <button type="submit" class="btn btn-submit text-white">
                                            <i class="bi bi-check-circle me-2"></i>Record Entry
                                        </button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </div>

                    <!-- Recent Float History -->
                    <div class="col-md-5">
                        <div class="float-card p-4">
                            <h5 class="mb-3"><i class="bi bi-clock-history me-2"></i>Recent Float Entries</h5>
                            
                            <?php
                            $history = $conn->query("SELECT * FROM float_entries 
                                WHERE user_id = {$_SESSION['user_id']} 
                                ORDER BY created_at DESC LIMIT 10");
                            
                            if ($history->num_rows > 0) {
                                while ($row = $history->fetch_assoc()) {
                                    $type_class = $row['entry_type'];
                                    $type_label = str_replace('_', ' ', $row['entry_type']);
                                    $type_icon = $row['entry_type'] == 'initial' ? 'bi-stars' : 
                                                ($row['entry_type'] == 'cash_to_digital' ? 'bi-arrow-right' : 'bi-arrow-left');
                                    
                                    echo "<div class='history-item {$type_class}'>";
                                    echo "<div class='d-flex justify-content-between align-items-start'>";
                                    echo "<div>";
                                    echo "<span class='badge bg-light text-dark border'><i class='bi {$type_icon} me-1'></i>" . ucwords($type_label) . "</span>";
                                    echo "<div class='mt-1'><small class='text-muted'>" . date('M d, Y H:i', strtotime($row['created_at'])) . "</small></div>";
                                    if ($row['description']) {
                                        echo "<small class='text-muted'>" . htmlspecialchars($row['description']) . "</small>";
                                    }
                                    echo "</div>";
                                    echo "<div class='text-end'>";
                                    if ($row['entry_type'] == 'initial') {
                                        echo "<div class='text-warning'><strong>KES " . number_format($row['cash_amount'], 2) . "</strong> cash</div>";
                                        echo "<div class='text-info'><strong>KES " . number_format($row['digital_amount'], 2) . "</strong> digital</div>";
                                    } else {
                                        echo "<div class='fw-bold'>KES " . number_format(max($row['cash_amount'], $row['digital_amount']), 2) . "</div>";
                                    }
                                    echo "</div>";
                                    echo "</div>";
                                    echo "</div>";
                                }
                            } else {
                                echo "<div class='text-center text-muted py-4'>No float entries recorded yet</div>";
                            }
                            ?>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        function selectEntryType(type, element) {
            document.querySelectorAll('.type-card').forEach(el => el.classList.remove('selected'));
            element.classList.add('selected');
            document.getElementById('entry_type').value = type;
            
            document.getElementById('amountFields').style.display = 'block';
            
            // Configure fields based on type
            const cashField = document.getElementById('cashField');
            const digitalField = document.getElementById('digitalField');
            const cashInput = document.getElementById('cash_amount');
            const digitalInput = document.getElementById('digital_amount');
            
            if (type === 'initial') {
                cashField.style.display = 'block';
                digitalField.style.display = 'block';
                cashInput.required = true;
                digitalInput.required = true;
                cashInput.placeholder = 'Starting cash';
                digitalInput.placeholder = 'Starting digital';
            } else if (type === 'cash_to_digital') {
                cashField.style.display = 'block';
                digitalField.style.display = 'none';
                cashInput.required = true;
                digitalInput.required = false;
                cashInput.placeholder = 'Amount to convert';
                digitalInput.value = '';
            } else if (type === 'digital_to_cash') {
                cashField.style.display = 'none';
                digitalField.style.display = 'block';
                cashInput.required = false;
                digitalInput.required = true;
                digitalInput.placeholder = 'Amount to convert';
                cashInput.value = '';
            }
        }
        
        function resetForm() {
            document.getElementById('floatForm').reset();
            document.querySelectorAll('.type-card').forEach(el => el.classList.remove('selected'));
            document.getElementById('amountFields').style.display = 'none';
        }
        
        // Sync amounts for conversion types
        document.getElementById('cash_amount').addEventListener('input', function() {
            if (document.getElementById('entry_type').value === 'cash_to_digital') {
                document.getElementById('digital_amount').value = this.value;
            }
        });
        
        document.getElementById('digital_amount').addEventListener('input', function() {
            if (document.getElementById('entry_type').value === 'digital_to_cash') {
                document.getElementById('cash_amount').value = this.value;
            }
        });
    </script>
</body>
</html>

Youez - 2016 - github.com/yon3zu
LinuXploit