- Routes to populate/depopulate demo event/item data
This commit is contained in:
102
routes/demo.js
Normal file
102
routes/demo.js
Normal file
@@ -0,0 +1,102 @@
|
||||
const aqp = require('api-query-params');
|
||||
const errors = require('restify-errors');
|
||||
|
||||
const EventFixture = require('../fixtures/event');
|
||||
const ItemFixture = require('../fixtures/item');
|
||||
|
||||
const Event = require('../models/event');
|
||||
const Item = require('../models/item');
|
||||
|
||||
const mergeItemTicketsWithEventStubTickets = (items, ticketStubs, callback) => {
|
||||
const getMatchingTicket = (doc) => {
|
||||
for (let i = 0; i < ticketStubs.length; i++) {
|
||||
if (doc.title === ticketStubs[i].name) {
|
||||
ticketStubs[i].itemId = doc.id;
|
||||
return ticketStubs[i];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
let ticketsWithItemIds = [];
|
||||
items.forEach((item) => {
|
||||
if (item.type === 'ticket') {
|
||||
const mergedTicket = getMatchingTicket(item);
|
||||
if (mergedTicket) {
|
||||
ticketsWithItemIds.push(mergedTicket);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
callback(ticketsWithItemIds);
|
||||
};
|
||||
|
||||
module.exports = function (server, auth) {
|
||||
|
||||
server.get('/demo/populate', auth.manager, (req, res, next) => {
|
||||
const eventStub = EventFixture.getEvent(true);
|
||||
const eventTickets = eventStub.ticketClasses;
|
||||
delete eventStub.ticketClasses;
|
||||
|
||||
Event.create(eventStub, (err, event) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!event) {
|
||||
return next(err, false, 'There was a problem creating the event');
|
||||
}
|
||||
|
||||
const itemsStub = ItemFixture({
|
||||
eventId: event.id,
|
||||
auction: 10,
|
||||
ticket: eventTickets,
|
||||
eventStart: eventStub.startTime,
|
||||
eventEnd: eventStub.endTime,
|
||||
});
|
||||
|
||||
Item.insertMany(itemsStub, (err, items) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!items.length) {
|
||||
return next(err, false, 'No items were inserted.');
|
||||
}
|
||||
|
||||
|
||||
|
||||
mergeItemTicketsWithEventStubTickets(items, eventTickets, (ticketsWithIds) => {
|
||||
Event.updateOne(
|
||||
{ _id: event.id },
|
||||
{ $set: { ticketed: true, ticketClasses: ticketsWithIds } },
|
||||
(err, event) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
res.send({ success: true, info: 'Demo data successfully inserted.' });
|
||||
next();
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
server.get('/demo/depopulate', auth.manager, (req, res, next) => {
|
||||
let report = { items: null, events: null };
|
||||
|
||||
Event.deleteMany({}, (err, { deletedCount = 0 }) => {
|
||||
report.events = deletedCount;
|
||||
Item.deleteMany({}, (err, { deletedCount = 0 }) => {
|
||||
report.items = deletedCount;
|
||||
res.send({ report });
|
||||
return next();
|
||||
});
|
||||
});
|
||||
|
||||
next();
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user