diff --git a/backend/controllers/DLDeliveryController.js b/backend/controllers/DLDeliveryController.js index e14f6fdd..4704d7d2 100644 --- a/backend/controllers/DLDeliveryController.js +++ b/backend/controllers/DLDeliveryController.js @@ -151,3 +151,19 @@ export const getOngoingDeliveries = asyncHandler(async (req, res) => { res.json({ count: ongoingDeliveries }); }); +// Controller to get ongoing deliveries for a specific driver +export const getOngoingDeliveriesByDriver = asyncHandler(async (req, res) => { + const driverID = req.params.driverID; // Get driverID from the URL parameters + + // Find deliveries assigned to the driver where status is not 'Delivered' + const deliveries = await DLDelivery.find({ + driverID, + deliveryStatus: { $ne: 'Delivered' }, + }); + + if (deliveries.length > 0) { + res.json(deliveries); + } else { + res.json({ message: 'No ongoing deliveries at the moment' }); + } +}); \ No newline at end of file diff --git a/backend/routes/DLDeliveryRoute.js b/backend/routes/DLDeliveryRoute.js index f5280faf..f502ee2b 100644 --- a/backend/routes/DLDeliveryRoute.js +++ b/backend/routes/DLDeliveryRoute.js @@ -1,5 +1,5 @@ import express from 'express'; -import { getAllDeliveries ,getDeliveryById,getTotalDeliveries,getOngoingDeliveries} from '../controllers/DLDeliveryController.js'; +import { getAllDeliveries ,getDeliveryById,getTotalDeliveries,getOngoingDeliveries,getOngoingDeliveriesByDriver} from '../controllers/DLDeliveryController.js'; const router = express.Router(); @@ -19,4 +19,9 @@ router.get('/total/count', getTotalDeliveries); // Route to get the ongoing deliveries count router.get('/ongoing/count', getOngoingDeliveries); + +// Route to get ongoing deliveries assigned to a driver +router.get('/ongoing/:driverID', getOngoingDeliveriesByDriver); + + export default router; diff --git a/frontend/src/Pages/delivery/DLDriverDashboard.jsx b/frontend/src/Pages/delivery/DLDriverDashboard.jsx index 9d7cd2ee..473f92aa 100644 --- a/frontend/src/Pages/delivery/DLDriverDashboard.jsx +++ b/frontend/src/Pages/delivery/DLDriverDashboard.jsx @@ -1,21 +1,21 @@ -import React, { useState, useEffect } from 'react' -import { useNavigate } from 'react-router-dom' -import axios from 'axios' -import DeliverySidebar from '../../Components/delivery/DeliverySidebar' +import React, { useState, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import axios from 'axios'; +import DeliverySidebar from '../../Components/delivery/DeliverySidebar'; const DLDriverDashboard = () => { const [driver, setDriver] = useState(null); const [loading, setLoading] = useState(true); const [isAvailable, setIsAvailable] = useState(false); // State for availability + const [ongoingDeliveries, setOngoingDeliveries] = useState([]); // State for ongoing deliveries const navigate = useNavigate(); - useEffect(() => { const fetchDriverProfile = async () => { - const driverToken = localStorage.getItem('driverToken') // Get token from localStorage + const driverToken = localStorage.getItem('driverToken'); // Get token from localStorage if (!driverToken) { - navigate('/driver/login') // If no token, redirect to login page - return + navigate('/driver/login'); // If no token, redirect to login page + return; } try { @@ -26,17 +26,21 @@ const DLDriverDashboard = () => { }); setDriver(data); // Set driver data from the response setIsAvailable(data.isAvailable); // Set initial availability - setLoading(false); + // Fetch ongoing deliveries assigned to this driver + const deliveriesRes = await axios.get(`/api/delivery/ongoing/${data._id}`); + setOngoingDeliveries(deliveriesRes.data); + + setLoading(false); } catch (err) { - console.error('Error fetching driver profile:', err) - localStorage.removeItem('driverToken') // Remove invalid token - navigate('/driver/login') // Redirect to login on error + console.error('Error fetching driver profile:', err); + localStorage.removeItem('driverToken'); // Remove invalid token + navigate('/driver/login'); // Redirect to login on error } - } + }; - fetchDriverProfile() // Fetch the driver profile on component load - }, [navigate]) + fetchDriverProfile(); // Fetch the driver profile on component load + }, [navigate]); const handleLogout = () => { navigate('/driver/logout'); // Navigate to the DLlogout page @@ -60,8 +64,7 @@ const DLDriverDashboard = () => { } }; - - if (loading) return
0
-8
-Tracking ID | +Shop Name | +Pickup Address | +Dropoff Address | +Status | +Actions | +
---|---|---|---|---|---|
{delivery.trackingID} | +{delivery.shopName} | +{delivery.pickupAddress} | +{delivery.dropOffAddress} | +{delivery.deliveryStatus} | ++ + | +
No ongoing deliveries at the moment.
+ )}