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() let collectionName = formatDate(new Date()) async function filterAlreadyBookedContacts(contactList) { let alreadyBookedContacts = await mongoManager.getAllSuccessfulItemsForDay(collectionName); let contactsToBook = []; contactList.forEach((contact) => { if (alreadyBookedContacts.find((bookedContact) => bookedContact.email === contact.mail) === undefined) { contactsToBook.push(contact) } }) return contactsToBook; } mongoManager.connect().then(r => { filterAlreadyBookedContacts(contactList).then(listToBook => { console.log(listToBook.length) android.devices().then((devices) => { let segmentNumber = listToBook.length / devices.length; for (let i = 0; i < devices.length; i++) { startWithList(contactList.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i]); } }) }) } ) function startBookWithNumbers(startNumber, endNumber) { } // Connect to the device. async function needToBook(contact, mongoManager) { let alreadyBooked = await mongoManager.getAllSuccessfulItemsForDay(collectionName) let toReturn = true; await alreadyBooked.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()); } module.exports = startBookWithNumbers