File size: 2,370 Bytes
fcf8749
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();

const MOCK_PACKAGES = [
    { id: 'pkg-001', trackingNo: 'PKG-A1B2C3D4', pickup: { location: 'Mumbai Warehouse', lat: 19.0760, lng: 72.8777 }, delivery: { location: 'Pune Hub', lat: 18.5204, lng: 73.8567 }, driver: 'Rajesh Kumar', status: 'IN_TRANSIT', date: new Date(), weight: 450 },
    { id: 'pkg-002', trackingNo: 'PKG-E5F6G7H8', pickup: { location: 'Bangalore Depot', lat: 12.9716, lng: 77.5946 }, delivery: { location: 'Chennai Port', lat: 13.0827, lng: 80.2707 }, driver: 'Priya Sharma', status: 'COMPLETED', date: new Date(Date.now() - 86400000), weight: 280 },
    { id: 'pkg-003', trackingNo: 'PKG-I9J0K1L2', pickup: { location: 'Delhi NCR', lat: 28.6139, lng: 77.2090 }, delivery: { location: 'Jaipur City', lat: 26.9124, lng: 75.7873 }, driver: 'Amit Patel', status: 'CARGO_LOADED', date: new Date(), weight: 620 },
];

async function fetchPackages() {
    return prisma.delivery.findMany({
        where: { status: { in: ['COMPLETED', 'IN_TRANSIT', 'EN_ROUTE_TO_DROP', 'CARGO_LOADED'] } },
        include: { driver: { select: { name: true } } },
        orderBy: { createdAt: 'desc' },
        take: 10
    });
}

function formatPackage(pkg) {
    return {
        id: pkg.id,
        trackingNo: pkg.trackingNumber || `PKG-${pkg.id.substring(0, 8)}`,
        pickup: { location: pkg.pickupLocation, lat: pkg.pickupLat, lng: pkg.pickupLng },
        delivery: { location: pkg.dropLocation, lat: pkg.dropLat, lng: pkg.dropLng },
        driver: pkg.driver?.name || 'Unassigned',
        status: pkg.status,
        date: pkg.createdAt,
        weight: pkg.cargoWeight || 0
    };
}

// GET /api/packages/history - Get last 10 package deliveries with location data
const getHistory = async (req, res) => {
    try {
        const packages = await fetchPackages();
        res.json(packages.map(formatPackage));
    } catch (error) {
        console.warn('[Demo Mode] getHistory using mock data');
        res.json(MOCK_PACKAGES);
    }
};

const getHistoryWeb = async (req, res) => {
    try {
        const packages = await fetchPackages();
        res.json(packages.map(formatPackage));
    } catch (error) {
        console.warn('[Demo Mode] getHistoryWeb using mock data');
        res.json(MOCK_PACKAGES);
    }
};

module.exports = { getHistory, getHistoryWeb };