Adding API for notes
This commit is contained in:
parent
686c6aba40
commit
cdd3e58c24
@ -22,6 +22,7 @@ class Vehicle {
|
||||
addedBy
|
||||
ownershipPeriods
|
||||
events
|
||||
notes
|
||||
|
||||
static fromAvtocod(report) {
|
||||
//console.log(JSON.stringify(report));
|
||||
@ -62,6 +63,7 @@ class Vehicle {
|
||||
v.addedDate = Date.now();
|
||||
v.updatedDate = v.addedDate;
|
||||
v.events = [];
|
||||
v.notes = [];
|
||||
v.debugInfo = { autocod: new DebugInfo() };
|
||||
|
||||
return v;
|
||||
@ -100,6 +102,7 @@ class Vehicle {
|
||||
v.addedDate = Date.now();
|
||||
v.updatedDate = v.addedDate;
|
||||
v.events = [];
|
||||
v.notes = [];
|
||||
v.debugInfo = { vin01history: new DebugInfo() };
|
||||
|
||||
return v;
|
||||
@ -156,10 +159,33 @@ class Vehicle {
|
||||
v.addedDate = Date.now();
|
||||
v.updatedDate = v.addedDate;
|
||||
v.events = [];
|
||||
v.notes = [];
|
||||
v.debugInfo = { vin01base: new DebugInfo() };
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
mergeNotes(newNotes) {
|
||||
if(this.notes) {
|
||||
let map = new Map();
|
||||
this.notes.forEach(item => map.set(item.id, item));
|
||||
newNotes.forEach(item => map.set(item.id, item));
|
||||
this.notes = [...map.values()];
|
||||
} else {
|
||||
this.notes = newNotes;
|
||||
}
|
||||
}
|
||||
|
||||
mergeEvents(newEvents) {
|
||||
if(this.events) {
|
||||
let map = new Map();
|
||||
this.events.forEach(item => map.set(item.id, item));
|
||||
newEvents.forEach(item => map.set(item.id, item));
|
||||
this.events = [...map.values()];
|
||||
} else {
|
||||
this.events = newEvents;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Vehicle;
|
||||
|
||||
@ -9,7 +9,9 @@ router.post('/', async (req, res) => {
|
||||
const { number, event } = req.body;
|
||||
|
||||
try {
|
||||
if(!event.id) {
|
||||
event.id = uuidv4();
|
||||
}
|
||||
let collection = req.db.collection('vehicles');
|
||||
await collection.updateOne({ number }, { $push: { events: event } });
|
||||
await collection.updateOne({ number }, { $set: { updatedDate: Date.now() } });
|
||||
|
||||
@ -15,8 +15,7 @@ const makeError = error => ({ success: false, error });
|
||||
|
||||
router.post('/check', async (req, res) => {
|
||||
const number = req.body.number.replace(/ /g, '').toUpperCase();
|
||||
const googleIdToken = req.body.googleIdToken;
|
||||
const forceUpdate = req.body.forceUpdate.toLowerCase() == 'true';
|
||||
const { googleIdToken, forceUpdate, notes, events } = req.body;
|
||||
const { email } = req.user;
|
||||
|
||||
console.log(`=== checking number: ${number} ====================================`);
|
||||
@ -97,6 +96,16 @@ router.post('/check', async (req, res) => {
|
||||
vehicle.addedDate = vehicles[0].addedDate;
|
||||
vehicle.events = vehicles[0].events;
|
||||
vehicle.osagoContracts = vehicles[0].osagoContracts;
|
||||
vehicle.notes = vehicles[0].notes;
|
||||
}
|
||||
|
||||
// Merge new notes/events with old ones
|
||||
if(notes) {
|
||||
vehicle.mergeNotes(notes);
|
||||
}
|
||||
|
||||
if(events) {
|
||||
vehicle.mergeEvents(events);
|
||||
}
|
||||
|
||||
await collection.replaceOne({ number }, vehicle, { upsert: true });
|
||||
|
||||
Loading…
Reference in New Issue
Block a user