| Current Path : /home/deltalab/PMS/partner-manager-backend/rest/queries/ |
| Current File : //home/deltalab/PMS/partner-manager-backend/rest/queries/data-filler.js |
/* eslint-disable max-len */
/* eslint-disable new-cap */
/* eslint-disable no-await-in-loop */
const { it, en, de, base, Faker, LocaleDefinition } = require('@faker-js/faker');
const { partnerModel } = require('../../models/mongoose/partner');
const { productModel } = require('../../models/mongoose/product');
const { orderModel } = require('../../models/mongoose/order');
const { productInventoryModel } = require('../../models/mongoose/product');
const dataFiller = require('../../services/data-filler');
const improvedIT = {
title: 'Improved IT locale',
commerce: {
product_name: { //they are mixed up on purpose, it sounds better in italian
adjective: dataFiller.PRODUCT_IT,
material: dataFiller.ADJECTIVE_IT,
product: dataFiller.MATERIAL_IT,
},
product_description: dataFiller.DESCRIPTION_IT,
},
};
const fakerIIT = new Faker({
locale: [improvedIT, it, de, en, base],
});
const WAREHOUSE = "6482f446901ea21939a364fd";
const CHANNEL = "62a35fc7fa9bd62a98ddd875";
const CATEGORY = "62445564caee98a828a6f2dd";
const INSTANCE_ID = 'indaco2';
const STORENAME = 'storeview';
async function createFakePartnerData() {
console.log('Filling Partner with fake data');
const ids = [];
for (let i = 0; i < process.env.DF_PARTNER_NUMBER; i++) {
console.log('entro');
const partner = new partnerModel();
console.log(partner);
partner.companyName = fakerIIT.company.name();
console.log(fakerIIT.company.name);
partner.description = fakerIIT.company.catchPhrase();
partner.email = fakerIIT.internet.email();
partner.address = `${fakerIIT.location.streetAddress()} - ${fakerIIT.location.zipCode()} ${fakerIIT.location.city()} (${fakerIIT.location.state()})`;
partner.phone = fakerIIT.phone.number();
partner.seller = partner.companyName;
partner.vatNumber = fakerIIT.string.numeric(11);
const savedPartner = await partner.save();
ids.push(savedPartner._id);
}
return ids;
}
async function createFakeProductDataByPartner(ids) {
const products = [];
for (let i = 0; i < ids.length; i++) {
console.log(`Filling Partner ${ids[i]} with fake products`);
console.log(fakerIIT.commerce.productDescription());
for (let j = 0; j < process.env.DF_PRODUCT_NUMBER; j++) {
const product = new productModel();
product.title = fakerIIT.commerce.productName();
product.description = fakerIIT.commerce.productDescription();
product.customDescription = fakerIIT.commerce.productDescription();
product.price = fakerIIT.commerce.price();
product.msrp = fakerIIT.commerce.price();
product.sku = fakerIIT.string.alphanumeric(10);
product.barcode = fakerIIT.string.numeric(8);
product.weight = fakerIIT.number.float({ precision: 0.1, min: 10, max: 1500 });
product.brand = fakerIIT.commerce.productAdjective();
product.partnerId = ids[i];
product.requiresShipping = fakerIIT.datatype.boolean();
product.inventoryLevels = [];
product.bookedQuantity = 0;
product.trackInventory = fakerIIT.datatype.boolean();
product.showMsrp = fakerIIT.datatype.boolean();
product.refrigerated = fakerIIT.datatype.boolean();
product.channelId = process.env.DF_CHANNEL;
product.categoryId = process.env.DF_CATEGORY;
product.size = { height: 0, length: 0, width: 0 };
const deltaInventory = new productInventoryModel();
deltaInventory.warehouseId = process.env.DF_WAREHOUSE;
deltaInventory.amount = fakerIIT.number.int(100);
product.inventoryLevels.push(deltaInventory);
product.fragile = fakerIIT.datatype.boolean();
product.bottle = fakerIIT.datatype.boolean();
// save the product
await product.save();
products.push(product);
}
}
return products;
}
async function createFakeOrdersByPartner(partners, products) {
console.log('Filling Orders with fake data');
for (let i = 0; i < process.env.DF_ORDERS_NUMBER; i++) {
console.log('order');
const order = new orderModel();
order.omsgid = fakerIIT.string.alphanumeric(10);
order.name = `'ORDINE ${order.omsgid}`;
order.storeId = '1';
order.createdAt = fakerIIT.date.past();
order.cashOnDelivery = fakerIIT.datatype.boolean();
order.partnerId = '6125199597b1612d8071eafd';
order.status = 'open';
order.fullyPaid = true;
order.totalPriceSet = {
amount: fakerIIT.number.float({ precision: 0.1, min: 10, max: 150 }),
currency: 'EUR',
};
order.customer = {
displayName: fakerIIT.person.fullName(),
email: fakerIIT.internet.email(),
phone: fakerIIT.phone.number(),
};
order.shippingAddress = {
name: fakerIIT.company.name(),
company: fakerIIT.company.name(),
address1: fakerIIT.location.streetAddress(),
address2: fakerIIT.location.streetAddress(),
city: fakerIIT.location.city(),
province: fakerIIT.location.city(),
zip: fakerIIT.location.zipCode(),
country: fakerIIT.location.state(),
};
order.items = [];
for (let j = 0; j < process.env.DF_PRODUCTS_PER_ORDER; j++) {
console.log('order item');
const productIndex = Math.floor(Math.random() * products.length);
const chosenProduct = products[productIndex];
const item = {
name: chosenProduct.title,
sku: chosenProduct.sku,
imsgid: fakerIIT.string.alphanumeric(10),
quantity: fakerIIT.number.int({ min: 1, max: 15 }),
weight: fakerIIT.number.float({ precision: 0.1, min: 10, max: 15 }),
size: fakerIIT.number.float({ precision: 0.1, min: 10, max: 15 }),
totalPriceSet: {
amount: fakerIIT.number.float({ precision: 0.1, min: 10, max: 150 }),
currencyCode: 'EUR',
},
unitPriceSet: {
amount: fakerIIT.number.float({ precision: 0.1, min: 10, max: 50 }),
currencyCode: 'EUR',
},
};
order.items.push(item);
}
order.instanceId = process.env.DF_INSTANCE_ID;
order.storeName = process.env.DF_STORENAME;
order.fullyBooked = true;
await order.save();
}
}
module.exports = {
createFakePartnerData,
createFakeProductDataByPartner,
createFakeOrdersByPartner,
};