56 lines
2.3 KiB
PHP
56 lines
2.3 KiB
PHP
<?php
|
|
session_start();
|
|
require_once 'db/config.php';
|
|
|
|
$user_id = $_SESSION['user_id'] ?? null;
|
|
$session_id = session_id();
|
|
$action = $_POST['action'] ?? '';
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
if ($action === 'add') {
|
|
$menu_item_id = $_POST['menu_item_id'] ?? null;
|
|
$quantity = $_POST['quantity'] ?? 1;
|
|
|
|
if ($menu_item_id) {
|
|
try {
|
|
$pdo = db();
|
|
|
|
// Check if the item is already in the cart
|
|
if ($user_id) {
|
|
$stmt = $pdo->prepare("SELECT * FROM cart WHERE user_id = ? AND menu_item_id = ?");
|
|
$stmt->execute([$user_id, $menu_item_id]);
|
|
} else {
|
|
$stmt = $pdo->prepare("SELECT * FROM cart WHERE session_id = ? AND menu_item_id = ?");
|
|
$stmt->execute([$session_id, $menu_item_id]);
|
|
}
|
|
$existing_item = $stmt->fetch();
|
|
|
|
if ($existing_item) {
|
|
// If item exists, update the quantity
|
|
$new_quantity = $existing_item['quantity'] + $quantity;
|
|
$update_stmt = $pdo->prepare("UPDATE cart SET quantity = ? WHERE id = ?");
|
|
$update_stmt->execute([$new_quantity, $existing_item['id']]);
|
|
} else {
|
|
// If item does not exist, insert it
|
|
if ($user_id) {
|
|
$insert_stmt = $pdo->prepare("INSERT INTO cart (user_id, menu_item_id, quantity) VALUES (?, ?, ?)");
|
|
$insert_stmt->execute([$user_id, $menu_item_id, $quantity]);
|
|
} else {
|
|
$insert_stmt = $pdo->prepare("INSERT INTO cart (session_id, menu_item_id, quantity) VALUES (?, ?, ?)");
|
|
$insert_stmt->execute([$session_id, $menu_item_id, $quantity]);
|
|
}
|
|
}
|
|
|
|
echo json_encode(['success' => true, 'message' => 'Item added to cart.']);
|
|
|
|
} catch (PDOException $e) {
|
|
http_response_code(500);
|
|
echo json_encode(['success' => false, 'message' => 'Database error: ' . $e->getMessage()]);
|
|
}
|
|
} else {
|
|
http_response_code(400);
|
|
echo json_encode(['success' => false, 'message' => 'Menu item ID is required.']);
|
|
}
|
|
}
|
|
}
|
|
?>
|