Adding API for notes

This commit is contained in:
Selim Mustafaev 2021-09-26 18:38:33 +03:00
parent 686c6aba40
commit cdd3e58c24
3 changed files with 40 additions and 3 deletions

View File

@ -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;

View File

@ -9,7 +9,9 @@ router.post('/', async (req, res) => {
const { number, event } = req.body;
try {
event.id = uuidv4();
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() } });

View File

@ -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 });