import type { Freight, PaginatedResponse } from "@edr/types"; import { endpoint } from "@/utils/api"; import type { CreateFileUploadFieldDto, CreateFileUploadSettingDto, FileUploadField, FileUploadSetting, UpdateFileUploadFieldDto, UpdateFileUploadSettingDto, } from "@/types/fileUploadSettings"; import { bookingsService } from "./bookings.service"; import { consignmentsService } from "./consignments.service"; import { trackingService } from "./tracking.service"; import { fileUploadSettingsService } from "./fileUploadSettings.service"; // --------------------------------------------------------------------------- // API definition // --------------------------------------------------------------------------- export const api = { bookings: { list: endpoint>( "bookings", "list", bookingsService.list, ), get: endpoint<{ id: string }, Freight.IBooking>( "bookings", "get", ({ id }) => bookingsService.get(id), ), create: endpoint< { reference: string; customerId: string; scheduledDate: string; totalAmount: number; trainId?: string; }, Freight.IBooking >("bookings", "create", (input) => bookingsService.create(input)), remove: endpoint<{ id: string }, void>( "bookings", "remove", ({ id }) => bookingsService.remove(id), ), }, consignments: { list: endpoint>( "consignments", "list", consignmentsService.list, ), get: endpoint<{ id: string }, Freight.IConsignment>( "consignments", "get", ({ id }) => consignmentsService.get(id), ), }, tracking: { forConsignment: endpoint< { consignmentId: string }, Freight.ITrackingEvent[] >("tracking", "forConsignment", ({ consignmentId }) => trackingService.forConsignment(consignmentId), ), }, fileUploadSettings: { list: endpoint( "file-upload-settings", "list", fileUploadSettingsService.list, ), getById: endpoint<{ id: string }, FileUploadSetting>( "file-upload-settings", "getById", ({ id }) => fileUploadSettingsService.getById(id), ), getByCode: endpoint<{ code: string }, FileUploadSetting>( "file-upload-settings", "getByCode", ({ code }) => fileUploadSettingsService.getByCode(code), ), create: endpoint( "file-upload-settings", "create", (payload) => fileUploadSettingsService.create(payload), ), update: endpoint< { id: string; dto: UpdateFileUploadSettingDto }, FileUploadSetting >("file-upload-settings", "update", ({ id, dto }) => fileUploadSettingsService.update(id, dto), ), remove: endpoint<{ id: string }, void>( "file-upload-settings", "remove", ({ id }) => fileUploadSettingsService.remove(id), ), replaceFields: endpoint< { id: string; fields: CreateFileUploadFieldDto[] }, FileUploadField[] >("file-upload-settings", "replaceFields", ({ id, fields }) => fileUploadSettingsService.replaceFields(id, fields), ), addField: endpoint< { settingId: string; dto: CreateFileUploadFieldDto }, FileUploadField >("file-upload-settings", "addField", ({ settingId, dto }) => fileUploadSettingsService.addField(settingId, dto), ), updateField: endpoint< { fieldId: string; dto: UpdateFileUploadFieldDto }, FileUploadField >("file-upload-settings", "updateField", ({ fieldId, dto }) => fileUploadSettingsService.updateField(fieldId, dto), ), removeField: endpoint<{ fieldId: string }, void>( "file-upload-settings", "removeField", ({ fieldId }) => fileUploadSettingsService.removeField(fieldId), ), }, };