please fix this edit order and make it cool design and this info database (-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1:3306
-- Generation Time: Nov 12, 2024 at 08:36 AM
-- Server version: 10.11.9-MariaDB
-- PHP Version: 7.2.34

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `u406552082_kaakalia`
--

-- --------------------------------------------------------

--
-- Table structure for table `ads`
--

CREATE TABLE `ads` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `ad_type` enum('Post','Story') NOT NULL,
  `related_id` int(11) NOT NULL,
  `budget` decimal(10,2) NOT NULL,
  `total_spent` decimal(10,2) DEFAULT 0.00,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `status` enum('Active','Paused','Completed') DEFAULT 'Active',
  `created_at` datetime DEFAULT current_timestamp(),
  `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `ad_spend_logs`
--

CREATE TABLE `ad_spend_logs` (
  `id` int(11) NOT NULL,
  `ad_id` int(11) NOT NULL,
  `amount` decimal(10,2) NOT NULL,
  `spend_date` datetime DEFAULT current_timestamp(),
  `description` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `customers`
--

CREATE TABLE `customers` (
  `id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `contact` varchar(50) DEFAULT NULL,
  `delivery_address` text DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `drivers`
--

CREATE TABLE `drivers` (
  `id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `number` varchar(15) NOT NULL,
  `is_star` tinyint(1) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `notifications`
--

CREATE TABLE `notifications` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `type` enum('order','post','plan','note','ad') NOT NULL,
  `message` varchar(255) NOT NULL,
  `link` varchar(255) NOT NULL,
  `created_at` datetime DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `orders`
--

CREATE TABLE `orders` (
  `id` int(11) NOT NULL,
  `customer_id` int(11) NOT NULL,
  `status` enum('Pending','In Progress','Completed','Delivered') DEFAULT 'Pending',
  `priority` enum('Normal','Important','Quick') DEFAULT 'Normal',
  `order_date` datetime DEFAULT current_timestamp(),
  `delivery_datetime` datetime DEFAULT NULL,
  `delivery_date` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `order_items`
--

CREATE TABLE `order_items` (
  `id` int(11) NOT NULL,
  `order_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `quantity` int(11) NOT NULL DEFAULT 1,
  `packaging_preferences` varchar(255) DEFAULT NULL,
  `discount_percentage` decimal(5,2) DEFAULT 0.00,
  `discount_reason` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `products`
--

CREATE TABLE `products` (
  `id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `size` varchar(50) DEFAULT NULL,
  `price` decimal(10,2) NOT NULL,
  `category` varchar(50) DEFAULT NULL,
  `thumbnail` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `username` varchar(50) NOT NULL,
  `email` varchar(100) DEFAULT NULL,
  `password` varchar(255) NOT NULL,
  `role` enum('admin','staff') NOT NULL,
  `profile_image` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `workspace_notes`
--

CREATE TABLE `workspace_notes` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `content` text NOT NULL,
  `created_at` datetime DEFAULT current_timestamp(),
  `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `workspace_plans`
--

CREATE TABLE `workspace_plans` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `audio_path` varchar(255) DEFAULT NULL,
  `due_date` datetime DEFAULT NULL,
  `status` enum('Not Started','In Progress','Completed') DEFAULT 'Not Started',
  `created_at` datetime DEFAULT current_timestamp(),
  `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `priority` enum('Normal','Important','Critical') NOT NULL DEFAULT 'Normal'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `workspace_posts`
--

CREATE TABLE `workspace_posts` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `platform` enum('Instagram','Facebook','Twitter','Other') NOT NULL,
  `content` text NOT NULL,
  `media_url` varchar(255) DEFAULT NULL,
  `scheduled_datetime` datetime DEFAULT NULL,
  `status` enum('Scheduled','Posted','Failed') DEFAULT 'Scheduled',
  `created_at` datetime DEFAULT current_timestamp(),
  `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `type` enum('Post','Story') DEFAULT 'Post'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `ads`
--
ALTER TABLE `ads`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_id` (`user_id`),
  ADD KEY `related_id` (`related_id`);

--
-- Indexes for table `ad_spend_logs`
--
ALTER TABLE `ad_spend_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `ad_id` (`ad_id`);

--
-- Indexes for table `customers`
--
ALTER TABLE `customers`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `drivers`
--
ALTER TABLE `drivers`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `notifications`
--
ALTER TABLE `notifications`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_id` (`user_id`),
  ADD KEY `created_at` (`created_at`);

--
-- Indexes for table `orders`
--
ALTER TABLE `orders`
  ADD PRIMARY KEY (`id`),
  ADD KEY `customer_id` (`customer_id`),
  ADD KEY `idx_orders_customer_id` (`customer_id`);

--
-- Indexes for table `order_items`
--
ALTER TABLE `order_items`
  ADD PRIMARY KEY (`id`),
  ADD KEY `order_id` (`order_id`),
  ADD KEY `product_id` (`product_id`),
  ADD KEY `idx_order_items_order_id` (`order_id`),
  ADD KEY `idx_order_items_product_id` (`product_id`);

--
-- Indexes for table `products`
--
ALTER TABLE `products`
  ADD PRIMARY KEY (`id`);

--
-- Indexes for table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `username` (`username`);

--
-- Indexes for table `workspace_notes`
--
ALTER TABLE `workspace_notes`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_id` (`user_id`);

--
-- Indexes for table `workspace_plans`
--
ALTER TABLE `workspace_plans`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_id` (`user_id`);

--
-- Indexes for table `workspace_posts`
--
ALTER TABLE `workspace_posts`
  ADD PRIMARY KEY (`id`),
  ADD KEY `user_id` (`user_id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `ads`
--
ALTER TABLE `ads`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `ad_spend_logs`
--
ALTER TABLE `ad_spend_logs`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `customers`
--
ALTER TABLE `customers`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `drivers`
--
ALTER TABLE `drivers`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `notifications`
--
ALTER TABLE `notifications`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `orders`
--
ALTER TABLE `orders`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `order_items`
--
ALTER TABLE `order_items`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `products`
--
ALTER TABLE `products`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `workspace_notes`
--
ALTER TABLE `workspace_notes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `workspace_plans`
--
ALTER TABLE `workspace_plans`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `workspace_posts`
--
ALTER TABLE `workspace_posts`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `ads`
--
ALTER TABLE `ads`
  ADD CONSTRAINT `fk_ads_related_id` FOREIGN KEY (`related_id`) REFERENCES `workspace_posts` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_ads_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `ad_spend_logs`
--
ALTER TABLE `ad_spend_logs`
  ADD CONSTRAINT `fk_ad_spend_logs_ad_id` FOREIGN KEY (`ad_id`) REFERENCES `ads` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `notifications`
--
ALTER TABLE `notifications`
  ADD CONSTRAINT `notifications_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `orders`
--
ALTER TABLE `orders`
  ADD CONSTRAINT `fk_orders_customer_id` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `order_items`
--
ALTER TABLE `order_items`
  ADD CONSTRAINT `fk_order_items_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_order_items_product_id` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `order_items_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `order_items_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `workspace_notes`
--
ALTER TABLE `workspace_notes`
  ADD CONSTRAINT `fk_workspace_notes_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `workspace_plans`
--
ALTER TABLE `workspace_plans`
  ADD CONSTRAINT `fk_workspace_plans_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `workspace_posts`
--
ALTER TABLE `workspace_posts`
  ADD CONSTRAINT `fk_workspace_posts_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;) and type full codes and make it cool design and this codes (<?php
// public/orders/edit_order.php

// Enable error reporting for debugging (disable in production)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Include authentication and database connection **before** including the header
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/db_connect.php';

// Initialize success and error variables
$success = '';
$error = '';

// Retrieve and sanitize the order ID from GET parameters
$order_id = isset($_GET['id']) ? intval($_GET['id']) : 0;

// Redirect if no valid order ID is provided
if ($order_id <= 0) {
    header("Location: view_orders.php");
    exit();
}

// Fetch order details along with customer information
$order_sql = "SELECT o.*, c.name AS customer_name, c.contact AS customer_contact, c.delivery_address 
              FROM orders o 
              JOIN customers c ON o.customer_id = c.id 
              WHERE o.id = ? LIMIT 1";
$order_stmt = $conn->prepare($order_sql);
$order_stmt->bind_param("i", $order_id);
$order_stmt->execute();
$order_result = $order_stmt->get_result();

if ($order_result->num_rows != 1) {
    header("Location: view_orders.php");
    exit();
}

$order = $order_result->fetch_assoc();
$order_stmt->close();

// Fetch existing order items
$order_items_sql = "SELECT oi.*, p.name AS product_name, p.size, p.price 
                   FROM order_items oi 
                   JOIN products p ON oi.product_id = p.id 
                   WHERE oi.order_id = ?";
$order_items_stmt = $conn->prepare($order_items_sql);
$order_items_stmt->bind_param("i", $order_id);
$order_items_stmt->execute();
$order_items_result = $order_items_stmt->get_result();
$order_items = [];
while ($item = $order_items_result->fetch_assoc()) {
    $order_items[] = $item;
}
$order_items_stmt->close();

// Fetch products for selection
$products_sql = "SELECT * FROM products ORDER BY name ASC";
$products_result = $conn->query($products_sql);

// Handle form submission for updating the order
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Retrieve and sanitize form inputs
    $customer_name = trim($_POST['customer_name']);
    $contact = trim($_POST['contact']);
    $delivery_address = trim($_POST['delivery_address']);
    $status = isset($_POST['status']) ? trim($_POST['status']) : 'Pending';
    $priority = isset($_POST['priority']) ? trim($_POST['priority']) : 'Normal';
    $delivery_datetime = isset($_POST['delivery_datetime']) && !empty($_POST['delivery_datetime']) ? trim($_POST['delivery_datetime']) : null;
    $delivery_date = isset($_POST['delivery_date']) && !empty($_POST['delivery_date']) ? trim($_POST['delivery_date']) : null;

    // Handle existing order items
    $existing_item_ids = isset($_POST['existing_item_id']) ? $_POST['existing_item_id'] : [];
    $product_ids = isset($_POST['product_id']) ? $_POST['product_id'] : [];
    $quantities = isset($_POST['quantity']) ? $_POST['quantity'] : [];
    $packaging_preferences = isset($_POST['packaging_preferences']) ? $_POST['packaging_preferences'] : [];
    $discount_percentages = isset($_POST['discount_percentage']) ? $_POST['discount_percentage'] : [];
    $discount_reasons = isset($_POST['discount_reason']) ? $_POST['discount_reason'] : [];

    // Handle new order items
    $new_product_ids = isset($_POST['new_product_id']) ? $_POST['new_product_id'] : [];
    $new_quantities = isset($_POST['new_quantity']) ? $_POST['new_quantity'] : [];
    $new_packaging_preferences = isset($_POST['new_packaging_preferences']) ? $_POST['new_packaging_preferences'] : [];
    $new_discount_percentages = isset($_POST['new_discount_percentage']) ? $_POST['new_discount_percentage'] : [];
    $new_discount_reasons = isset($_POST['new_discount_reason']) ? $_POST['new_discount_reason'] : [];

    // Basic validation
    if (empty($customer_name)) {
        $error = "Customer name is required.";
    } elseif (empty($status)) {
        $error = "Order status is required.";
    } elseif (empty($priority)) {
        $error = "Order priority is required.";
    } elseif (($existing_item_ids && (empty($product_ids) || empty($quantities))) && (empty($new_product_ids))) {
        $error = "At least one product must be selected.";
    } else {
        // Validate each existing product entry
        foreach ($product_ids as $index => $pid) {
            if (empty($pid)) {
                $error = "Product selection is required for all existing items.";
                break;
            }
            if (intval($quantities[$index]) <= 0) {
                $error = "Quantity must be at least 1 for all existing items.";
                break;
            }
            if ($discount_percentages[$index] !== '' && (floatval($discount_percentages[$index]) < 0 || floatval($discount_percentages[$index]) > 100)) {
                $error = "Discount percentage must be between 0 and 100.";
                break;
            }
        }

        // Validate new product entries
        foreach ($new_product_ids as $index => $pid) {
            if (!empty($pid)) {
                if (intval($new_quantities[$index]) <= 0) {
                    $error = "Quantity must be at least 1 for all new items.";
                    break;
                }
                if ($new_discount_percentages[$index] !== '' && (floatval($new_discount_percentages[$index]) < 0 || floatval($new_discount_percentages[$index]) > 100)) {
                    $error = "Discount percentage must be between 0 and 100 for all new items.";
                    break;
                }
            }
        }

        if ($delivery_datetime && !preg_match("/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/", $delivery_datetime)) {
            $error = "Invalid delivery date and time format.";
        } elseif ($delivery_datetime && strtotime(str_replace('T', ' ', $delivery_datetime)) < strtotime(date('Y-m-d H:i'))) {
            $error = "Delivery date and time cannot be in the past.";
        }

        if ($delivery_date && !preg_match("/^\d{4}-\d{2}-\d{2}$/", $delivery_date)) {
            $error = "Invalid delivery date format.";
        }
    }

    if (empty($error)) {
        // Start transaction
        $conn->begin_transaction();

        try {
            // Update customer details
            $stmt = $conn->prepare("UPDATE customers SET name = ?, contact = ?, delivery_address = ? WHERE id = ?");
            if (!$stmt) {
                throw new Exception("Prepare statement failed: " . $conn->error);
            }
            $stmt->bind_param("sssi", $customer_name, $contact, $delivery_address, $order['customer_id']);
            if (!$stmt->execute()) {
                throw new Exception("Execute failed: " . $stmt->error);
            }
            $stmt->close();

            // Update orders table
            $stmt = $conn->prepare("UPDATE orders SET status = ?, priority = ?, delivery_datetime = ?, delivery_date = ? WHERE id = ?");
            if (!$stmt) {
                throw new Exception("Prepare statement failed: " . $conn->error);
            }
            $stmt->bind_param("ssssi", $status, $priority, $delivery_datetime, $delivery_date, $order_id);
            if (!$stmt->execute()) {
                throw new Exception("Execute failed: " . $stmt->error);
            }
            $stmt->close();

            // Update existing order items
            foreach ($existing_item_ids as $index => $item_id) {
                $item_id = intval($item_id);
                $pid = intval($product_ids[$index]);
                $qty = intval($quantities[$index]);
                $pack_pref = trim($packaging_preferences[$index]);
                $discount_pct = $discount_percentages[$index] !== '' ? floatval($discount_percentages[$index]) : 0.00;
                $discount_rsn = trim($discount_reasons[$index]);

                $stmt = $conn->prepare("UPDATE order_items SET product_id = ?, quantity = ?, packaging_preferences = ?, discount_percentage = ?, discount_reason = ? WHERE id = ?");
                if (!$stmt) {
                    throw new Exception("Prepare statement failed: " . $conn->error);
                }
                $stmt->bind_param("iisdsi", $pid, $qty, $pack_pref, $discount_pct, $discount_rsn, $item_id);
                if (!$stmt->execute()) {
                    throw new Exception("Execute failed: " . $stmt->error);
                }
                $stmt->close();
            }

            // Insert new order items
            $stmt = $conn->prepare("INSERT INTO order_items (order_id, product_id, quantity, packaging_preferences, discount_percentage, discount_reason) VALUES (?, ?, ?, ?, ?, ?)");
            if (!$stmt) {
                throw new Exception("Prepare statement failed: " . $conn->error);
            }

            for ($i = 0; $i < count($new_product_ids); $i++) {
                $new_pid = intval($new_product_ids[$i]);
                $new_qty = intval($new_quantities[$i]);
                $new_pack_pref = trim($new_packaging_preferences[$i]);
                $new_discount_pct = $new_discount_percentages[$i] !== '' ? floatval($new_discount_percentages[$i]) : 0.00;
                $new_discount_rsn = trim($new_discount_reasons[$i]);

                if (!empty($new_pid)) {
                    $stmt->bind_param("iiisds", $order_id, $new_pid, $new_qty, $new_pack_pref, $new_discount_pct, $new_discount_rsn);
                    if (!$stmt->execute()) {
                        throw new Exception("Execute failed: " . $stmt->error);
                    }
                }
            }
            $stmt->close();

            // Commit transaction
            $conn->commit();

            $success = "Order updated successfully!";

            // Refresh order data
            // Fetch updated order items
            $order_items_sql = "SELECT oi.*, p.name AS product_name, p.size, p.price 
                               FROM order_items oi 
                               JOIN products p ON oi.product_id = p.id 
                               WHERE oi.order_id = ?";
            $order_items_stmt = $conn->prepare($order_items_sql);
            $order_items_stmt->bind_param("i", $order_id);
            $order_items_stmt->execute();
            $order_items_result = $order_items_stmt->get_result();
            $order_items = [];
            while ($item = $order_items_result->fetch_assoc()) {
                $order_items[] = $item;
            }
            $order_items_stmt->close();
        } catch (Exception $e) {
            // Rollback transaction
            $conn->rollback();
            $error = "Error updating order: " . $e->getMessage();
        }
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Edit Order #<?= htmlspecialchars($order_id) ?> - Kaak Alia Management System</title>
    
    <!-- Google Fonts -->
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
    
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="../../public/bootstrap/css/bootstrap.min.css">
    
    <!-- Bootstrap Icons -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
    
    <!-- Embedded Custom Styles -->
    <style>
        :root {
            /* Primary Colors */
            --background-color: #FFFFFF; /* Crisp White */
            --light-grey: #F5F5F5;
            --medium-grey: #CCCCCC;
            --dark-grey: #333333;
            --charcoal: #374151; /* Updated to requested color */

            /* Accent Colors */
            --accent-blue: #4A90E2;
            --accent-green: #50C878;
            --accent-red: #FF6B6B;
            --accent-teal: #20B2AA;
            --accent-soft-blue: #A3D2CA;
            --accent-purple: #8A65FF;
            --accent-orange: #FFA500;

            /* Text Colors */
            --primary-text: var(--dark-grey);
            --secondary-text: #666666;

            /* UI Elements */
            --input-border: var(--medium-grey);
            --input-focus-border: var(--accent-teal);
            --box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
            --box-border-radius: 12px;
            --hover-shadow: rgba(0, 0, 0, 0.1);
            --production-hover-shadow: rgba(0, 0, 0, 0.2);

            /* Button Colors */
            --button-add-order: #6C63FF;
            --button-view-orders: #FFA500;
            --button-manage-products: #20B2AA;
            --button-manage-users: #4B0082;
            --button-generate-reports: #FF6B6B;

            /* Status Badge Colors */
            --badge-pending: #FFD166;
            --badge-in-progress: #6A4C93;
            --badge-completed: #4CAF50;
            --badge-delivered: #20B2AA;
        }

        /* Global Styles */
        body {
            font-family: 'Inter', sans-serif;
            background-color: var(--background-color);
            margin: 0;
            padding: 20px;
            box-sizing: border-box;
        }

        h1, h3, h4, h5, p {
            margin: 0;
        }

        /* Header Styles */
        .header {
            padding: 20px 30px;
            background-color: var(--charcoal);
            border-radius: 12px;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-bottom: 30px;
            box-shadow: var(--box-shadow);
        }

        .header h1 {
            color: var(--background-color);
            font-size: 28px;
            font-weight: 700;
        }

        /* Container Styles */
        .container-custom {
            max-width: 1000px;
            margin: auto;
            background-color: var(--background-color);
            padding: 40px;
            border: 1px solid var(--medium-grey);
            border-radius: var(--box-border-radius);
            box-shadow: var(--box-shadow);
        }

        /* Success and Error Alerts */
        .alert-custom {
            border-radius: var(--box-border-radius);
            padding: 20px 25px;
            margin-bottom: 30px;
            text-align: center;
            font-size: 18px;
            font-weight: 600;
        }

        .alert-success-custom {
            background-color: var(--accent-green);
            color: var(--background-color);
        }

        .alert-danger-custom {
            background-color: var(--accent-red);
            color: var(--background-color);
        }

        /* Form Styles */
        .form-label {
            font-weight: 600;
            color: var(--primary-text);
            font-size: 16px;
        }

        .form-control {
            background-color: #F9F9F9;
            border: 1px solid var(--input-border);
            border-radius: 8px;
            padding: 12px 16px;
            transition: border-color 0.3s, box-shadow 0.3s;
            font-size: 16px;
        }

        .form-control:focus {
            border-color: var(--input-focus-border);
            box-shadow: 0 0 5px rgba(32, 178, 170, 0.5);
            background-color: var(--background-color);
        }

        .btn-primary-custom {
            background-color: var(--button-add-order);
            border: none;
            color: var(--background-color);
            padding: 12px 24px;
            font-size: 16px;
            font-weight: 600;
            border-radius: 8px;
            transition: background-color 0.3s, transform 0.3s;
            cursor: pointer;
        }

        .btn-primary-custom:hover {
            background-color: #5750d3;
            transform: scale(1.05);
        }

        .btn-secondary-custom {
            background-color: var(--accent-soft-blue);
            border: none;
            color: var(--primary-text);
            padding: 12px 24px;
            font-size: 16px;
            font-weight: 600;
            border-radius: 8px;
            transition: background-color 0.3s, transform 0.3s;
            cursor: pointer;
            text-decoration: none;
            display: inline-block;
        }

        .btn-secondary-custom:hover {
            background-color: #8AB6D6;
            transform: scale(1.05);
        }

        .remove-product-button {
            background-color: var(--accent-red);
            color: var(--background-color);
            border: none;
            border-radius: 50%;
            width: 35px;
            height: 35px;
            cursor: pointer;
            transition: background-color 0.3s, transform 0.3s;
            font-size: 18px;
            font-weight: bold;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .remove-product-button:hover {
            background-color: #e63946;
            transform: scale(1.1);
        }

        /* Footer Styles */
        .footer {
            background-color: var(--charcoal);
            color: var(--background-color);
            padding: 20px;
            text-align: center;
            border-radius: 12px;
            font-size: 16px;
            line-height: 1.5;
            margin-top: 40px;
            box-shadow: var(--box-shadow);
        }

        /* Responsive Design Enhancements */
        @media (max-width: 768px) {
            .container-custom {
                padding: 30px;
            }

            .btn {
                width: 100%;
                margin-bottom: 10px;
            }

            .remove-product-button {
                width: 30px;
                height: 30px;
            }
        }

        @media (max-width: 480px) {
            .header {
                padding: 15px 20px;
            }

            .header h1 {
                font-size: 24px;
            }

            .form-label {
                font-size: 14px;
            }

            .form-control {
                padding: 10px 12px;
                font-size: 14px;
            }

            .btn-primary-custom, .btn-secondary-custom {
                font-size: 14px;
                padding: 10px 18px;
            }

            .footer {
                font-size: 14px;
            }
        }
    </style>

    <!-- Additional JavaScript for dynamic product addition -->
    <script>
        function addOrderItemRow() {
            const orderItemsContainer = document.getElementById('order-items-container');
            const itemCount = orderItemsContainer.children.length;

            const orderItemRow = document.createElement('div');
            orderItemRow.className = 'order-item-row border p-4 mb-4 shadow-sm';
            orderItemRow.style.borderRadius = '12px';
            orderItemRow.innerHTML = `
                <div class="row g-3">
                    <div class="col-md-4">
                        <label class="form-label" for="new_product_id_${itemCount}">Product <span class="text-danger">*</span></label>
                        <select name="new_product_id[]" id="new_product_id_${itemCount}" class="form-control" required>
                            <option value="">Select Product</option>
                            <?php
                            // Reset the products_result pointer
                            $products_result->data_seek(0);
                            while($product = $products_result->fetch_assoc()): ?>
                                <option value="<?= htmlspecialchars($product['id']) ?>">
                                    <?= htmlspecialchars($product['name'] . " - " . $product['size'] . " (" . number_format($product['price'], 2) . " KD)") ?>
                                </option>
                            <?php endwhile; ?>
                        </select>
                    </div>
                    <div class="col-md-2">
                        <label class="form-label" for="new_quantity_${itemCount}">Quantity <span class="text-danger">*</span></label>
                        <input type="number" name="new_quantity[]" id="new_quantity_${itemCount}" class="form-control" min="1" value="1" required>
                    </div>
                    <div class="col-md-3">
                        <label class="form-label" for="new_packaging_preferences_${itemCount}">Packaging Preferences</label>
                        <input type="text" name="new_packaging_preferences[]" id="new_packaging_preferences_${itemCount}" class="form-control" placeholder="e.g., Gift Wrap">
                    </div>
                    <div class="col-md-2">
                        <label class="form-label" for="new_discount_percentage_${itemCount}">Discount (%)</label>
                        <input type="number" name="new_discount_percentage[]" id="new_discount_percentage_${itemCount}" class="form-control" min="0" max="100" step="0.01" value="0.00">
                    </div>
                    <div class="col-md-1 d-flex align-items-end">
                        <button type="button" class="remove-product-button" onclick="removeOrderItemRow(this)" title="Remove Product">✕</button>
                    </div>
                </div>
                <div class="row mt-3">
                    <div class="col-md-12">
                        <label class="form-label" for="new_discount_reason_${itemCount}">Discount Reason</label>
                        <input type="text" name="new_discount_reason[]" id="new_discount_reason_${itemCount}" class="form-control" placeholder="e.g., Seasonal Sale">
                    </div>
                </div>
            `;
            orderItemsContainer.appendChild(orderItemRow);
        }

        function removeOrderItemRow(button) {
            const orderItemRow = button.closest('.order-item-row');
            orderItemRow.remove();
        }

        function removeExistingOrderItemRow(button) {
            const orderItemRow = button.closest('.order-item-row');
            // Optionally, you can mark the item for deletion or remove it directly
            // For simplicity, we'll remove it directly
            orderItemRow.remove();
            // To handle deletion in backend, you'd need to track removed IDs and delete them from database
            // This requires additional implementation
        }

        // Add initial new order item row on page load
        document.addEventListener('DOMContentLoaded', function() {
            // Uncomment the line below if you want to have an initial new product row
            // addOrderItemRow();
        });
    </script>
</head>
<body>

    <!-- Header -->
    <div class="header">
        <h1>Kaak Alia Management System</h1>
    </div>

    <!-- Container -->
    <div class="container-custom">
        <h3 class="mb-5">Edit Order #<?= htmlspecialchars($order_id) ?></h3>
        
        <!-- Display Success or Error Messages -->
        <?php if (!empty($success)): ?>
            <div class="alert alert-custom alert-success-custom"><?= htmlspecialchars($success) ?></div>
        <?php endif; ?>

        <?php if (!empty($error)): ?>
            <div class="alert alert-custom alert-danger-custom"><?= htmlspecialchars($error) ?></div>
        <?php endif; ?>

        <!-- Edit Order Form -->
        <form method="POST" action="">
            <!-- Customer Details -->
            <div class="mb-5">
                <h5 class="mb-4">Customer Details</h5>
                <div class="row g-4">
                    <div class="col-md-6">
                        <label class="form-label" for="customer_name">Customer Name <span class="text-danger">*</span></label>
                        <input type="text" id="customer_name" name="customer_name" class="form-control" 
                               value="<?= htmlspecialchars(isset($_POST['customer_name']) ? $_POST['customer_name'] : $order['customer_name']) ?>" 
                               required>
                    </div>
                    <div class="col-md-6">
                        <label class="form-label" for="contact">Contact</label>
                        <input type="text" id="contact" name="contact" class="form-control" 
                               value="<?= htmlspecialchars(isset($_POST['contact']) ? $_POST['contact'] : $order['customer_contact']) ?>">
                    </div>
                </div>
                <div class="mt-4">
                    <label class="form-label" for="delivery_address">Delivery Address</label>
                    <textarea id="delivery_address" name="delivery_address" class="form-control" rows="3"><?= htmlspecialchars(isset($_POST['delivery_address']) ? $_POST['delivery_address'] : $order['delivery_address']) ?></textarea>
                </div>
            </div>
            <hr>
            <!-- Order Details -->
            <div class="mb-5">
                <h5 class="mb-4">Order Details</h5>
                <div class="row g-4">
                    <div class="col-md-4">
                        <label class="form-label" for="status">Status <span class="text-danger">*</span></label>
                        <select name="status" id="status" class="form-control" required>
                            <option value="">Select Status</option>
                            <option value="Pending" <?= (isset($_POST['status']) ? $_POST['status'] : $order['status']) == 'Pending' ? 'selected' : '' ?>>Pending</option>
                            <option value="In Progress" <?= (isset($_POST['status']) ? $_POST['status'] : $order['status']) == 'In Progress' ? 'selected' : '' ?>>In Progress</option>
                            <option value="Completed" <?= (isset($_POST['status']) ? $_POST['status'] : $order['status']) == 'Completed' ? 'selected' : '' ?>>Completed</option>
                            <option value="Delivered" <?= (isset($_POST['status']) ? $_POST['status'] : $order['status']) == 'Delivered' ? 'selected' : '' ?>>Delivered</option>
                        </select>
                    </div>
                    <div class="col-md-4">
                        <label class="form-label" for="priority">Priority <span class="text-danger">*</span></label>
                        <select name="priority" id="priority" class="form-control" required>
                            <option value="">Select Priority</option>
                            <option value="Normal" <?= (isset($_POST['priority']) ? $_POST['priority'] : $order['priority']) == 'Normal' ? 'selected' : '' ?>>Normal</option>
                            <option value="Important" <?= (isset($_POST['priority']) ? $_POST['priority'] : $order['priority']) == 'Important' ? 'selected' : '' ?>>Important</option>
                            <option value="Quick" <?= (isset($_POST['priority']) ? $_POST['priority'] : $order['priority']) == 'Quick' ? 'selected' : '' ?>>Quick</option>
                        </select>
                    </div>
                    <div class="col-md-4">
                        <label class="form-label" for="delivery_datetime">Delivery Date and Time</label>
                        <input type="datetime-local" id="delivery_datetime" name="delivery_datetime" class="form-control" 
                               value="<?= isset($_POST['delivery_datetime']) ? htmlspecialchars($_POST['delivery_datetime']) : ($order['delivery_datetime'] ? date('Y-m-d\TH:i', strtotime($order['delivery_datetime'])) : '') ?>">
                    </div>
                </div>
                <div class="row g-4 mt-3">
                    <div class="col-md-4">
                        <label class="form-label" for="delivery_date">Delivery Date</label>
                        <input type="date" id="delivery_date" name="delivery_date" class="form-control" 
                               value="<?= isset($_POST['delivery_date']) ? htmlspecialchars($_POST['delivery_date']) : ($order['delivery_date'] ? date('Y-m-d', strtotime($order['delivery_date'])) : '') ?>">
                    </div>
                </div>
            </div>
            <hr>
            <!-- Existing Order Items -->
            <div class="mb-5">
                <h5 class="mb-4">Existing Order Items</h5>
                <div id="existing-order-items-container">
                    <?php foreach ($order_items as $item): ?>
                        <div class="order-item-row border p-4 mb-4 shadow-sm" style="border-radius: 12px;">
                            <input type="hidden" name="existing_item_id[]" value="<?= htmlspecialchars($item['id']) ?>">
                            <div class="row g-3">
                                <div class="col-md-4">
                                    <label class="form-label" for="product_id_<?= htmlspecialchars($item['id']) ?>">Product <span class="text-danger">*</span></label>
                                    <select name="product_id[]" id="product_id_<?= htmlspecialchars($item['id']) ?>" class="form-control" required>
                                        <option value="">Select Product</option>
                                        <?php
                                        // Reset the products_result pointer
                                        $products_result->data_seek(0);
                                        while($product = $products_result->fetch_assoc()): ?>
                                            <option value="<?= htmlspecialchars($product['id']) ?>" <?= ($product['id'] == $item['product_id']) ? 'selected' : '' ?>>
                                                <?= htmlspecialchars($product['name'] . " - " . $product['size'] . " (" . number_format($product['price'], 2) . " KD)") ?>
                                            </option>
                                        <?php endwhile; ?>
                                    </select>
                                </div>
                                <div class="col-md-2">
                                    <label class="form-label" for="quantity_<?= htmlspecialchars($item['id']) ?>">Quantity <span class="text-danger">*</span></label>
                                    <input type="number" name="quantity[]" id="quantity_<?= htmlspecialchars($item['id']) ?>" class="form-control" min="1" value="<?= htmlspecialchars($item['quantity']) ?>" required>
                                </div>
                                <div class="col-md-3">
                                    <label class="form-label" for="packaging_preferences_<?= htmlspecialchars($item['id']) ?>">Packaging Preferences</label>
                                    <input type="text" name="packaging_preferences[]" id="packaging_preferences_<?= htmlspecialchars($item['id']) ?>" class="form-control" placeholder="e.g., Gift Wrap" value="<?= htmlspecialchars($item['packaging_preferences']) ?>">
                                </div>
                                <div class="col-md-2">
                                    <label class="form-label" for="discount_percentage_<?= htmlspecialchars($item['id']) ?>">Discount (%)</label>
                                    <input type="number" name="discount_percentage[]" id="discount_percentage_<?= htmlspecialchars($item['id']) ?>" class="form-control" min="0" max="100" step="0.01" value="<?= htmlspecialchars($item['discount_percentage']) ?>">
                                </div>
                                <div class="col-md-1 d-flex align-items-end">
                                    <button type="button" class="remove-product-button" onclick="removeExistingOrderItemRow(this)" title="Remove Product">✕</button>
                                </div>
                            </div>
                            <div class="row mt-3">
                                <div class="col-md-12">
                                    <label class="form-label" for="discount_reason_<?= htmlspecialchars($item['id']) ?>">Discount Reason</label>
                                    <input type="text" name="discount_reason[]" id="discount_reason_<?= htmlspecialchars($item['id']) ?>" class="form-control" placeholder="e.g., Seasonal Sale" value="<?= htmlspecialchars($item['discount_reason']) ?>">
                                </div>
                            </div>
                        </div>
                    <?php endforeach; ?>
                </div>
            </div>
            <hr>
            <!-- Add New Order Items -->
            <div class="mb-5">
                <h5 class="mb-4">Add New Order Items</h5>
                <div id="order-items-container">
                    <!-- New Order Item Rows will be added here -->
                </div>
                <button type="button" class="btn btn-secondary-custom mt-3" onclick="addOrderItemRow()">
                    <i class="bi bi-plus-circle-fill"></i> Add Another Product
                </button>
            </div>
            <!-- Submit Buttons -->
            <div class="d-flex justify-content-between mt-4">
                <button type="submit" class="btn-primary-custom">Update Order</button>
                <a href="view_orders.php" class="btn-secondary-custom">Cancel</a>
            </div>
        </form>
    </div>

    <!-- Footer -->
    <div class="footer">
        &copy; 2024 Kaak Alia Bakery. All rights reserved.
    </div>

    <!-- Bootstrap JS Bundle -->
    <script src="../../public/bootstrap/js/bootstrap.bundle.min.js"></script>
</body>
</html>) and make it Design a modern, user-friendly interface that emphasizes readability, accessibility, and a polished aesthetic. The color scheme uses vibrant, consistent accent colors with shades of purple, yellow, blue, green, and red, creating a lively and welcoming feel without compromising professionalism. The layout is clean and spacious, with ample padding and well-defined sections that give each element room to breathe.

Typography & Layout:

Use a combination of Poppins and Roboto fonts for a contemporary, clean look. Titles and headers should be bold and slightly larger, while labels and descriptive text are set in regular weights for optimal readability.
Employ a grid-based layout with ample whitespace to create an airy, open feel. Sections should be visually separated using soft shadows and light borders, providing depth without clutter.
Cards & Stat Boxes:

Use rounded rectangles for all cards and stat boxes, incorporating a light shadow to create depth. Each card should contain an icon on one side with a corresponding label and metric for quick readability.
On hover, cards subtly scale up and increase in background gradient intensity, adding a layer of interactivity and dynamism.
Buttons & Interactive Elements:

Buttons are bold and vibrant, maintaining consistency with the color scheme. Each button has a pill-shaped design with an icon on the left side to enhance visual guidance.
Apply hover effects, such as slight color intensification and subtle scaling, to make buttons feel responsive and inviting. Maintain equal button sizes and alignment to ensure visual harmony.
Tables & Data Sections:

Design tables with alternate row coloring (e.g., white and light grey) for improved readability. Each cell should have ample padding, and tables should have light borders to define boundaries.
Use rounded, colored badges for status indicators within tables (e.g., pending or completed statuses), with subtle shadows to modernize the badge look.
Footer & Minor Elements:

Footer text is minimalistic and centered, with a small, light-grey font that remains visible but unobtrusive.
Hover & Transition Effects:

Throughout the interface, incorporate smooth transition effects on hover, such as slight scaling and color changes, to enhance interactivity and provide a modern touch.
Overall, the design is cohesive and accessible, balancing vibrant color use with a clean, structured layout. The goal is to create a welcoming, professional interface where users can easily navigate and interact with content across all pages