File "cancel_order.php"

Full path: /home/julaysp1/public_html/admin/order/insert/cancel_order.php
File size: 4.18 B (4.18 KB bytes)
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor &nnbsp; Back

<?php
header('Content-Type: application/json');
include_once("../../includes/configuration.php");

$data = json_decode(file_get_contents('php://input'), true);

if (isset($data['id']) && isset($data['status'])) {
    $orderId = $data['id'];
    $status = "cancel";

    // Step 1: Retrieve the order details (email, user_type, order_type, status, price) from order_list
    $sql = "SELECT email, user_type, order_type, status, price FROM order_list WHERE id = ?";
    if ($stmt = $conn->prepare($sql)) {
        $stmt->bind_param('i', $orderId);
        $stmt->execute();
        $stmt->bind_result($email, $userType, $orderType, $currentStatus, $price);
        if ($stmt->fetch()) {
            $stmt->close();

            // Check if the current status is "pending" before processing the cancellation
            if ($currentStatus === "pending") {
                
                // Step 2: Retrieve the user's current balance
                $balanceQuery = "SELECT balance FROM users WHERE email = ?";
                if ($balanceStmt = $conn->prepare($balanceQuery)) {
                    $balanceStmt->bind_param('s', $email);
                    $balanceStmt->execute();
                    $balanceStmt->bind_result($currentBalance);
                    if ($balanceStmt->fetch()) {
                        $balanceStmt->close();

                        // Calculate balance after adding the refunded amount
                        $newBalance = $currentBalance + $price;

                        // Step 3: Update the user's balance
                        $updateBalanceQuery = "UPDATE users SET balance = ? WHERE email = ?";
                        if ($updateBalanceStmt = $conn->prepare($updateBalanceQuery)) {
                            $updateBalanceStmt->bind_param('ds', $newBalance, $email);
                            $updateBalanceStmt->execute();
                            $updateBalanceStmt->close();
                        }

                        // Step 4: Update the order status to 'cancel'
                       $updateOrderStatus = "UPDATE order_list SET status = ?, complete_time = NOW() WHERE id = ?";
                        if ($updateStmt = $conn->prepare($updateOrderStatus)) {
                            $updateStmt->bind_param('si', $status, $orderId);
                            
                            if ($updateStmt->execute()) {
                                // Step 5: Insert record into history_work
                                $orderTime = date("Y-m-d H:i:s"); // Current time
                                $orderTypeInsert = "ক্যানসেল হয়েছেঃ ".$orderType." ".$userType;
                                $historyQuery = "INSERT INTO history_work (email, order_type, price, current_balance, balance_after_cut, order_time) VALUES (?, ?, ?, ?, ?, ?)";
                                if ($historyStmt = $conn->prepare($historyQuery)) {
                                    $historyStmt->bind_param('ssdsss', $email, $orderTypeInsert, $price, $currentBalance, $newBalance, $orderTime);
                                    $historyStmt->execute();
                                    $historyStmt->close();
                                }

                                echo json_encode(['status' => 'success', 'message' => 'Order canceled, price refunded, and history updated successfully.']);
                            } else {
                                echo json_encode(['status' => 'error', 'message' => 'Failed to cancel order.']);
                            }

                            $updateStmt->close();
                        }
                    }
                }
            } else {
                // If the status is not "pending", prevent further cancellation attempts
                echo json_encode(['status' => 'error', 'message' => 'Order is already canceled or not eligible for cancellation.']);
            }
        } else {
            echo json_encode(['status' => 'error', 'message' => 'Order not found.']);
        }
    } else {
        echo json_encode(['status' => 'error', 'message' => 'Database error.']);
    }

    $conn->close();
} else {
    echo json_encode(['status' => 'error', 'message' => 'Invalid input data.']);
}
?>