diff --git a/models/event.js b/models/event.js index 6f7dab6..4b2f582 100644 --- a/models/event.js +++ b/models/event.js @@ -1,4 +1,5 @@ class Event { + id date latitude longitude diff --git a/routes/events.js b/routes/events.js index 345dd20..a5b2704 100644 --- a/routes/events.js +++ b/routes/events.js @@ -12,7 +12,57 @@ router.post('/', async (req, res) => { let collection = req.db.collection('vehicles'); await collection.updateOne({ number }, { $push: { events: event } }); let vehicle = await collection.findOne({ number }); - res.send({ success: true, data: vehicle }); + if(vehicle) { + res.send({ success: true, data: vehicle }); + } else { + res.status(204).send(makeError('There is no vehicle with such plate number')); + } + } catch(ex) { + res.send(makeError(ex.message)); + console.error(ex); + } +}); + +router.delete('/', async (req, res) => { + const { eventId } = req.body; + + try { + let collection = req.db.collection('vehicles'); + let vehicle = await collection.findOne({ 'events.id': eventId }); + if(vehicle) { + let index = vehicle.events.findIndex(e => e.id == eventId); + if(index >= 0) { + vehicle.events.splice(index, 1); + await collection.updateOne({ number: vehicle.number }, { $set: { events: vehicle.events } }); + } + res.send({ success: true, data: vehicle }); + } else { + res.send(makeError('There is no vehicle with such event')); + } + } catch(ex) { + res.send(makeError(ex.message)); + console.error(ex); + } +}); + +router.put('/', async (req, res) => { + const { event } = req.body; + + try { + let collection = req.db.collection('vehicles'); + let vehicle = await collection.findOne({ 'events.id': event.id }); + if(vehicle) { + let index = vehicle.events.findIndex(e => e.id == event.id); + if(index >= 0) { + vehicle.events[index] = event; + await collection.updateOne({ number: vehicle.number }, { $set: { events: vehicle.events } }); + res.send({ success: true, data: vehicle }); + } else { + res.send(makeError('Event not found')); + } + } else { + res.send(makeError('There is no vehicle with such event')); + } } catch(ex) { res.send(makeError(ex.message)); console.error(ex);