MINI
C:
/
xampp
/
htdocs
/
cek
/
Upload File:
files >> C:/xampp/htdocs/cek/admin.php
<?php session_start(); include 'db.php'; // Cek login if (!isset($_SESSION['user_id'])) { header("Location: login.php"); exit(); } // Ambil informasi pengguna saat ini $current_user_id = $_SESSION['user_id']; $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute([$current_user_id]); $current_user = $stmt->fetch(); // Cek apakah pengguna adalah admin $is_admin = ($current_user['role'] ?? '') == 'admin'; // Handle form submission if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['submit_transaction'])) { // Insert new transaction $user_id = $is_admin ? $_POST['user_id'] : $current_user_id; $voucher_code = $_POST['voucher_code']; $amount = $_POST['amount']; $type = $_POST['type']; $stmt = $pdo->prepare("INSERT INTO transactions (user_id, voucher_code, amount, type) VALUES (?, ?, ?, ?)"); $stmt->execute([$user_id, $voucher_code, $amount, $type]); $_SESSION['message'] = ['type' => 'success', 'text' => 'Transaksi berhasil ditambahkan!']; header("Location: ".$_SERVER['PHP_SELF']); exit(); } elseif (isset($_POST['update_transaction'])) { // Update existing transaction $id = $_POST['id']; $voucher_code = $_POST['voucher_code']; $amount = $_POST['amount']; $type = $_POST['type']; $stmt = $pdo->prepare("UPDATE transactions SET voucher_code = ?, amount = ?, type = ? WHERE id = ?"); $stmt->execute([$voucher_code, $amount, $type, $id]); $_SESSION['message'] = ['type' => 'success', 'text' => 'Transaksi berhasil diperbarui!']; header("Location: ".$_SERVER['PHP_SELF']); exit(); } } // Handle delete action if (isset($_GET['delete'])) { $id = $_GET['delete']; $stmt = $pdo->prepare("DELETE FROM transactions WHERE id = ?"); $stmt->execute([$id]); $_SESSION['message'] = ['type' => 'success', 'text' => 'Transaksi berhasil dihapus!']; header("Location: ".$_SERVER['PHP_SELF']); exit(); } // Get filter values $user_filter = $is_admin ? ($_GET['user_id'] ?? '') : $current_user_id; $type_filter = $_GET['type'] ?? ''; $date_from = $_GET['date_from'] ?? ''; $date_to = $_GET['date_to'] ?? ''; // Build the query $query = "SELECT t.*, u.username FROM transactions t LEFT JOIN users u ON t.user_id = u.id WHERE 1=1"; $params = []; // Apply filters if (!empty($user_filter)) { $query .= " AND t.user_id = ?"; $params[] = $user_filter; } if (!empty($type_filter)) { $query .= " AND t.type = ?"; $params[] = $type_filter; } if (!empty($date_from)) { $query .= " AND DATE(t.created_at) >= ?"; $params[] = $date_from; } if (!empty($date_to)) { $query .= " AND DATE(t.created_at) <= ?"; $params[] = $date_to; } $query .= " ORDER BY t.created_at DESC"; // Get transactions $stmt = $pdo->prepare($query); $stmt->execute($params); $transactions = $stmt->fetchAll(); // Calculate totals $total_in = 0; $total_out = 0; foreach ($transactions as $transaction) { if ($transaction['type'] == 'in') { $total_in += $transaction['amount']; } else { $total_out += $transaction['amount']; } } $balance = $total_in - $total_out; // Get all users (for admin only) $users = []; if ($is_admin) { $users = $pdo->query("SELECT * FROM users")->fetchAll(); } // Get transaction to edit (if edit action) $edit_transaction = null; if (isset($_GET['edit'])) { $id = $_GET['edit']; $stmt = $pdo->prepare("SELECT * FROM transactions WHERE id = ?"); $stmt->execute([$id]); $edit_transaction = $stmt->fetch(); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Voucher App</title> <script src="https://cdn.tailwindcss.com"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> .card-shadow { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .transaction-in { background-color: rgba(52, 211, 153, 0.1); } .transaction-out { background-color: rgba(248, 113, 113, 0.1); } </style> </head> <body class="bg-gray-50"> <!-- Notification message --> <?php if (isset($_SESSION['message'])): ?> <div class="fixed top-4 right-4 z-50"> <div class="bg-<?= $_SESSION['message']['type'] == 'success' ? 'green' : 'red' ?>-500 text-white px-4 py-2 rounded-lg shadow-lg flex items-center"> <span class="mr-2"> <?php if ($_SESSION['message']['type'] == 'success'): ?> <i class="fas fa-check-circle"></i> <?php else: ?> <i class="fas fa-exclamation-circle"></i> <?php endif; ?> </span> <span><?= $_SESSION['message']['text'] ?></span> </div> </div> <?php unset($_SESSION['message']); ?> <?php endif; ?> <div class="container mx-auto px-4 py-8"> <div class="flex justify-between items-center mb-6"> <h1 class="text-2xl font-bold">Sistem Manajemen Voucher</h1> <div class="text-gray-500"><?= date('d M Y') ?></div> </div> <!-- Summary Cards --> <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6"> <div class="bg-green-50 rounded-lg p-4 border border-green-100"> <div class="flex items-center justify-between"> <div> <p class="text-sm text-green-600">Total Pemasukan</p> <h3 class="text-2xl font-bold text-green-700">Rp <?= number_format($total_in, 2) ?></h3> </div> <div class="bg-green-100 p-3 rounded-full"> <i class="fas fa-arrow-down text-green-600"></i> </div> </div> </div> <div class="bg-red-50 rounded-lg p-4 border border-red-100"> <div class="flex items-center justify-between"> <div> <p class="text-sm text-red-600">Total Pengeluaran</p> <h3 class="text-2xl font-bold text-red-700">Rp <?= number_format($total_out, 2) ?></h3> </div> <div class="bg-red-100 p-3 rounded-full"> <i class="fas fa-arrow-up text-red-600"></i> </div> </div> </div> <div class="bg-blue-50 rounded-lg p-4 border border-blue-100"> <div class="flex items-center justify-between"> <div> <p class="text-sm text-blue-600">Saldo Akhir</p> <h3 class="text-2xl font-bold text-blue-700">Rp <?= number_format($balance, 2) ?></h3> </div> <div class="bg-blue-100 p-3 rounded-full"> <i class="fas fa-wallet text-blue-600"></i> </div> </div> </div> </div> <!-- Transaction Form --> <div class="bg-white rounded-lg card-shadow p-6 mb-8"> <h2 class="text-xl font-semibold mb-4"> <?= isset($_GET['edit']) ? '<i class="fas fa-pen mr-2"></i> Edit Transaksi' : '<i class="fas fa-plus-circle mr-2"></i> Tambah Transaksi' ?> </h2> <form method="POST" class="space-y-4"> <?php if (isset($_GET['edit'])): ?> <input type="hidden" name="id" value="<?= $edit_transaction['id'] ?>"> <input type="hidden" name="update_transaction" value="1"> <?php else: ?> <input type="hidden" name="submit_transaction" value="1"> <?php endif; ?> <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <div> <label for="user_id" class="block text-sm font-medium text-gray-700">User :</label> <select name="user_id" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-purple-500 focus:border-purple-500" required> <?php foreach ($users as $user): ?> <option value="<?= $user['id'] ?>" <?= (isset($_GET['edit']) && $edit_transaction['user_id'] == $user['id']) ? 'selected' : '' ?>> <?= $user['username'] ?> </option> <?php endforeach; ?> </select> </div> <div> <label for="voucher_code" class="block text-sm font-medium text-gray-700">Kode Voucher:</label> <input type="text" name="voucher_code" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-purple-500 focus:border-purple-500" value="<?= isset($_GET['edit']) ? $edit_transaction['voucher_code'] : '' ?>" required> </div> </div> <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <div> <label for="amount" class="block text-sm font-medium text-gray-700">Jumlah (Rp):</label> <input type="number" name="amount" step="0.01" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-purple-500 focus:border-purple-500" value="<?= isset($_GET['edit']) ? $edit_transaction['amount'] : '' ?>" required> </div> <div> <label for="type" class="block text-sm font-medium text-gray-700">Tipe:</label> <select name="type" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-purple-500 focus:border-purple-500" required> <option value="in" <?= (isset($_GET['edit']) && $edit_transaction['type'] == 'in') ? 'selected' : '' ?>>Masuk</option> <option value="out" <?= (isset($_GET['edit']) && $edit_transaction['type'] == 'out') ? 'selected' : '' ?>>Keluar</option> </select> </div> </div> <div class="flex justify-end space-x-4"> <?php if (isset($_GET['edit'])): ?> <a href="?" class="bg-gray-200 hover:bg-gray-300 text-gray-800 font-medium py-2 px-4 rounded-md transition duration-300"> <i class="fas fa-times mr-2"></i>Batal </a> <?php endif; ?> <button type="submit" class="bg-purple-600 hover:bg-purple-700 text-white font-medium py-2 px-4 rounded-md transition duration-300"> <i class="fas fa-save mr-2"></i>Simpan </button> </div> </form> </div> <!-- Transaction List --> <h2 class="text-xl font-bold mb-4"><i class="fas fa-list-alt mr-2"></i>Daftar Transaksi</h2> <!-- Filter Form --> <div class="bg-white rounded-lg card-shadow p-6 mb-4"> <form method="GET" class="space-y-4"> <div class="grid grid-cols-1 md:grid-cols-4 gap-4"> <div> <label for="user_id" class="block text-sm font-medium text-gray-700">Filter User:</label> <select name="user_id" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-purple-500 focus:border-purple-500
Copyright ©2021 || Defacer Indonesia