Update May 12 by Elvis

This commit is contained in:
belviskhoremk
2026-05-12 00:28:37 +00:00
parent b32a70cd0e
commit c4450c993b
37 changed files with 3749 additions and 600 deletions

61
lib/api/orders.ts Normal file
View File

@@ -0,0 +1,61 @@
import { api, PaginatedResult } from "@/lib/api";
export interface OrderItem {
product_id: string;
quantity: number;
}
export interface CreateOrderPayload {
items: OrderItem[];
notes?: string;
shipping_address?: string;
}
export interface OrderResult {
order_id: string;
amount: number;
}
export interface MyOrderApi {
id: string;
status: string;
total_amount: number;
shipping_address: string | null;
notes: string | null;
created_at: string;
updated_at: string;
}
export interface AdminOrderApi {
id: string;
user_id: string | null;
status: string;
total_amount: number;
shipping_address: string | null;
notes: string | null;
created_at: string;
updated_at: string;
client_name: string | null;
client_email: string | null;
client_phone: string | null;
}
export async function createOrder(payload: CreateOrderPayload): Promise<OrderResult> {
return api.post<OrderResult>("/orders", payload);
}
export async function listMyOrders(): Promise<PaginatedResult<MyOrderApi>> {
return api.get<PaginatedResult<MyOrderApi>>("/orders?per_page=50");
}
// ── Admin ─────────────────────────────────────────────────────────────────────
export async function adminListOrders(status?: string): Promise<PaginatedResult<AdminOrderApi>> {
const qs = status ? `?status=${status}&per_page=100` : "?per_page=100";
return api.get<PaginatedResult<AdminOrderApi>>(`/admin/orders${qs}`);
}
export async function adminUpdateOrderStatus(id: string, status: string): Promise<{ id: string; status: string }> {
return api.patch<{ id: string; status: string }>(`/admin/orders/${id}/status`, { status });
}