"use client"; import { clientAuthFetch } from "@/app/utils/clientAuthFetch"; import { NEXT_PUBLIC_API_URL } from "@/config/api"; export interface ReportOption { label: string; value: string; } export interface TruckRoutingSummaryPrecheck { unpickedOrderCount: number; hasUnpickedOrders: boolean; } export async function fetchTruckRoutingStoreOptions(): Promise { const response = await clientAuthFetch( `${NEXT_PUBLIC_API_URL}/truck-routing-summary/store-options`, { method: "GET", headers: { "Content-Type": "application/json" }, } ); if (!response.ok) { throw new Error(`Failed to fetch store options: ${response.status}`); } const data = await response.json(); if (!Array.isArray(data)) return []; return data.map((item: any) => ({ label: item?.label ?? item?.value ?? "", value: item?.value ?? "", })); } export async function fetchTruckRoutingLaneOptions(storeId?: string): Promise { const qs = storeId ? `?storeId=${encodeURIComponent(storeId)}` : ""; const response = await clientAuthFetch( `${NEXT_PUBLIC_API_URL}/truck-routing-summary/lane-options${qs}`, { method: "GET", headers: { "Content-Type": "application/json" }, } ); if (!response.ok) { throw new Error(`Failed to fetch lane options: ${response.status}`); } const data = await response.json(); if (!Array.isArray(data)) return []; return data.map((item: any) => ({ label: item?.label ?? item?.value ?? "", value: item?.value ?? "", })); } export async function fetchTruckRoutingSummaryPrecheck(params: { storeId: string; truckLanceCode: string; date: string; }): Promise { const qs = new URLSearchParams({ storeId: params.storeId, truckLanceCode: params.truckLanceCode, date: params.date, }).toString(); const response = await clientAuthFetch( `${NEXT_PUBLIC_API_URL}/truck-routing-summary/precheck?${qs}`, { method: "GET", headers: { "Content-Type": "application/json" }, } ); if (!response.ok) { throw new Error(`Failed to precheck routing summary: ${response.status}`); } const data = await response.json(); return { unpickedOrderCount: Number(data?.unpickedOrderCount ?? 0), hasUnpickedOrders: Boolean(data?.hasUnpickedOrders), }; }