/home/awneajlw/public_html/codestechvista.com/update_order_status.php
<?php
/**
 * Update Order Status with SMS Notifications
 * API endpoint to update order status and send notifications
 */

session_start();
require_once 'config/database.php';
require_once 'includes/auth.php';
require_once 'includes/sms_service.php';

// Check authentication
if (!isLoggedIn()) {
    http_response_code(401);
    echo json_encode(['error' => 'Unauthorized']);
    exit();
}

// Only accept POST requests
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['error' => 'Method not allowed']);
    exit();
}

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

if (!$input) {
    http_response_code(400);
    echo json_encode(['error' => 'Invalid JSON input']);
    exit();
}

// Validate required fields
$order_id = intval($input['order_id'] ?? 0);
$new_status = trim($input['status'] ?? '');

if ($order_id <= 0) {
    http_response_code(400);
    echo json_encode(['error' => 'Invalid order ID']);
    exit();
}

if (empty($new_status)) {
    http_response_code(400);
    echo json_encode(['error' => 'Status is required']);
    exit();
}

// Valid status values
$valid_statuses = ['Pending', 'In Progress', 'Completed', 'Cancelled', 'On Hold'];
if (!in_array($new_status, $valid_statuses)) {
    http_response_code(400);
    echo json_encode(['error' => 'Invalid status value']);
    exit();
}

try {
    $database = new Database();
    $db = $database->getConnection();
    
    // Get current order details
    $query = "SELECT id, patient_name, whatsapp_number, total_amount, status FROM orders WHERE id = ?";
    $stmt = $db->prepare($query);
    $stmt->execute([$order_id]);
    $order = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$order) {
        http_response_code(404);
        echo json_encode(['error' => 'Order not found']);
        exit();
    }
    
    $old_status = $order['status'];
    
    // Don't update if status is the same
    if ($old_status === $new_status) {
        echo json_encode([
            'success' => true,
            'message' => 'Status is already set to ' . $new_status,
            'order' => $order
        ]);
        exit();
    }
    
    // Update order status
    $update_query = "UPDATE orders SET status = ?, updated_at = NOW() WHERE id = ?";
    $update_stmt = $db->prepare($update_query);
    $result = $update_stmt->execute([$new_status, $order_id]);
    
    if (!$result) {
        throw new Exception('Failed to update order status');
    }
    
    // Send SMS notifications
    $smsService = new SMSService();
    $formatted_amount = number_format($order['total_amount'], 0);
    
    try {
        if ($new_status === 'Completed') {
            // Send completion notification
            $smsService->sendOrderCompletedNotification(
                $order_id,
                $order['patient_name'],
                $formatted_amount,
                $order['whatsapp_number']
            );
        } else {
            // Send status update notification
            $smsService->sendOrderStatusUpdateNotification(
                $order_id,
                $order['patient_name'],
                $old_status,
                $new_status,
                $order['whatsapp_number']
            );
        }
        
        $sms_sent = true;
        error_log("SMS notification sent for order status update: Order #$order_id from $old_status to $new_status");
    } catch (Exception $sms_error) {
        $sms_sent = false;
        error_log("SMS notification failed for order #$order_id: " . $sms_error->getMessage());
    }
    
    // Return success response
    echo json_encode([
        'success' => true,
        'message' => "Order status updated from '$old_status' to '$new_status'",
        'order' => [
            'id' => $order_id,
            'patient_name' => $order['patient_name'],
            'old_status' => $old_status,
            'new_status' => $new_status,
            'sms_sent' => $sms_sent
        ]
    ]);
    
} catch (Exception $e) {
    error_log("Order status update error: " . $e->getMessage());
    http_response_code(500);
    echo json_encode(['error' => 'Failed to update order status: ' . $e->getMessage()]);
}
?>