import { z } from "zod";
import { type ToolMetadata, type InferSchema } from "xmcp";
const BASE_URL = "https://backend.codingthailand.com";
export const schema = {
paymentType: z.enum(["cash", "card", "transfer"]).describe("ประเภทการชำระเงิน"),
notes: z.string().optional().describe("หมายเหตุคำสั่งซื้อ"),
items: z.array(z.object({
productId: z.number().describe("รหัสสินค้า"),
quantity: z.number().describe("จำนวน"),
})).describe("รายการสินค้าที่ซื้อ"),
};
export const metadata: ToolMetadata = {
name: "create_order",
description: "สร้างคำสั่งซื้อใหม่",
annotations: {
title: "Create Order",
readOnlyHint: false, // ถ้า เพิ่มหรือแก้ไข data ให้ปรับเป็น false
destructiveHint: false, // ถ้าเป็นการลบ data ให้ปรับเป็น true
idempotentHint: false,
},
};
export default async function createOrder({
paymentType,
notes,
items,
}: InferSchema<typeof schema>) {
try {
const res = await fetch(`${BASE_URL}/v2/orders`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ paymentType, notes, items }),
});
if (!res.ok) {
const error = await res.json();
return `ไม่สามารถสร้างคำสั่งซื้อได้: ${error.message || res.statusText}`;
}
const data = await res.json();
return {
structuredContent: data,
content: [
{
type: "text" as const,
text: `สร้างคำสั่งซื้อสำเร็จ\nรหัส: ${data.id}\nยอดรวม: ${data.totalCost} บาท\nสถานะ: ${data.paymentStatus}`,
},
],
};
} catch (error) {
return `เกิดข้อผิดพลาด: ${error instanceof Error ? error.message : "Unknown error"}`;
}
}