67 lines
2.2 KiB
JavaScript
67 lines
2.2 KiB
JavaScript
const {_android: android} = require('playwright');
|
|
const ExcelUtil = require("./src/excel/ExcelUtil");
|
|
const CommandorPage = require("./src/workers/CommandorPage");
|
|
const {MongoManager, formatDate} = require("./src/workers/mongo_manager");
|
|
|
|
const mongoManager = new MongoManager();
|
|
|
|
let excelUtil = new ExcelUtil();
|
|
let contactList = excelUtil.readContacts();
|
|
mongoManager.connect().then(r =>
|
|
|
|
android.devices().then((devices) => {
|
|
let segmentNumber = contactList.length / devices.length;
|
|
for (let i = 0; i < devices.length; i++) {
|
|
startWithList(contactList.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i]);
|
|
}
|
|
}))
|
|
|
|
// Connect to the device.
|
|
|
|
async function needToBook(contact, mongoManager) {
|
|
let collectionName = formatDate(new Date())
|
|
let alreadBooked = await mongoManager.getAllSuccessfulItemsForDay(collectionName)
|
|
let toReturn = true;
|
|
await alreadBooked.forEach((bookedItem) => {
|
|
if (bookedItem.email === contact.mail) {
|
|
toReturn = false;
|
|
}
|
|
}
|
|
)
|
|
return toReturn
|
|
}
|
|
|
|
async function startBook(contactPojo, device) {
|
|
console.log(`Model: ${device.model()}`);
|
|
console.log(`Serial: ${device.serial()}`);
|
|
if (await needToBook(contactPojo, mongoManager)) {
|
|
let commandor = new CommandorPage(contactPojo, device, mongoManager);
|
|
//read contacts form excel
|
|
return await commandor.loadPage();
|
|
} else {
|
|
console.log("do not send request --> skip")
|
|
}
|
|
}
|
|
|
|
|
|
async function startWithList(contacts, device) {
|
|
await contacts.reduce(async (promise, contactPojo) => {
|
|
// This line will wait for the last async function to finish.
|
|
// The first iteration uses an already resolved Promise
|
|
// so, it will immediately continue.
|
|
await promise;
|
|
const contents = await startBook(contactPojo, device);
|
|
console.log(contents);
|
|
}, Promise.resolve());
|
|
}
|
|
|
|
// (async () => {
|
|
// android.devices().then((devices) => {
|
|
// let segmentNumber = contactList.length / devices.length;
|
|
// for (let i = 0; i < devices.length; i++) {
|
|
// startWithList(contactList.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i]);
|
|
// }
|
|
// })
|
|
// })()
|
|
|