sg-delivery-customer/app/services/deliveryService.ts
2026-07-01 09:55:55 +05:30

72 lines
3.1 KiB
TypeScript

import { apiClient } from './apiClient';
import { Provider, CatalogItem, Order, DeliveryAgent, Location } from '../interfaces';
const mockProviders: Provider[] = [
{ id: 'p1', imageUrl: '', name: 'Pizza Planet', rating: 4.5, deliveryTime: '25 min', tag: 'Food', discountText: '50% OFF', serviceType: 'Italian' },
{ id: 'p2', imageUrl: '', name: 'Fresh Mart', rating: 4.2, deliveryTime: '30 min', tag: 'Groceries', discountText: '20% OFF', serviceType: 'Grocery' },
{ id: 'p3', imageUrl: '', name: 'MediQuick', rating: 4.7, deliveryTime: '15 min', tag: 'Pharmacy', discountText: undefined, serviceType: 'Pharmacy' },
{ id: 'p4', imageUrl: '', name: 'Burger Barn', rating: 4.3, deliveryTime: '20 min', tag: 'Food', discountText: 'Buy 1 Get 1', serviceType: 'Fast Food' },
{ id: 'p5', imageUrl: '', name: 'Green Basket', rating: 4.0, deliveryTime: '35 min', tag: 'Groceries', discountText: undefined, serviceType: 'Organic' },
];
const mockCatalogItems: CatalogItem[] = [
{ id: 'i1', imageUrl: '', title: 'Margherita Pizza', description: 'Classic cheese and tomato', price: 299, category: 'Pizza' },
{ id: 'i2', imageUrl: '', title: 'Pepperoni Pizza', description: 'Loaded with pepperoni slices', price: 399, category: 'Pizza' },
{ id: 'i3', imageUrl: '', title: 'French Fries', description: 'Crispy golden fries', price: 99, category: 'Sides' },
{ id: 'i4', imageUrl: '', title: 'Garlic Bread', description: 'Toasted bread with garlic butter', price: 149, category: 'Sides' },
{ id: 'i5', imageUrl: '', title: 'Chocolate Shake', description: 'Rich chocolate milkshake', price: 199, category: 'Beverages' },
{ id: 'i6', imageUrl: '', title: 'Cola', description: 'Refreshing cold drink', price: 49, category: 'Beverages' },
];
export const deliveryService = {
async getProviders() {
return apiClient.get('/providers', mockProviders);
},
async getProviderCatalog(providerId: string) {
return apiClient.get(`/providers/${providerId}/catalog`, mockCatalogItems);
},
async searchProviders(query: string) {
const results = mockProviders.filter(
(p) =>
p.name.toLowerCase().includes(query.toLowerCase()) ||
p.tag.toLowerCase().includes(query.toLowerCase()),
);
return apiClient.get(`/search?q=${query}`, results);
},
async placeOrder(orderData: Partial<Order>) {
return apiClient.post('/orders', orderData, {
success: true,
order: {
id: `ORD-${Date.now()}`,
...orderData,
status: 'placed' as const,
createdAt: new Date().toISOString(),
},
});
},
async getDeliveryAgent() {
const agent: DeliveryAgent = {
name: 'Rahul Sharma',
rating: 4.8,
vehicleDetails: 'KA-01-AB-1234 - Honda Activa',
phoneNumber: '+91 98765 43210',
};
return apiClient.get('/delivery/agent', agent);
},
async getLiveLocation() {
const location: Location = {
latitude: 12.9352,
longitude: 77.6245,
address: 'Koramangala 4th Block',
city: 'Bengaluru',
pincode: '560034',
};
return apiClient.get('/delivery/live-location', location);
},
};