72 lines
3.1 KiB
TypeScript
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);
|
|
},
|
|
};
|