import { api } from '../auth/http'; import { URL_CONSTANTS } from '@/constants/URLS'; export const LAST_MILE_STATUSES = [ 'PAYMENT_PENDING', 'READY_TO_TRANSIT', 'IN_TRANSIT', 'DELIVERED', ] as const; export type LastMileApiStatus = (typeof LAST_MILE_STATUSES)[number]; export interface LastMileBooking { id: string; reference: string; lastMileDeliveryAddress?: string | null; cargoFreeText?: string | null; cargoTotalWeightVgm: number; totalAmount: number; scheduledDate?: string | null; company?: { id: string; name?: string; phone?: string | null; contactPersonName?: string | null; contactPersonPhone?: string | null } | null; serviceType?: { id: string; name?: string } | null; originYard?: { id: string; name?: string } | null; destinationYard?: { id: string; name?: string } | null; cargoType?: { id: string; name?: string } | null; } export interface LastMileVehicle { id: string; plateNumber: string; manufacturer: string; model: string; } export interface LastMileRecord { id: string; bookingId: string; status: LastMileApiStatus; advancedPayment: number; remainingPayment: number; estimatedKm?: number | null; exactKm?: number | null; vehicleId?: string | null; booking?: LastMileBooking | null; vehicle?: LastMileVehicle | null; createdAt: string; updatedAt: string; } export interface LastMileListResponse { data: LastMileRecord[]; meta: { total: number; page: number; pageSize: number; totalPages: number }; } const LM = URL_CONSTANTS.LAST_MILE; export const lastMileService = { list: (pageSize = 1000) => api.get(`${LM.BASE}?pageSize=${pageSize}`), getById: (id: string) => api.get(LM.BY_ID(id)), update: (id: string, data: { status?: LastMileApiStatus; vehicleId?: string | null }) => api.patch(LM.BY_ID(id), data), accept: (bookingReference: string) => api.post(LM.ACCEPT(bookingReference)), };