import { api } from '@/lib/api' import type { PaginatedResponse, RideResponse, LoadingSheetResponse, DeliveryTaskResponse, RideStatus, CancelRequestType, LoadingSheetStatus, } from '@/types/api' import type { PageParams } from './master' // ─── Rides ──────────────────────────────────────────────────────────────────── export interface RideBody { vehicleId: string driverProfileId: string meterstart: number } export interface RideListParams extends PageParams { status?: RideStatus driverProfileId?: string vehicleId?: string } export interface CancelRideBody { typeCode: CancelRequestType reason: string } export const rides = { list: (params?: RideListParams) => api.get>('/rides', { params }).then(r => r.data), get: (id: string) => api.get(`/rides/${id}`).then(r => r.data), create: (body: RideBody) => api.post('/rides', body).then(r => r.data), assignDriver: (id: string, driverProfileId: string) => api.put(`/rides/${id}/driver`, { driverProfileId }).then(r => r.data), close: (id: string, meterend: number) => api.post(`/rides/${id}/close`, { meterend }).then(r => r.data), cancel: (id: string, body: CancelRideBody) => api.post(`/rides/${id}/cancel`, body).then(r => r.data), } // ─── Loading Sheets ─────────────────────────────────────────────────────────── export interface LoadingSheetCreateBody { fK_RideId: string } export interface LoadingSheetItemInput { fK_ItemId: string fK_WarehouseId: string quantity: number fK_ShopPOItemId?: string | null } export interface LoadingSheetListParams extends PageParams { rideId?: string status?: LoadingSheetStatus routeId?: string regionId?: string } export const loadingSheets = { list: (params?: LoadingSheetListParams) => api.get>('/loading-sheets', { params }).then(r => r.data), get: (id: string) => api.get(`/loading-sheets/${id}`).then(r => r.data), create: (body: LoadingSheetCreateBody) => api.post('/loading-sheets', body).then(r => r.data), updateItems: (id: string, items: LoadingSheetItemInput[]) => api.put(`/loading-sheets/${id}/items`, { items }).then(r => r.data), confirm: (id: string) => api.post(`/loading-sheets/${id}/confirm`).then(r => r.data), } // ─── Delivery Tasks ─────────────────────────────────────────────────────────── export interface DeliveryTaskItemQuantity { itemId: string quantityFulfilled: number } export const deliveryTasks = { generate: (rideId: string) => api.post(`/rides/${rideId}/tasks/generate`).then(r => r.data), listByRide: (rideId: string) => api.get(`/rides/${rideId}/tasks`).then(r => r.data), get: (id: string) => api.get(`/delivery-tasks/${id}`).then(r => r.data), setQuantities: (id: string, items: DeliveryTaskItemQuantity[]) => api.put(`/delivery-tasks/${id}/quantities`, { items }).then(r => r.data), confirm: (id: string) => api.post(`/delivery-tasks/${id}/confirm`).then(r => r.data), fail: (id: string, note: string) => api.post(`/delivery-tasks/${id}/fail`, { note }).then(r => r.data), }