153 lines
5.6 KiB
TypeScript
153 lines
5.6 KiB
TypeScript
import api, { autoApi } from './api';
|
|
import {
|
|
Delivery,
|
|
CreateDeliveryRequest,
|
|
UpdateDeliveryRequest,
|
|
DeliveriesResponse,
|
|
DeliveryResponse,
|
|
DeliveriesMapResponse,
|
|
DeliveryHistoryResponse,
|
|
AxiosResponse
|
|
} from '../types/models';
|
|
|
|
// API Response wrappers for this service
|
|
interface DeliveryTotalResponse { ok: boolean; total: number; priceprime?: number; pricesameday?: number; priceemergency?: number; total_amount?: number; discount?: number; total_amount_after_discount?: number; }
|
|
interface CashResponse { ok: boolean; amount: number; }
|
|
|
|
export const deliveryService = {
|
|
// CRUD operations
|
|
create: (customerId: number, data: CreateDeliveryRequest): Promise<AxiosResponse<DeliveryResponse>> =>
|
|
api.post(`/delivery/create/${customerId}`, data),
|
|
|
|
getById: (id: number): Promise<AxiosResponse<DeliveryResponse>> =>
|
|
api.get(`/delivery/${id}`),
|
|
|
|
getOrder: (id: number): Promise<AxiosResponse<DeliveryResponse>> =>
|
|
api.get(`/delivery/order/${id}`),
|
|
|
|
getForMap: (date: string): Promise<AxiosResponse<DeliveriesMapResponse>> =>
|
|
api.get(`/delivery/map`, { params: { date } }),
|
|
|
|
getHistory: (startDate: string, endDate: string): Promise<AxiosResponse<DeliveryHistoryResponse>> =>
|
|
api.get(`/delivery/history`, { params: { start_date: startDate, end_date: endDate } }),
|
|
|
|
update: (id: number, data: UpdateDeliveryRequest): Promise<AxiosResponse<DeliveryResponse>> =>
|
|
api.put(`/delivery/edit/${id}`, data),
|
|
|
|
delete: (id: number): Promise<AxiosResponse<{ ok: boolean }>> =>
|
|
api.delete(`/delivery/delete/${id}`),
|
|
|
|
cancel: (id: number): Promise<AxiosResponse<{ ok: boolean }>> =>
|
|
api.put(`/delivery/cancel/${id}`),
|
|
|
|
markCancelled: (id: number): Promise<AxiosResponse<{ ok: boolean }>> =>
|
|
api.put(`/delivery/cancelled/${id}`),
|
|
|
|
// List operations
|
|
getAll: (page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/all/${page}`),
|
|
|
|
getByCustomer: (customerId: number, page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/customer/${customerId}/${page}`),
|
|
|
|
getPast1: (customerId: number): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/past1/${customerId}`),
|
|
|
|
getPast2: (customerId: number): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/past2/${customerId}`),
|
|
|
|
// Status-based lists
|
|
getWaiting: (page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/waiting/${page}`),
|
|
|
|
getTomorrow: (page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/tommorrow/${page}`),
|
|
|
|
getOutForDelivery: (page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/outfordelivery/${page}`),
|
|
|
|
getDelivered: (page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/delivered/${page}`),
|
|
|
|
getFinalized: (page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/finalized/${page}`),
|
|
|
|
getPending: (page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/pending/${page}`),
|
|
|
|
getIssues: (page: number = 1): Promise<AxiosResponse<DeliveriesResponse>> =>
|
|
api.get(`/delivery/issue/${page}`),
|
|
|
|
deleteCancelled: (id: number): Promise<AxiosResponse<{ ok: boolean }>> =>
|
|
api.delete(`/delivery/cancelled/${id}`),
|
|
|
|
// Totals
|
|
getWaitingTotals: (): Promise<AxiosResponse<{ totals: any[]; grand_total: number }>> =>
|
|
api.get('/deliverystatus/waiting-totals'),
|
|
|
|
getTodayTotals: (): Promise<AxiosResponse<{ totals: any[]; grand_total: number }>> =>
|
|
api.get('/deliverystatus/today-totals'),
|
|
|
|
getTomorrowTotals: (): Promise<AxiosResponse<{ totals: any[]; grand_total: number }>> =>
|
|
api.get('/deliverystatus/tomorrow-totals'),
|
|
|
|
// Status & totals
|
|
updateStatus: (data: { id: number; status: number }): Promise<AxiosResponse<{ ok: boolean }>> =>
|
|
api.put('/delivery/updatestatus', data),
|
|
|
|
getTotal: (id: number): Promise<AxiosResponse<DeliveryTotalResponse>> =>
|
|
api.get(`/delivery/total/${id}`),
|
|
|
|
// Cash handling
|
|
handleCash: (id: number, type: string): Promise<AxiosResponse<CashResponse>> =>
|
|
api.get(`/delivery/cash/${id}/${type}`),
|
|
|
|
// Finalize
|
|
finalize: (id: number, data?: { final_price: number }): Promise<AxiosResponse<{ ok: boolean }>> =>
|
|
api.put(`/deliverydata/finalize/${id}`, data),
|
|
|
|
// Auto system endpoints (VITE_AUTO_URL)
|
|
auto: {
|
|
getDelivery: (id: number) =>
|
|
autoApi.get(`/delivery/delivery/${id}`),
|
|
|
|
getProfileDeliveries: (id: number) =>
|
|
autoApi.get(`/delivery/all/profile/${id}`),
|
|
|
|
getAllCustomers: () =>
|
|
autoApi.get('/delivery/all/customers'),
|
|
|
|
getByCustomer: (id: number) =>
|
|
autoApi.get(`/delivery/auto/customer/${id}`),
|
|
|
|
getTicket: (id: number) =>
|
|
autoApi.get(`/delivery/autoticket/${id}`),
|
|
|
|
findDelivery: (id: number) =>
|
|
autoApi.get(`/delivery/finddelivery/${id}`),
|
|
|
|
updateStatus: (id: number, data: any) =>
|
|
autoApi.put(`/delivery/update_status/${id}`, data),
|
|
|
|
confirm: (data: any) =>
|
|
autoApi.post('/confirm/delivery', data),
|
|
|
|
createTicket: (id: number, data: any) =>
|
|
autoApi.post(`/confirm/auto/create/${id}`, data),
|
|
|
|
createTicketNoPreauth: (id: number, data: any) =>
|
|
autoApi.post(`/confirm/auto/create/nopreauth/${id}`, data),
|
|
|
|
closeTicket: (id: number, data?: any) =>
|
|
autoApi.put(`/confirm/auto/close_ticket/${id}`, data),
|
|
|
|
updateTicket: (id: number, data: any) =>
|
|
autoApi.put(`/confirm/auto/update/${id}`, data),
|
|
|
|
estimateGallons: (customerId: number) =>
|
|
autoApi.get(`/fixstuff_customer/estimate_gallons/customer/${customerId}`),
|
|
},
|
|
};
|
|
|
|
export default deliveryService;
|