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 ڐ { @ 29gL 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
<?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>