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 addedBy
ownershipPeriods ownershipPeriods
events events
notes
static fromAvtocod(report) { static fromAvtocod(report) {
//console.log(JSON.stringify(report)); //console.log(JSON.stringify(report));
@ -62,6 +63,7 @@ class Vehicle {
v.addedDate = Date.now(); v.addedDate = Date.now();
v.updatedDate = v.addedDate; v.updatedDate = v.addedDate;
v.events = []; v.events = [];
v.notes = [];
v.debugInfo = { autocod: new DebugInfo() }; v.debugInfo = { autocod: new DebugInfo() };
return v; return v;
@ -100,6 +102,7 @@ class Vehicle {
v.addedDate = Date.now(); v.addedDate = Date.now();
v.updatedDate = v.addedDate; v.updatedDate = v.addedDate;
v.events = []; v.events = [];
v.notes = [];
v.debugInfo = { vin01history: new DebugInfo() }; v.debugInfo = { vin01history: new DebugInfo() };
return v; return v;
@ -156,10 +159,33 @@ class Vehicle {
v.addedDate = Date.now(); v.addedDate = Date.now();
v.updatedDate = v.addedDate; v.updatedDate = v.addedDate;
v.events = []; v.events = [];
v.notes = [];
v.debugInfo = { vin01base: new DebugInfo() }; v.debugInfo = { vin01base: new DebugInfo() };
return v; 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; module.exports = Vehicle;

View File

@ -9,7 +9,9 @@ router.post('/', async (req, res) => {
const { number, event } = req.body; const { number, event } = req.body;
try { try {
event.id = uuidv4(); if(!event.id) {
event.id = uuidv4();
}
let collection = req.db.collection('vehicles'); let collection = req.db.collection('vehicles');
await collection.updateOne({ number }, { $push: { events: event } }); await collection.updateOne({ number }, { $push: { events: event } });
await collection.updateOne({ number }, { $set: { updatedDate: Date.now() } }); 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) => { router.post('/check', async (req, res) => {
const number = req.body.number.replace(/ /g, '').toUpperCase(); const number = req.body.number.replace(/ /g, '').toUpperCase();
const googleIdToken = req.body.googleIdToken; const { googleIdToken, forceUpdate, notes, events } = req.body;
const forceUpdate = req.body.forceUpdate.toLowerCase() == 'true';
const { email } = req.user; const { email } = req.user;
console.log(`=== checking number: ${number} ====================================`); console.log(`=== checking number: ${number} ====================================`);
@ -97,6 +96,16 @@ router.post('/check', async (req, res) => {
vehicle.addedDate = vehicles[0].addedDate; vehicle.addedDate = vehicles[0].addedDate;
vehicle.events = vehicles[0].events; vehicle.events = vehicles[0].events;
vehicle.osagoContracts = vehicles[0].osagoContracts; 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 }); await collection.replaceOne({ number }, vehicle, { upsert: true });