One Hat Cyber Team
Your IP :
216.73.216.55
Server IP :
5.189.175.239
Server :
Linux panel.gemx-ai.com 5.14.0-570.19.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 4 04:00:24 EDT 2025 x86_64
Server Software :
LiteSpeed
PHP Version :
8.2.28
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
farmersapp
/
church.farmersapp.store
/
View File Name :
offerings.php
<?php require_once 'config.php'; if (!isLoggedIn()) { redirect('index.php'); } // Handle form submission for new offering if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['add_offering'])) { $offering_type = sanitize($_POST['offering_type']); $amount = $_POST['amount']; $service_date = $_POST['service_date']; $description = sanitize($_POST['description']); $stmt = $pdo->prepare("INSERT INTO offerings (offering_type, amount, service_date, recorded_by, description) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([$offering_type, $amount, $service_date, $_SESSION['user_id'], $description]); $success = "Offering recorded successfully!"; } } // Handle search $search = isset($_GET['search']) ? sanitize($_GET['search']) : ''; $where = ''; $params = []; if ($search) { $where = " WHERE offering_type LIKE ? OR description LIKE ?"; $params = ["%$search%", "%$search%"]; } // Get all offerings $stmt = $pdo->prepare("SELECT o.*, u.full_name as recorded_by_name FROM offerings o JOIN users u ON o.recorded_by = u.id $where ORDER BY o.service_date DESC"); $stmt->execute($params); $offerings = $stmt->fetchAll(); // Get offering summary by type $summary = $pdo->query("SELECT offering_type, SUM(amount) as total, COUNT(*) as count FROM offerings WHERE YEAR(service_date) = YEAR(CURDATE()) GROUP BY offering_type ORDER BY total DESC")->fetchAll(); // Get monthly total $monthly_total = $pdo->query("SELECT COALESCE(SUM(amount), 0) as total FROM offerings WHERE MONTH(service_date) = MONTH(CURDATE())")->fetch()['total']; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Offerings Management - Church MS</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <style> :root { --primary: #4f46e5; --primary-dark: #4338ca; --secondary: #7c3aed; --success: #10b981; --warning: #f59e0b; --danger: #ef4444; --light: #f8fafc; --dark: #1e293b; --gray: #64748b; } .page-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; } .summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin-bottom: 30px; } .summary-item { background: white; padding: 20px; border-radius: 15px; box-shadow: 0 5px 15px rgba(0,0,0,0.05); } .summary-item h3 { color: var(--gray); font-size: 14px; margin-bottom: 10px; } .summary-item .amount { font-size: 28px; font-weight: 700; color: var(--success); } .type-breakdown { margin-top: 15px; } .type-item { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--light); } .type-item:last-child { border-bottom: none; } .type-name { color: var(--dark); } .type-amount { font-weight: 600; color: var(--success); } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 8px; color: var(--dark); font-weight: 600; font-size: 14px; } .form-control { width: 100%; padding: 12px 15px; border: 2px solid var(--light); border-radius: 10px; font-size: 15px; transition: all 0.3s ease; } .form-control:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1); } .offering-types { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin-bottom: 20px; } .type-btn { padding: 12px; background: var(--light); border: 2px solid var(--light); border-radius: 10px; cursor: pointer; text-align: center; transition: all 0.3s ease; } .type-btn:hover { border-color: var(--primary); background: white; } .type-btn.active { background: var(--primary); color: white; border-color: var(--primary); } </style> </head> <body> <div class="dashboard-container"> <!-- Sidebar --> <div class="sidebar"> <div class="sidebar-header"> <h2><i class="fas fa-church"></i> Church MS</h2> <div class="user-info"> <p>Welcome, <?php echo $_SESSION['full_name']; ?></p> <p><?php echo $_SESSION['role']; ?></p> </div> </div> <nav class="sidebar-menu"> <a href="dashboard.php" class="menu-item"> <i class="fas fa-tachometer-alt"></i> <span>Dashboard</span> </a> <a href="members.php" class="menu-item"> <i class="fas fa-users"></i> <span>Members</span> </a> <a href="tithes.php" class="menu-item"> <i class="fas fa-hand-holding-usd"></i> <span>Tithes</span> </a> <a href="offerings.php" class="menu-item active"> <i class="fas fa-donate"></i> <span>Offerings</span> </a> <a href="cottages.php" class="menu-item"> <i class="fas fa-home"></i> <span>Cottages</span> </a> <a href="procurement.php" class="menu-item"> <i class="fas fa-shopping-cart"></i> <span>Procurement</span> </a> <a href="reports.php" class="menu-item"> <i class="fas fa-chart-bar"></i> <span>Reports</span> </a> <a href="users.php" class="menu-item"> <i class="fas fa-user-cog"></i> <span>Users</span> </a> </nav> </div> <!-- Main Content --> <div class="main-content"> <!-- Top Bar --> <div class="top-bar"> <h1>Offerings Management</h1> <div class="user-menu"> <form action="logout.php" method="POST"> <button type="submit" class="logout-btn"> <i class="fas fa-sign-out-alt"></i> Logout </button> </form> </div> </div> <div class="page-header"> <h2>Offering Records</h2> <button class="btn btn-primary" onclick="openModal()"> <i class="fas fa-plus-circle"></i> Record New Offering </button> </div> <?php if (isset($success)): ?> <div class="alert alert-success"> <i class="fas fa-check-circle"></i> <?php echo $success; ?> </div> <?php endif; ?> <!-- Summary Section --> <div class="summary-grid"> <div class="summary-item"> <h3>This Month's Total</h3> <div class="amount">₦<?php echo number_format($monthly_total, 2); ?></div> <div class="type-breakdown"> <?php foreach ($summary as $item): ?> <div class="type-item"> <span class="type-name"><?php echo $item['offering_type']; ?></span> <span class="type-amount">₦<?php echo number_format($item['total'], 2); ?></span> </div> <?php endforeach; ?> </div> </div> <div class="summary-item"> <h3>Quick Stats</h3> <div class="type-breakdown"> <?php $total_offerings = $pdo->query("SELECT COUNT(*) as count FROM offerings")->fetch()['count']; $this_year = $pdo->query("SELECT COUNT(*) as count FROM offerings WHERE YEAR(service_date) = YEAR(CURDATE())")->fetch()['count']; ?> <div class="type-item"> <span class="type-name">Total Records</span> <span class="type-amount"><?php echo $total_offerings; ?></span> </div> <div class="type-item"> <span class="type-name">This Year</span> <span class="type-amount"><?php echo $this_year; ?></span> </div> <div class="type-item"> <span class="type-name">Average per Service</span> <span class="type-amount"> ₦<?php echo number_format($this_year > 0 ? $monthly_total / 4 : 0, 2); ?> </span> </div> </div> </div> </div> <!-- Search Box --> <form method="GET" action="" class="search-box"> <input type="text" name="search" placeholder="Search by offering type or description..." value="<?php echo htmlspecialchars($search); ?>"> <button type="submit"><i class="fas fa-search"></i> Search</button> <?php if ($search): ?> <a href="offerings.php" class="btn">Clear</a> <?php endif; ?> </form> <!-- Offerings Table --> <div class="table-container"> <table class="data-table"> <thead> <tr> <th>Type</th> <th>Amount</th> <th>Service Date</th> <th>Recorded By</th> <th>Description</th> <th>Actions</th> </tr> </thead> <tbody> <?php foreach ($offerings as $offering): ?> <tr> <td> <span class="badge success"><?php echo $offering['offering_type']; ?></span> </td> <td><strong>₦<?php echo number_format($offering['amount'], 2); ?></strong></td> <td><?php echo formatDate($offering['service_date']); ?></td> <td><?php echo $offering['recorded_by_name']; ?></td> <td><?php echo substr($offering['description'], 0, 50); ?><?php echo strlen($offering['description']) > 50 ? '...' : ''; ?></td> <td> <button class="btn btn-sm btn-success" onclick="editOffering(<?php echo $offering['id']; ?>)"> <i class="fas fa-edit"></i> Edit </button> <button class="btn btn-sm btn-danger" onclick="deleteOffering(<?php echo $offering['id']; ?>)"> <i class="fas fa-trash"></i> Delete </button> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> <!-- Add Offering Modal --> <div class="modal" id="addOfferingModal"> <div class="modal-content"> <div class="modal-header"> <h3><i class="fas fa-donate"></i> Record New Offering</h3> <button class="close-modal" onclick="closeModal()">×</button> </div> <div class="modal-body"> <form method="POST" action=""> <div class="offering-types" id="offeringTypes"> <div class="type-btn" onclick="selectType('Sunday Service')">Sunday Service</div> <div class="type-btn" onclick="selectType('Midweek Service')">Midweek Service</div> <div class="type-btn" onclick="selectType('Special Offering')">Special Offering</div> <div class="type-btn" onclick="selectType('Thanksgiving')">Thanksgiving</div> <div class="type-btn" onclick="selectType('Building Fund')">Building Fund</div> <div class="type-btn" onclick="selectType('Missions')">Missions</div> <div class="type-btn" onclick="selectType('Benevolence')">Benevolence</div> <div class="type-btn" onclick="selectType('Other')">Other</div> </div> <div class="form-group"> <label>Offering Type *</label> <input type="text" name="offering_type" id="offeringType" class="form-control" required> </div> <div class="form-group"> <label>Amount (₦) *</label> <input type="number" name="amount" step="0.01" min="0" class="form-control" required> </div> <div class="form-group"> <label>Service Date *</label> <input type="date" name="service_date" class="form-control" required value="<?php echo date('Y-m-d'); ?>"> </div> <div class="form-group"> <label>Description (Optional)</label> <textarea name="description" class="form-control" rows="3" placeholder="Describe this offering..."></textarea> </div> <div style="display: flex; gap: 10px; justify-content: flex-end;"> <button type="button" class="btn" onclick="closeModal()">Cancel</button> <button type="submit" name="add_offering" class="btn btn-primary"> <i class="fas fa-save"></i> Save Record </button> </div> </form> </div> </div> </div> <script> function openModal() { document.getElementById('addOfferingModal').style.display = 'flex'; } function closeModal() { document.getElementById('addOfferingModal').style.display = 'none'; } function selectType(type) { document.getElementById('offeringType').value = type; // Update button states const buttons = document.querySelectorAll('.type-btn'); buttons.forEach(btn => { btn.classList.remove('active'); if (btn.textContent === type) { btn.classList.add('active'); } }); } function editOffering(id) { alert('Edit functionality for offering ID: ' + id); } function deleteOffering(id) { if (confirm('Are you sure you want to delete this offering?')) { window.location.href = 'delete_offering.php?id=' + id; } } // Close modal when clicking outside window.onclick = function(event) { const modal = document.getElementById('addOfferingModal'); if (event.target === modal) { closeModal(); } } </script> </body> </html>