<?php
session_start();
require_once 'includes/db.php';

// যদি সেশনে কার্ট না থাকে, তবে একটি ফাঁকা অ্যারে তৈরি করা
if (!isset($_SESSION['cart'])) {
    $_SESSION['cart'] = [];
}

$action = $_POST['action'] ?? ($_GET['action'] ?? '');

// ১. কার্টে প্রোডাক্ট যোগ করা (Add to Cart)
if ($action === 'add_to_cart') {
    $product_id = intval($_POST['product_id']);
    $quantity = max(1, intval($_POST['quantity']));
    $options = $_POST['options'] ??[];
    
    // ডাটাবেস থেকে প্রোডাক্টের নাম, দাম এবং ছবি আনা
    $stmt = $pdo->prepare("SELECT name, base_price, image FROM products WHERE id = ? AND status = 1");
    $stmt->execute([$product_id]);
    $product = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($product) {
        // কাস্টমারের ডিজাইন ফাইল আপলোড লজিক
        $uploaded_file = '';
        if (isset($_FILES['design_file']) && $_FILES['design_file']['error'] === UPLOAD_ERR_OK) {
            // ফাইল সেভ করার ফোল্ডার তৈরি করা (যদি না থাকে)
            $upload_dir = 'uploads/designs/';
            if (!is_dir($upload_dir)) {
                mkdir($upload_dir, 0777, true);
            }
            
            // ফাইলের নাম ইউনিক করার জন্য time() ব্যবহার করা হয়েছে
            $file_name = time() . '_' . preg_replace("/[^a-zA-Z0-9.-]/", "_", basename($_FILES["design_file"]["name"]));
            $target_file = $upload_dir . $file_name;
            
            if (move_uploaded_file($_FILES["design_file"]["tmp_name"], $target_file)) {
                $uploaded_file = $file_name;
            }
        }

        // কার্টে সেভ করার জন্য একটি ইউনিক ID তৈরি করা (যাতে একই প্রোডাক্ট ভিন্ন অপশন দিয়ে আলাদাভাবে এড করা যায়)
        $cart_item_id = md5($product_id . json_encode($options));

        // কার্ট আইটেম অ্যারে তৈরি
        $cart_item = [
            'product_id' => $product_id,
            'name' => $product['name'],
            'price' => $product['base_price'],
            'quantity' => $quantity,
            'image' => $product['image'],
            'options' => $options,
            'design_file' => $uploaded_file
        ];

        // যদি এই সেম অপশনের প্রোডাক্ট আগে থেকেই কার্টে থাকে, তবে শুধু পরিমাণ (Quantity) বাড়বে
        if (isset($_SESSION['cart'][$cart_item_id])) {
            $_SESSION['cart'][$cart_item_id]['quantity'] += $quantity;
            // যদি নতুন ফাইল আপলোড করে, তবে আগের ফাইল রিপ্লেস হবে
            if ($uploaded_file) {
                $_SESSION['cart'][$cart_item_id]['design_file'] = $uploaded_file;
            }
        } else {
            // নতুন প্রোডাক্ট হলে কার্টে যুক্ত হবে
            $_SESSION['cart'][$cart_item_id] = $cart_item;
        }

        // সফলভাবে এড হলে কার্ট পেজে চলে যাবে
        header('Location: cart.php');
        exit;
    } else {
        // প্রোডাক্ট না পেলে আবার আগের পেজে পাঠাবে
        header('Location: index.php');
        exit;
    }
}

// ২. কার্ট থেকে প্রোডাক্ট মুছে ফেলা (Remove from Cart)
if ($action === 'remove') {
    $cart_id = $_GET['id'] ?? '';
    if (isset($_SESSION['cart'][$cart_id])) {
        // যদি আপলোড করা ফাইল থাকে, তবে সেটা সার্ভার থেকে মুছে ফেলা ভালো
        $file_to_delete = $_SESSION['cart'][$cart_id]['design_file'];
        if ($file_to_delete && file_exists('uploads/designs/' . $file_to_delete)) {
            unlink('uploads/designs/' . $file_to_delete);
        }
        
        unset($_SESSION['cart'][$cart_id]);
    }
    header('Location: cart.php');
    exit;
}

// ৩. কার্টের পরিমাণ আপডেট করা (Update Quantity)
if ($action === 'update_qty') {
    $cart_id = $_POST['cart_id'] ?? '';
    $qty = max(1, intval($_POST['quantity'] ?? 1));
    
    if (isset($_SESSION['cart'][$cart_id])) {
        $_SESSION['cart'][$cart_id]['quantity'] = $qty;
    }
    header('Location: cart.php');
    exit;
}

// কোনো অ্যাকশন না মিললে কার্টে পাঠিয়ে দিবে
header('Location: cart.php');
exit;
?>