import type { Order, OrderStatus } from '../data/orders' import { apiRequest } from './api' export type OrderListResponse = { items: Order[] total: number page: number pageSize: number } export type ListOrdersParams = { q?: string status?: OrderStatus | '' customerId?: string page?: number pageSize?: number } export type CreateOrderItemPayload = { productId: string quantity: number optionIds?: string[] } export type CreateOrderPayload = { customerId: string deliveryType: 'pickup' | 'shipping' branchId?: string shippingAddressId?: string note?: string items: CreateOrderItemPayload[] } function buildQuery(params: ListOrdersParams) { const search = new URLSearchParams() if (params.q?.trim()) search.set('q', params.q.trim()) if (params.status) search.set('status', params.status) if (params.customerId) search.set('customerId', params.customerId) if (params.page) search.set('page', String(params.page)) if (params.pageSize) search.set('pageSize', String(params.pageSize)) const qs = search.toString() return qs ? `?${qs}` : '' } export function listOrders(params: ListOrdersParams = {}) { return apiRequest(`/orders${buildQuery(params)}`) } export function listMyOrders(params: ListOrdersParams = {}) { return apiRequest(`/orders/mine${buildQuery(params)}`) } export function getOrder(id: string) { return apiRequest(`/orders/${id}`) } export function getMyOrder(id: string) { return apiRequest(`/orders/mine/${id}`) } export function createOrder(payload: CreateOrderPayload) { return apiRequest('/orders', { method: 'POST', body: payload, }) } export function updateOrderStatus(id: string, status: OrderStatus) { return apiRequest(`/orders/${id}/status`, { method: 'PATCH', body: { status }, }) }