🤩 File Manager - Mr.X
PHP:
8.3.33
Server:
Apache
OS:
Linux 5.14.0-611.49.1.el9_7.x86_64
User:
websparkit
Navigate
Upload:
Upload
New File
New Folder
Editing:booking-details.php
<?php define('PAGE_TITLE', 'Booking Details'); require_once 'includes/header.php'; $id = isset($_GET['id']) ? intval($_GET['id']) : 0; $booking = getBooking($id); if (!$booking) { echo '<div class="alert alert-danger">Booking not found</div>'; require_once 'includes/footer.php'; exit; } $payments = getPayments($id); if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['update_status'])) { $new_status = cleanInput($_POST['status']); $admin_notes = cleanInput($_POST['admin_notes']); $assigned_team = cleanInput($_POST['assigned_team'] ?? ''); $stmt = $conn->prepare("UPDATE bookings SET status=?, admin_notes=?, assigned_team=? WHERE id=?"); $stmt->bind_param("sssi", $new_status, $admin_notes, $assigned_team, $id); if ($stmt->execute()) { $stmt2 = $conn->prepare("INSERT INTO booking_status (booking_id, status, notes, created_by) VALUES (?, ?, ?, ?)"); $stmt2->bind_param("issi", $id, $new_status, $admin_notes, $_SESSION['admin_id']); $stmt2->execute(); addNotification('Booking Updated', "Booking {$booking['booking_id']} updated to {$new_status}", SITE_URL."admin/booking-details.php?id={$id}", 'customer', $booking['customer_id']); addNotification('Booking Updated', "Booking {$booking['booking_id']} updated to {$new_status}", SITE_URL."admin/booking-details.php?id={$id}", 'admin'); $msg = '<div class="alert alert-success">Booking updated!</div>'; $booking = getBooking($id); } } ?> <div class="d-flex justify-content-between align-items-center mb-4"> <h4 class="fw-bold text-navy mb-0"><i class="bi bi-file-text text-warning me-2"></i>Booking #<?= $booking['booking_id'] ?></h4> <div><a href="bookings.php" class="btn btn-outline-premium btn-sm"><i class="bi bi-arrow-left me-1"></i>Back</a></div> </div> <?= $msg ?? '' ?> <div class="row g-4"> <div class="col-lg-8"> <div class="premium-card p-4 mb-4"> <h5 class="fw-bold mb-3">Customer Details</h5> <div class="row"><div class="col-md-4"><label class="text-muted small">Name</label><p class="fw-bold"><?= htmlspecialchars($booking['customer_name']) ?></p></div> <div class="col-md-4"><label class="text-muted small">Email</label><p class="fw-bold"><?= $booking['customer_email'] ?></p></div> <div class="col-md-4"><label class="text-muted small">Phone</label><p class="fw-bold"><?= $booking['customer_phone'] ?></p></div></div> </div> <div class="premium-card p-4 mb-4"> <h5 class="fw-bold mb-3">Event Details</h5> <div class="row g-3"> <div class="col-md-4"><label class="text-muted small">Category</label><p class="fw-bold"><?= $booking['category_name'] ?></p></div> <div class="col-md-4"><label class="text-muted small">Package</label><p class="fw-bold"><?= $booking['package_name'] ?></p></div> <div class="col-md-4"><label class="text-muted small">Event Date</label><p class="fw-bold"><?= date('l, d F Y', strtotime($booking['event_date'])) ?></p></div> <div class="col-md-3"><label class="text-muted small">Start</label><p class="fw-bold"><?= date('h:i A', strtotime($booking['start_time'])) ?></p></div> <div class="col-md-3"><label class="text-muted small">End</label><p class="fw-bold"><?= date('h:i A', strtotime($booking['end_time'])) ?></p></div> <div class="col-md-6"><label class="text-muted small">Venue</label><p class="fw-bold"><?= htmlspecialchars($booking['venue']) ?></p></div> <div class="col-md-6"><label class="text-muted small">Address</label><p class="fw-bold"><?= htmlspecialchars($booking['address'] ?: 'N/A') ?></p></div> <div class="col-md-6"><label class="text-muted small">District</label><p class="fw-bold"><?= htmlspecialchars($booking['district']) ?></p></div> <div class="col-md-6"><label class="text-muted small">Color Theme</label><p class="fw-bold"><?= htmlspecialchars($booking['color_theme'] ?: 'N/A') ?></p></div> <?php if (isset($booking['distance']) && $booking['distance'] > 0): ?> <div class="col-md-6"><label class="text-muted small">Distance from Office</label><p class="fw-bold"><?= number_format($booking['distance'], 2) ?> km</p></div> <?php endif; ?> <?php if ($booking['special_notes']): ?><div class="col-12"><label class="text-muted small">Special Notes</label><p><?= nl2br(htmlspecialchars($booking['special_notes'])) ?></p></div><?php endif; ?> <?php if (!empty($booking['latitude']) && !empty($booking['longitude'])): ?> <div class="col-12 mt-3"> <label class="text-muted small mb-2">Event Location Map</label> <div id="booking-details-map" style="height: 200px; border-radius: 8px; border: 1px solid rgba(0,0,0,0.1); background: #f8f9fa; position: relative; z-index: 1;"></div> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /> <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> <script> document.addEventListener("DOMContentLoaded", function() { var map = L.map('booking-details-map').setView([<?= $booking['latitude'] ?>, <?= $booking['longitude'] ?>], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); var officeLat = <?= floatval(getSetting('office_latitude') ?: 6.9271) ?>; var officeLng = <?= floatval(getSetting('office_longitude') ?: 79.8612) ?>; var officeIcon = L.icon({ iconUrl: 'https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-red.png', shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }); L.marker([officeLat, officeLng], { icon: officeIcon }).addTo(map).bindPopup("Our Office"); L.marker([<?= $booking['latitude'] ?>, <?= $booking['longitude'] ?>]).addTo(map).bindPopup("Event Venue").openPopup(); L.polyline([[officeLat, officeLng], [<?= $booking['latitude'] ?>, <?= $booking['longitude'] ?>]], { color: '#FF7A00', weight: 3, dashArray: '5, 10' }).addTo(map); }); </script> </div> <?php endif; ?> <?php if ($booking['inspiration_image']): ?><div class="col-12"><label class="text-muted small">Inspiration Image</label><br><img src="<?= SITE_URL.'uploads/customers/'.$booking['inspiration_image'] ?>" style="max-height:200px;border-radius:8px;"></div><?php endif; ?> </div> </div> <?php if (count($payments) > 0): ?> <div class="premium-card p-4 mb-4"> <h5 class="fw-bold mb-3"><i class="bi bi-credit-card text-warning me-2"></i>Payment History</h5> <table class="table table-hover"><thead><tr><th>Amount</th><th>Type</th><th>Method</th><th>Transaction</th><th>Date</th><th>Status</th></tr></thead> <tbody><?php foreach ($payments as $p): ?><tr> <td><?= formatPrice($p['amount']) ?></td><td><?= $p['payment_type'] ?></td><td><?= $p['payment_method'] ?: '-' ?></td> <td><?= $p['transaction_id'] ?: '-' ?></td><td><?= date('d M Y', strtotime($p['created_at'])) ?></td> <td><a href="payment-verify.php?id=<?= $p['id'] ?>" class="btn btn-sm btn-outline-premium"><?= getStatusBadge($p['status']) ?></a></td> </tr><?php endforeach; ?></tbody> </table> </div> <?php endif; ?> </div> <div class="col-lg-4"> <div class="premium-card p-4 mb-4"> <h5 class="fw-bold mb-3">Financial Summary</h5> <?php $pkg_price = isset($booking['package_price']) && $booking['package_price'] > 0 ? floatval($booking['package_price']) : floatval($booking['total_price']) - floatval($booking['transport_cost'] ?? 0); $trans_cost = isset($booking['transport_cost']) ? floatval($booking['transport_cost']) : 0.0; ?> <div class="d-flex justify-content-between mb-2"><span>Package Price:</span><span class="fw-bold"><?= formatPrice($pkg_price) ?></span></div> <?php if ($trans_cost > 0): ?> <div class="d-flex justify-content-between mb-2"><span>Transport Cost (<?= number_format($booking['distance'], 2) ?> km):</span><span class="fw-bold"><?= formatPrice($trans_cost) ?></span></div> <?php endif; ?> <div class="d-flex justify-content-between mb-2"><span>Total Price:</span><span class="fw-bold"><?= formatPrice($booking['total_price']) ?></span></div> <div class="d-flex justify-content-between mb-2"><span>Advance Paid:</span><span class="fw-bold text-success"><?= formatPrice($booking['advance_amount']) ?></span></div> <div class="d-flex justify-content-between mb-2"><span>Balance:</span><span class="fw-bold <?= $booking['balance_amount']>0?'text-danger':'text-success' ?>"><?= formatPrice($booking['balance_amount']) ?></span></div> <hr> <div class="d-flex justify-content-between mb-2"><span>Status:</span><?= getStatusBadge($booking['status']) ?></div> <div class="d-flex justify-content-between mb-2"><span>Payment:</span><?= getStatusBadge($booking['payment_status']) ?></div> <hr> <a href="<?= SITE_URL ?>pdf/invoice.php?booking_id=<?= $id ?>" target="_blank" class="btn btn-navy w-100 mb-2"><i class="bi bi-file-pdf me-2"></i>View Invoice</a> <button onclick="printBooking(<?= $id ?>)" class="btn btn-outline-secondary w-100"><i class="bi bi-printer me-2"></i>Print Details</button> </div> <div class="premium-card p-4"> <h5 class="fw-bold mb-3"><i class="bi bi-pencil-square text-warning me-2"></i>Update Status</h5> <form method="post"> <div class="mb-3"><label class="form-label">Status</label> <select name="status" class="form-select"> <option value="pending" <?= $booking['status']=='pending'?'selected':'' ?>>Pending</option> <option value="approved" <?= $booking['status']=='approved'?'selected':'' ?>>Approved</option> <option value="waiting_payment" <?= $booking['status']=='waiting_payment'?'selected':'' ?>>Waiting Payment</option> <option value="confirmed" <?= $booking['status']=='confirmed'?'selected':'' ?>>Confirmed</option> <option value="completed" <?= $booking['status']=='completed'?'selected':'' ?>>Completed</option> <option value="cancelled" <?= $booking['status']=='cancelled'?'selected':'' ?>>Cancelled</option> </select> </div> <div class="mb-3"><label class="form-label">Assigned Team</label><input type="text" name="assigned_team" class="form-control" value="<?= htmlspecialchars($booking['assigned_team'] ?? '') ?>" placeholder="Team name"></div> <div class="mb-3"><label class="form-label">Admin Notes</label><textarea name="admin_notes" class="form-control" rows="3"><?= htmlspecialchars($booking['admin_notes'] ?? '') ?></textarea></div> <button type="submit" name="update_status" class="btn btn-premium w-100"><i class="bi bi-check-circle me-2"></i>Update Booking</button> </form> </div> </div> </div> <script> function printBooking(id) { window.open('<?= SITE_URL ?>pdf/invoice.php?booking_id='+id+'&print=1', '_blank'); } </script> <?php require_once 'includes/footer.php'; ?>
Save Changes
Cancel
Create New File
Create New Folder