"""
Tool giả lập chức năng thêm sản phẩm vào giỏ hàng.
"""

import json
import logging

from langchain_core.tools import tool

logger = logging.getLogger(__name__)

@tool
async def add_to_cart(internal_ref_code: str, size: str, color: str, quantity: int = 1) -> str:
    """
    Sử dụng tool này để thêm sản phẩm vào giỏ hàng khi người dùng yêu cầu "thêm vào giỏ hàng", "mua sản phẩm này".
    Yêu cầu phải có đủ:
    - internal_ref_code: mã sản phẩm (SKU)
    - size: kích cỡ (S, M, L, XL...)
    - color: màu sắc
    - quantity: số lượng (mặc định là 1)
    """
    try:
        print(f"\n[TOOL] --- 🛒 Thêm vào giỏ hàng: SP {internal_ref_code} | Size {size} | Color {color} | SL {quantity} ---")
        logger.info(f"🛒 Add to cart: {internal_ref_code}, color: {color}, size: {size}, qty: {quantity}")

        # Fake DB return record
        cart_record = {
            "internal_ref_code": internal_ref_code,
            "size": size,
            "color": color,
            "quantity": quantity,
            "status": "added_to_cart_successfully"
        }

        return json.dumps(
            {
                "status": "success",
                "message": (
                    f"Đã thêm thành công sản phẩm mã {internal_ref_code} (Màu {color}, Size {size}, Số lượng {quantity}) vào giỏ hàng của anh/chị!"
                ),
                "data": cart_record,
            },
            ensure_ascii=False,
        )

    except Exception as e:
        logger.error(f"❌ Lỗi khi thêm vào giỏ hàng: {e}")
        return json.dumps(
            {
                "status": "error",
                "message": f"Xin lỗi, có lỗi xảy ra khi thêm vào giỏ hàng. Lỗi: {e!s}",
            },
            ensure_ascii=False,
        )
