import { api } from '@/lib/api' import type { PaginatedResponse, SaleResponse, OrderResponse, OrderStatus, PaymentResponse, SaleStatus, PaymentStatus, PaymentMethod, } from '@/types/api' import type { PageParams } from './master' // ─── Sales ──────────────────────────────────────────────────────────────────── export interface SaleItemBody { itemId: string quantity: number unitPrice: number } export interface SaleBody { storeId: string saleDate: string rideId?: string | null fulfillImmediately?: boolean items: SaleItemBody[] // TEMPORARY: required while auth doesn't resolve a logged-in user server-side — see testbug.md #28. createdByUserId: string } export interface SaleListParams extends PageParams { storeId?: string status?: SaleStatus paymentStatus?: PaymentStatus rideId?: string from?: string to?: string } export const sales = { list: (params?: SaleListParams) => api.get>('/sales', { params }).then(r => r.data), get: (id: string) => api.get(`/sales/${id}`).then(r => r.data), create: (body: SaleBody) => api.post('/sales', body).then(r => r.data), cancel: (id: string) => api.patch(`/sales/${id}/cancel`).then(r => r.data), } // ─── Orders ─────────────────────────────────────────────────────────────────── // GET /orders takes no query params and returns a plain array — no server-side // filtering/pagination exists on the backend, unlike Sales/Payments. export const orders = { list: () => api.get('/orders').then(r => r.data), get: (id: string) => api.get(`/orders/${id}`).then(r => r.data), update: (id: string, status: OrderStatus) => api.put(`/orders/${id}`, { status }).then(r => r.data), delete: (id: string) => api.delete(`/orders/${id}`), } // ─── Payments ───────────────────────────────────────────────────────────────── export interface PaymentBody { saleId: string amount: number method: PaymentMethod // TEMPORARY: required while auth doesn't resolve a logged-in user server-side — see testbug.md #28. collectedByUserId: string } export interface PaymentListParams extends PageParams { storeId?: string saleId?: string method?: PaymentMethod from?: string to?: string } export const payments = { list: (params?: PaymentListParams) => api.get>('/payments', { params }).then(r => r.data), get: (id: string) => api.get(`/payments/${id}`).then(r => r.data), create: (body: PaymentBody) => api.post('/payments', body).then(r => r.data), }