<?php
require_once __DIR__ . '/../core/init.php';
header('Content-Type: application/json');

$action = $_REQUEST['action'] ?? '';
$response = ['status' => 'error', 'message' => 'Hành động không hợp lệ.'];

// ACTION: LẤY CHI TIẾT SẢN PHẨM (ĐÃ CẬP NHẬT)
if ($action == 'get_product_details') {
    $product_id = intval($_GET['product_id'] ?? 0);
    if ($product_id > 0) {
        // Lấy tất cả các cột cần thiết cho form sửa
        $stmt = $conn->prepare("SELECT * FROM cms_products WHERE ID = ?");
        $stmt->bind_param("i", $product_id);
        $stmt->execute();
        $data = $stmt->get_result()->fetch_assoc();
        $stmt->close();
        
        if ($data) {
            $response = ['status' => 'success', 'data' => $data];
        } else {
            $response['message'] = 'Không tìm thấy sản phẩm.';
        }
    }
    echo json_encode($response);
    exit;
}

// ACTION: CẬP NHẬT SẢN PHẨM (ĐÃ CẬP NHẬT)
if ($action == 'edit_product') {
    // Lấy tất cả dữ liệu từ form
    $prd_id             = intval($_POST['prd_id'] ?? 0);
    $prd_name           = trim($_POST['prd_name'] ?? '');
    $prd_code           = trim($_POST['prd_code'] ?? '');
    $prd_origin_price   = intval($_POST['prd_origin_price'] ?? 0);
    $prd_sell_price     = intval($_POST['prd_sell_price'] ?? 0);
    $prd_sell_price2    = intval($_POST['prd_sell_price2'] ?? 0);
    $prd_group_id       = intval($_POST['prd_group_id'] ?? 0);
    $prd_manufacture_id = intval($_POST['prd_manufacture_id'] ?? 0);
    $prd_unit_id        = intval($_POST['prd_unit_id'] ?? 0);
    $prd_tenquycach     = trim($_POST['prd_tenquycach'] ?? '');
    $prd_quycach        = intval($_POST['prd_quycach'] ?? 0);

    if (empty($prd_id) || empty($prd_name)) {
        $response['message'] = 'Dữ liệu không hợp lệ (thiếu ID hoặc Tên sản phẩm).';
    } else {
        $sql = "UPDATE cms_products SET 
                    prd_name = ?, prd_code = ?, prd_origin_price = ?, prd_sell_price = ?, prd_sell_price2 = ?, 
                    prd_group_id = ?, prd_manufacture_id = ?, prd_unit_id = ?, 
                    prd_tenquycach = ?, prd_quycach = ?, updated = NOW()
                WHERE ID = ?";
        
        $stmt = $conn->prepare($sql);
        // Kiểu dữ liệu: s(string), s, i(integer), i, i, i, i, i, s, i, i
        $stmt->bind_param("ssiiiiiisii", 
            $prd_name, $prd_code, $prd_origin_price, $prd_sell_price, $prd_sell_price2,
            $prd_group_id, $prd_manufacture_id, $prd_unit_id,
            $prd_tenquycach, $prd_quycach,
            $prd_id
        );
        
        if ($stmt->execute()) {
            $response = ['status' => 'success', 'message' => 'Cập nhật sản phẩm thành công!'];
        } else {
            $response['message'] = 'Lỗi khi cập nhật: ' . $stmt->error;
        }
        $stmt->close();
    }
    echo json_encode($response);
    exit;
}

// ACTION: XÓA SẢN PHẨM (Giữ nguyên)
if ($action == 'delete_product') {
    // ... (Không thay đổi)
    $product_id = intval($_POST['product_id'] ?? 0);
    if ($product_id > 0) {
        $stmt = $conn->prepare("UPDATE cms_products SET deleted = 1, prd_status = 0 WHERE ID = ?");
        $stmt->bind_param("i", $product_id);
        if ($stmt->execute()) {
            $response = ['status' => 'success', 'message' => 'Xóa sản phẩm thành công!'];
        } else {
            $response['message'] = 'Lỗi khi xóa sản phẩm.';
        }
        $stmt->close();
    } else {
        $response['message'] = 'Thiếu ID sản phẩm.';
    }
    echo json_encode($response);
    exit;
}

// LẤY DANH SÁCH CHO DATATABLES (Giữ nguyên)
$draw = intval($_POST['draw'] ?? 0);
$start = intval($_POST['start'] ?? 0);
$length = intval($_POST['length'] ?? 10);
$baseQuery = "FROM cms_products p LEFT JOIN cms_products_group g ON p.prd_group_id = g.id LEFT JOIN cms_products_manufacture m ON p.prd_manufacture_id = m.id";
$whereClauses = ["p.deleted = 0"];
$params = [];
$types = '';
if (!empty($_POST['search_term'])) {
    $whereClauses[] = "(p.prd_name LIKE ? OR p.prd_code LIKE ?)";
    $searchTermWildcard = "%" . $_POST['search_term'] . "%";
    array_push($params, $searchTermWildcard, $searchTermWildcard);
    $types .= 'ss';
}
if (isset($_POST['prd_status']) && $_POST['prd_status'] !== '') { $whereClauses[] = "p.prd_status = ?"; $params[] = $_POST['prd_status']; $types .= 'i'; }
if (!empty($_POST['category_id'])) { $whereClauses[] = "p.prd_group_id = ?"; $params[] = $_POST['category_id']; $types .= 'i'; }
if (!empty($_POST['manufacturer_id'])) { $whereClauses[] = "p.prd_manufacture_id = ?"; $params[] = $_POST['manufacturer_id']; $types .= 'i'; }
$whereSql = " WHERE " . implode(" AND ", $whereClauses);
$queryFiltered = "SELECT COUNT(p.ID) as total " . $baseQuery . $whereSql;
$stmtFiltered = $conn->prepare($queryFiltered);
if (!empty($types)) { $stmtFiltered->bind_param($types, ...$params); }
$stmtFiltered->execute();
$totalFiltered = $stmtFiltered->get_result()->fetch_assoc()['total'];
$stmtFiltered->close();
$totalRecordsResult = $conn->query("SELECT COUNT(ID) FROM cms_products WHERE deleted = 0");
$totalRecords = $totalRecordsResult ? $totalRecordsResult->fetch_row()[0] : 0;
$dataQuery = "SELECT p.ID as id, p.prd_name, p.prd_code, p.prd_image_url, p.prd_sls AS prd_inventory, p.prd_sell_price, p.prd_sell_price2, g.prd_group_name, m.prd_manuf_name " . $baseQuery . $whereSql . " ORDER BY p.prd_name ASC LIMIT ?, ?";
$types .= 'ii';
$params[] = $start;
$params[] = $length;
$stmt = $conn->prepare($dataQuery);
$stmt->bind_param($types, ...$params);
$stmt->execute();
$result = $stmt->get_result();
$data = $result ? $result->fetch_all(MYSQLI_ASSOC) : [];
$stmt->close();
echo json_encode([
    "draw" => $draw,
    "recordsTotal" => intval($totalRecords),
    "recordsFiltered" => intval($totalFiltered),
    "data" => $data
]);
?>