Skip to content
This repository was archived by the owner on Sep 8, 2025. It is now read-only.

Commit c9f2479

Browse files
committed
fix driver assign shipment
1 parent 57b1abe commit c9f2479

5 files changed

Lines changed: 72 additions & 3 deletions

File tree

client/src/views/driver/driverlogin.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const DriverLogin = () => {
4848

4949
// Store token and navigate
5050
sessionStorage.setItem('driverToken', data.token)
51+
sessionStorage.setItem('driverUsername', data.driver.username)
5152
window.dispatchEvent(new Event('storage'))
5253
navigate('/drivertracking')
5354
} catch (error) {

client/src/views/driver/drivermanagement.js

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
CTableDataCell,
1313
CSpinner,
1414
} from '@coreui/react'
15+
import io from 'socket.io-client'
1516

1617
const DriverManagement = () => {
1718
const [shipments, setShipments] = useState([])
@@ -20,7 +21,7 @@ const DriverManagement = () => {
2021
useEffect(() => {
2122
const fetchShipments = async () => {
2223
try {
23-
const res = await fetch('https:backend-core.axleshift.com/driver/shipments')
24+
const res = await fetch('http://localhost:5052/driver/shipments')
2425
const data = await res.json()
2526
setShipments(data)
2627
} catch (error) {
@@ -31,6 +32,31 @@ const DriverManagement = () => {
3132
}
3233

3334
fetchShipments()
35+
36+
const socket = io('http://localhost:5052')
37+
38+
// Listen for shipment location updates
39+
socket.on('shipmentLocationUpdate', (data) => {
40+
// Update the state with the new location data
41+
setShipments((prevShipments) =>
42+
prevShipments.map((shipment) =>
43+
shipment.trackingNumber === data.trackingNumber
44+
? {
45+
...shipment,
46+
latitude: data.latitude,
47+
longitude: data.longitude,
48+
updated_at: data.updated_at,
49+
driverUsername: data.driverUsername,
50+
}
51+
: shipment,
52+
),
53+
)
54+
})
55+
56+
// Cleanup the socket connection when the component unmounts
57+
return () => {
58+
socket.disconnect()
59+
}
3460
}, [])
3561

3662
return (

client/src/views/driver/drivertracking.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,32 @@ const DriverTracking = () => {
125125

126126
if (!prev.includes(trackingNumber)) {
127127
socket.emit('joinTracking', trackingNumber)
128+
onShipmentSelect(trackingNumber)
128129
} else {
129130
socket.emit('leaveTracking', trackingNumber)
130131
}
131132

132133
return updatedList
133134
})
134135
}
136+
const assignShipmentToDriver = async (trackingNumber, driverUsername) => {
137+
try {
138+
await fetch('http://localhost:5052/driver/select-shipment', {
139+
method: 'POST',
140+
headers: {
141+
'Content-Type': 'application/json',
142+
},
143+
body: JSON.stringify({ trackingNumber, driverUsername }),
144+
})
145+
} catch (error) {
146+
console.error('Failed to assign shipment:', error)
147+
}
148+
}
149+
const onShipmentSelect = (trackingNumber) => {
150+
const driverUsername = sessionStorage.getItem('driverUsername')
151+
console.log('Assigning shipment to driver:', driverUsername)
152+
assignShipmentToDriver(trackingNumber, driverUsername)
153+
}
135154

136155
return (
137156
<div className="driver-tracking-container">

client/src/views/pages/login/signup/Signup.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ const Signup = () => {
118118
const response = await axios.post('/signup', userData)
119119
console.log('Signup successful:', response.data)
120120

121+
await axios.post('/verify-email', { email: formData.email })
121122
setSuccessMessage('User registered successfully! Redirecting to login...')
122123
setTimeout(() => navigate('/login'), 3000)
123124
} else {

server/index.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const app = express();
1919
const server = http.createServer(app);
2020
const io = socketIo (server,{
2121
cors: {
22-
origin: 'https://core2.axleshift.com',
22+
origin: 'http://localhost:3000',
2323
methods: ["GET", "POST"],
2424
},
2525
});
@@ -31,7 +31,7 @@ if (!admin.apps.length) {
3131
});
3232
}
3333
app.use(cors({
34-
origin: ['https://core2.axleshift.com'],
34+
origin: ['http://localhost:3000'],
3535
methods: ['GET', 'POST'],
3636
credentials: true
3737
}));
@@ -314,6 +314,28 @@ app.get('/driver/shipments', async (req, res) => {
314314
res.status(500).json({ success: false, message: "Server error" })
315315
}
316316
})
317+
// Driver selects shipments to track
318+
app.post('/driver/select-shipment', async (req, res) => {
319+
const { trackingNumber, driverUsername } = req.body;
320+
console.log('Received for assign:', { trackingNumber, driverUsername })
321+
322+
try {
323+
const shipment = await TrackData.findOne({ trackingNumber });
324+
325+
if (!shipment) {
326+
return res.status(404).json({ message: "Shipment not found" });
327+
}
328+
329+
shipment.driverUsername = driverUsername;
330+
await shipment.save();
331+
332+
res.json({ message: "Shipment successfully assigned to the driver", shipment });
333+
} catch (error) {
334+
console.error("Error assigning shipment:", error);
335+
res.status(500).json({ message: "Server error" });
336+
}
337+
});
338+
317339

318340
// Email
319341
app.post("/verify-email", async (req, res) => {

0 commit comments

Comments
 (0)