90 lines
2.6 KiB
JavaScript
90 lines
2.6 KiB
JavaScript
const faker = require('faker');
|
|
|
|
const capacities = {
|
|
high: faker.random.number({ min: 400, max: 600 }),
|
|
low: faker.random.number({ min: 125, max: 250 }),
|
|
};
|
|
|
|
const dates = {
|
|
near: faker.date.future(faker.random.number({ min: 0.125, max: 0.75 })),
|
|
past: faker.date.recent(faker.random.number({ min: 3, max: 16 })),
|
|
}
|
|
|
|
const getPosts = (number = 3) => {
|
|
let posts = [];
|
|
for (let i = 0; i < number; i++) {
|
|
const date = faker.date.recent(faker.random.number({ min: 3, max: 16 }));
|
|
const scheduledPost = faker.random.boolean();
|
|
|
|
posts.push({
|
|
author: faker.name.findName(),
|
|
title: faker.lorem.sentence(),
|
|
content: faker.lorem.paragraphs(faker.random.number({ min: 3, max: 5 })),
|
|
isPublic: faker.random.boolean(),
|
|
scheduledPost: scheduledPost,
|
|
sendNotification: scheduledPost ? faker.date.future(faker.random.number({ min: 0.125, max: 0.25 })) : null,
|
|
timestamp: date,
|
|
});
|
|
}
|
|
|
|
return posts;
|
|
};
|
|
|
|
const getTickets = (ticketItems = []) => {
|
|
let tickets = [];
|
|
|
|
if (ticketItems !== false) {
|
|
const count = typeof ticketItems === 'array' ? ticketItems.length :
|
|
faker.random.number({ min: 1, max: 5 });
|
|
|
|
for (let i = 0; i < count; i++) {
|
|
const ticketItem = ticketItems[i] || {};
|
|
const {
|
|
capacity = capacities[faker.random.arrayElement(['high', 'low'])],
|
|
itemId = faker.random.uuid(),
|
|
name = faker.lorem.sentence(),
|
|
price = faker.random.number({ min: 50, max: 450 }),
|
|
} = ticketItem;
|
|
|
|
tickets.push({
|
|
available: (capacity -
|
|
faker.random.number({ min: Math.floor(capacity / 2), max: (capacity - 50) })),
|
|
capacity,
|
|
endSale: dates.near,
|
|
itemId,
|
|
name,
|
|
price,
|
|
startSale: dates.past,
|
|
});
|
|
}
|
|
}
|
|
|
|
return tickets;
|
|
}
|
|
|
|
const getEvent = (isTicketed = true) => ({
|
|
description: faker.lorem.sentences(faker.random.number({ min: 3, max: 5 }), '. '),
|
|
endTime: dates.near,
|
|
images: [
|
|
{ url: faker.image.imageUrl(640, 480, 'cats', true, true) },
|
|
{ url: faker.image.imageUrl(640, 480, 'cats', true, true) },
|
|
{ url: faker.image.imageUrl(640, 480, 'cats', true, true) },
|
|
],
|
|
isTicketed: isTicketed,
|
|
posts: getPosts(faker.random.number({ min: 4, max: 12 })),
|
|
requireLoginToSeeAuction: false,
|
|
showFrom: dates.past - (14*24*60*60*1000),
|
|
showUntil: dates.near + (14*24*60*60*1000),
|
|
startTime: dates.past,
|
|
tagline: faker.lorem.sentence(),
|
|
ticketClasses: getTickets(isTicketed),
|
|
title: faker.lorem.words(faker.random.number({ min: 1, max: 4 })),
|
|
url: 'https://www.mfa.org/summer-party',
|
|
});
|
|
|
|
module.exports = {
|
|
getEvent,
|
|
getPosts,
|
|
getTickets,
|
|
};
|