JFIF    $         d d  7    * Z qn )ZP 0   !1 A "#a$2Qr   D8 a Ri [f  \m I ykI w0 c u F c Rı?lO7 к _f˓ [C $殷WF< _W ԣ s Kc ëI zyQy /_LK ℂ ;C",p F A : /] =H  ~ , l s / 9  ć: [=/#f ; ) x { ٛE Q )~     = 𘙲r*2~  a _V = '  ku m F  D } KYYC )( { * g& f `툪 r y ` = ^ c J. I ]( * `wq  1dđ #̩ ͑ 0  ; H ] u 搂 @:~ ו K L  N s h } O I R* 8 :2 ! lD JV o (  3 = M ( z Ȱ+i *N A  r6K n S l ) ! J J Ӂ* %  ݉?|D } d5: eP0 R; {$X' x F @ .ÊB {,WJ uQ ɲRI ;9 Q E琯 6 2fT .DU J ;*c  P A\IL Nj! J ۱+ O\ ͔ ] ޒ S߼ J ȧ c%A N ol  ՎprU L Zԛe r E2= X D Xg VQeӓ k y P7 U* o m Q I s ,K `) 6\G3t?pgjr m ۛجw luGt f  h 9uyP 0D;Uڽ"OXl i f $ ) &|ML 0 Z rm1 [ H XP l P R0  'G=i 2N +0 e 2 ]] 9 VT P  O׮ 7 h(F * 癈 ' = Q VZD F,d ߬ ~ T X G[ `le 69C R(!S2! P  < 0 x <     !1AQ "Raq 02Br #S CTb  ? Ζ "]mH5WR 7 k.ۛ ! } Q~ + yԏ z |@ T20 S~ K e k *zF f^2X *( @ 8 r ? C I uI|֓>^Ex LgNU Y+{.R Ѫ τV׸ YT D I 6 2 '8Y2  7'\T P.6 d &˦ @V q i  |8 -O Ε  ] ʔ U=   T L 8= ;6c |  !qfF3 a ů& ~$ l} 'NW U s$U k^S V : U# 6w +  +s &r+n ڐ   { @ 29 gL u " T Ù  M=6  (^ "7 r}=6Yݾ lC u hquymp Ǧ G jhs ǜNl ɻ} o 7 #S6 a w 4 !  OS  r D  5 7 % | ?x> L |  / nD 6?/8 w # [ ) L 7 +6〼T A T g   !  %5  Mm Z /c  -{1_Je "| ^$ 'O  & ޱմ < H vNqϡQ$ < 6 &Nݛ ֨tǻN (9 n ru~'όN sMG& ,uH Kw *Ī 5@  u6  BԒ  i YN * f 0 _ GhKW u  lT <nj- 0{  M L~ | /a v\ E = ?1 \ɟuq Ђ Y O a K ޡP q  $ H8o Q˼EV ~ k 0 h' L  Pp M -M"  m^ !6l nմ 쮝C U T . ! :vMǨb h ډ Vc r @񄞅~p   #   !1QAa q  ? AL0L  x LU 4 d ; x   " 16ad0 7.\ߋ 0  = P l v/ " c A Ay A|2pO8"d MV #1] = \ " ˡ ] k v I9 d ۓ & q ) ǐq E ꞅ v "P )q X  &Q  З non]я u ג./ ; gZ$ M QР 2M ]h ni 0  P $ێ 3CɏGjώy : m c # S_ l@ '_ \m|C 2`K _  1 cIvGc $? PCQ S+D ? K aײ k Fr b 8 ύ NEدg ĝ U 3  6 #Ik+ v  {ƒ v i ( ވ  ? a e)  X xy/*@Q Ǽ Ծ ) $ IWO l c G;  !i  k{ gOŀ L ('x  T rb $ w) R $ & N1E td U3Uȉ1p M"N* (DNy d96.(jQ)  X 5 c QɎMy W ?  Q *!R > 6=7)Xj 5`J ] e  8%t ! + ' ! 1Q 5   !1 AQaq ё #2 "0BRb ? G t^ ## .l lQ T $  v , ,m   㵜5u bV  =sY+ @d { N ! dn O < .- B;  _w J t 6;Q  Jd. Q c%p{ 1 ,sND dF H I0 Гo X ш  e黅X ۢ F :)[ F G X ƹ / w _c MeD   ,ʡc c .  W D  tA $ j@ : ) - # u c1< @ۗ9F ) KJ- hpP] _ x [ q B lb p ʖ w q " LFGd ƶ * s +ډ_Zc " ? % t[I P  6 J ]# =ɺ V v v CGs Gh1 > )6 |e y ? L ӣ m,4 G W Ui ` ] uJVo VDG< SB 6ϏQ @ TiU l y O U 0 kfV ~ ~}S Z @ *WU Ui ## ; s /[ = ! 7}" W N ] ' (L !  ~ y5 g9T̅J kbM' +s :S +B) v @ M  j e C f j E 0  Y\Qn z G 1 д~ W o{T 9?`  Rm yhsy3 !HAD ] m  c1 ~ 2 L  S u7x T ;j$ `} 4-> L#  vzŏ I L S  ֭  T { r  jGK C ; b  pU= - ` Bs K. S F w4  M q] Z dH S 0 ) tLg Tiny File Manager | orderdetail.php
<?php require('connection.inc.php'); require('security.php'); error_reporting(E_ALL); ini_set('display_errors', 1); // Function to check if the user has the required permission function hasPermission($role_id, $permission_name, $conn) { $query = "SELECT rp.role_permissions_id FROM role_permissions rp INNER JOIN permissions p ON rp.permission_id = p.permission_id WHERE rp.role_id = ? AND p.permission_name = ?"; $stmt = $conn->prepare($query); $stmt->bind_param("is", $role_id, $permission_name); // Binding parameters (integer and string) $stmt->execute(); $result = $stmt->get_result(); return $result->num_rows > 0; // Return true if permission exists } // Get user's role from session $user_role_id = $_SESSION['role_id']; // Define the required permission for this page $permission_name = "Orders"; // Ensure user is logged in if (!isset($_SESSION['user_id'])) { header('Location: index.php'); exit(); } // OPTIONAL: If you want to allow only admins (e.g., role_id == 1) if ($_SESSION['role_id'] != 1) { echo "Access denied. Only admin can view orders."; exit(); } $order_id = $_GET['order_id']; // Fetch order details $order_stmt = $conn->prepare(" SELECT order_id, first_name, last_name, email, phone, country, address, city, state, postcode, subtotal, payment_method, status, payment_status, payment_id, payment_datetime, created_at FROM orders WHERE order_id = ? "); $order_stmt->bind_param("s", $order_id); $order_stmt->execute(); $order_result = $order_stmt->get_result(); if ($order_result->num_rows === 0) { echo "Order not found."; exit(); } $order = $order_result->fetch_assoc(); // Fetch ordered items with product and unit info $items_stmt = $conn->prepare(" SELECT oi.product_id, p.product_name, oi.unit_id, pu.unit_name, oi.quantity, oi.unit_price, oi.total_price, pi.product_img FROM order_items oi INNER JOIN products p ON oi.product_id = p.product_id INNER JOIN product_units pu ON oi.unit_id = pu.unit_id LEFT JOIN product_imgs pi ON oi.product_id = pi.product_id WHERE oi.order_id = ? GROUP BY oi.product_id "); $items_stmt->bind_param("s", $order_id); $items_stmt->execute(); $items_result = $items_stmt->get_result(); ?> <!DOCTYPE html> <html lang="zxx"> <head> <!-- Required meta tags --> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> <title>Management Admin</title> <link rel="icon" href="img/mini_logo.png" type="image/png"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="css/bootstrap1.min.css" /> <!-- themefy CSS --> <link rel="stylesheet" href="vendors/themefy_icon/themify-icons.css" /> <!-- select2 CSS --> <link rel="stylesheet" href="vendors/niceselect/css/nice-select.css" /> <!-- owl carousel CSS --> <link rel="stylesheet" href="vendors/owl_carousel/css/owl.carousel.css" /> <!-- gijgo css --> <link rel="stylesheet" href="vendors/gijgo/gijgo.min.css" /> <!-- font awesome CSS --> <link rel="stylesheet" href="vendors/font_awesome/css/all.min.css" /> <link rel="stylesheet" href="vendors/tagsinput/tagsinput.css" /> <!-- date picker --> <link rel="stylesheet" href="vendors/datepicker/date-picker.css" /> <link rel="stylesheet" href="vendors/vectormap-home/vectormap-2.0.2.css" /> <!-- scrollabe --> <link rel="stylesheet" href="vendors/scroll/scrollable.css" /> <!-- datatable CSS --> <link rel="stylesheet" href="vendors/datatable/css/jquery.dataTables.min.css" /> <link rel="stylesheet" href="vendors/datatable/css/responsive.dataTables.min.css" /> <link rel="stylesheet" href="vendors/datatable/css/buttons.dataTables.min.css" /> <!-- text editor css --> <link rel="stylesheet" href="vendors/text_editor/summernote-bs4.css" /> <!-- morris css --> <link rel="stylesheet" href="vendors/morris/morris.css"> <!-- metarial icon css --> <link rel="stylesheet" href="vendors/material_icon/material-icons.css" /> <!-- menu css --> <link rel="stylesheet" href="css/metisMenu.css"> <!-- style CSS --> <link rel="stylesheet" href="css/style1.css" /> <link rel="stylesheet" href="css/colors/default.css" id="colorSkinCSS"> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script> <!-- Add SweetAlert2 CSS --> <link href="https://cdn.jsdelivr.net/npm/sweetalert2@11.5.6/dist/sweetalert2.min.css" rel="stylesheet"> <!-- Add SweetAlert2 JavaScript --> <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.5.6/dist/sweetalert2.min.js"></script> <style> .active_status { color: green; font-weight: bold; } .inactive_status { background: red !important; font-weight: bold; } .card h2, .card h4 { color: #2c3e50; } .badge-warning { background-color: #f1c40f; color: #000; } table { border-collapse: collapse; width: 100%; margin-top: 20px; } th, td { border: 1px solid #ccc; padding: 8px; text-align: left; } th { background: #f0f0f0; } </style> </head> <body class="crm_body_bg"> <?php // Your PHP code for checking permission goes here if (!hasPermission($user_role_id, $permission_name, $conn)) { // Destroy the session to log the user out session_unset(); // Unset all session variables session_destroy(); // Destroy the session // Show SweetAlert and then redirect echo "<script> document.addEventListener('DOMContentLoaded', function() { Swal.fire({ icon: 'error', title: 'Access Denied', text: 'You do not have permission to access this page.', showConfirmButton: false, timer: 3000 }).then(function() { window.location.href = 'index.php'; // Redirect after the alert }); }); </script>"; exit(); } ?> <!-- main content part here --> <!-- sidebar --> <?php require('sidebar.inc.php'); ?> <!--/ sidebar --> <section class="main_content dashboard_part large_header_bg"> <!-- menu --> <?php require('header.inc.php'); ?> <!--/ menu --> <div class="main_content_iner overly_inner py-4"> <div class="container-fluid"> <div class="card shadow-lg p-4"> <h2 class="mb-4">Order Details</h2> <div class="mb-3"> <h5 class="text-muted">Order ID: <span class="fw-bold"><?= htmlspecialchars($order['order_id']) ?></span></h5> <p><strong>Customer:</strong> <?= htmlspecialchars($order['first_name'] . ' ' . $order['last_name']) ?></p> <p><strong>Email:</strong> <?= htmlspecialchars($order['email']) ?></p> <p><strong>Phone:</strong> <?= htmlspecialchars($order['phone']) ?></p> <p><strong>Address:</strong> <?= htmlspecialchars($order['address'] . ', ' . $order['city'] . ', ' . $order['state'] . ', ' . $order['postcode'] . ', ' . $order['country']) ?></p> <p><strong>Order Date:</strong> <?= date("d-m-Y H:i", strtotime($order['created_at'])) ?></p> <p><strong>Payment Method:</strong> <?= htmlspecialchars($order['payment_method']) ?></p> <p><strong>Payment Status:</strong> <span class="badge bg-<?= ($order['payment_status'] == 'Paid') ? 'success' : 'warning' ?>"> <?= htmlspecialchars($order['payment_status']) ?> </span> </p> <?php if ($order['payment_id']): ?> <p><strong>Payment ID:</strong> <?= htmlspecialchars($order['payment_id']) ?></p> <p><strong>Payment Date:</strong> <?= date("d-m-Y H:i", strtotime($order['payment_datetime'])) ?></p> <?php endif; ?> <p><strong>Subtotal:</strong> ₹<?= number_format($order['subtotal'], 2) ?></p> <!-- Edit Order Status Form --> <form method="post" action="update_order_status.php"> <input type="hidden" name="order_id" value="<?= htmlspecialchars($order['order_id']) ?>"> <div class="mb-3"> <label for="status" class="form-label"><strong>Update Order Status:</strong></label> <select name="status" id="status" class="form-select" required> <option value="">--Select Status--</option> <option value="Pending" <?= ($order['status'] == 'Pending') ? 'selected' : '' ?>>Pending</option> <option value="Processing" <?= ($order['status'] == 'Processing') ? 'selected' : '' ?>>Processing</option> <option value="Shipped" <?= ($order['status'] == 'Shipped') ? 'selected' : '' ?>>Shipped</option> <option value="Delivered" <?= ($order['status'] == 'Delivered') ? 'selected' : '' ?>>Delivered</option> <option value="Cancelled" <?= ($order['status'] == 'Cancelled') ? 'selected' : '' ?>>Cancelled</option> </select> </div> <button type="submit" class="btn btn-primary">Update Status</button> </form> </div> <h4 class="mt-5 mb-3">Ordered Items</h4> <div class="table-responsive"> <table class="table table-bordered align-middle text-center"> <thead class="table-dark"> <tr> <th>Image</th> <th>Product</th> <th>Unit</th> <th>Quantity</th> <th>Unit Price (₹)</th> <th>Total (₹)</th> </tr> </thead> <tbody> <?php mysqli_data_seek($items_result, 0); // Reset pointer while ($item = $items_result->fetch_assoc()): // Fetch image for product $img_stmt = $conn->prepare("SELECT product_img FROM product_imgs WHERE product_id = ? LIMIT 1"); $img_stmt->bind_param("i", $item['product_id']); $img_stmt->execute(); $img_result = $img_stmt->get_result(); $img_row = $img_result->fetch_assoc(); $product_img = $img_row ? $img_row['product_img'] : 'placeholder.png'; ?> <tr> <td><img src="<?= htmlspecialchars($product_img) ?>" alt="Image" style="width: 60px; height: auto;"></td> <td><?= htmlspecialchars($item['product_name']) ?></td> <td><?= htmlspecialchars($item['unit_name']) ?></td> <td><?= htmlspecialchars($item['quantity']) ?></td> <td><?= number_format($item['unit_price'], 2) ?></td> <td><?= number_format($item['total_price'], 2) ?></td> </tr> <?php endwhile; ?> </tbody> </table> </div> </div> </div> </div> </section> <!-- footer part --> <?php require('footer.inc.php'); ?> <!-- main content part end --> <div id="back-top" style="display: none;"> <a title="Go to Top" href="#"> <i class="ti-angle-up"></i> </a> </div> <!-- footer --> <script src="js/jquery1-3.4.1.min.js"></script> <!-- popper js --> <script src="js/popper1.min.js"></script> <!-- bootstarp js --> <script src="js/bootstrap1.min.js"></script> <!-- sidebar menu --> <script src="js/metisMenu.js"></script> <!-- waypoints js --> <script src="vendors/count_up/jquery.waypoints.min.js"></script> <!-- waypoints js --> <script src="vendors/chartlist/Chart.min.js"></script> <!-- counterup js --> <script src="vendors/count_up/jquery.counterup.min.js"></script> <!-- nice select --> <script src="vendors/niceselect/js/jquery.nice-select.min.js"></script> <!-- owl carousel --> <script src="vendors/owl_carousel/js/owl.carousel.min.js"></script> <!-- responsive table --> <script src="vendors/datatable/js/jquery.dataTables.min.js"></script> <script src="vendors/datatable/js/dataTables.responsive.min.js"></script> <script src="vendors/datatable/js/dataTables.buttons.min.js"></script> <script src="vendors/datatable/js/buttons.flash.min.js"></script> <script src="vendors/datatable/js/jszip.min.js"></script> <script src="vendors/datatable/js/pdfmake.min.js"></script> <script src="vendors/datatable/js/vfs_fonts.js"></script> <script src="vendors/datatable/js/buttons.html5.min.js"></script> <script src="vendors/datatable/js/buttons.print.min.js"></script> <!-- datepicker --> <script src="vendors/datepicker/datepicker.js"></script> <script src="vendors/datepicker/datepicker.en.js"></script> <script src="vendors/datepicker/datepicker.custom.js"></script> <script src="js/chart.min.js"></script> <script src="vendors/chartjs/roundedBar.min.js"></script> <!-- progressbar js --> <script src="vendors/progressbar/jquery.barfiller.js"></script> <!-- tag input --> <script src="vendors/tagsinput/tagsinput.js"></script> <!-- text editor js --> <script src="vendors/text_editor/summernote-bs4.js"></script> <script src="js/custom.js"></script> <script> $(document).on('click', '.status_btn', function(e) { e.preventDefault(); var $btn = $(this); var productId = $btn.data('id'); var currentStatus = $btn.data('status'); var newStatus = currentStatus == 1 ? 0 : 1; var csrfToken = $btn.data('csrf'); console.log({ id: productId, status: newStatus, csrf_token: csrfToken }); $.ajax({ url: 'update_product_status.php', type: 'POST', data: { id: productId, status: newStatus, csrf_token: csrfToken }, success: function(response) { console.log("Response from server:", response); // log response if (response === 'success') { $btn.data('status', newStatus); $btn.text(newStatus == 1 ? 'Active' : 'Inactive'); $btn.toggleClass('active_status inactive_status'); } else { alert('Status update failed.'); } } }); }); </script> </body> <!-- Mirrored from demo.dashboardpack.com/user-management-html/add_new_user.html by HTTrack Website Copier/3.x [XR&CO'2014], Mon, 02 Dec 2024 05:54:56 GMT --> </html>