Отправка email через pubsub
Всем привет, нужна помощь в написании нового тригера для отправки только одного email через firebase на следующий день,после изменения статуса в orders на 'DELIVERED' , тоесть создать квери в триггере sendStatusEmails которая достает ордеры по статусу и id . Кто может помочь с данной проблемой или привести пример?
крона dailyEmails.js: module.exports = functions.pubsub .schedule("0 0 12 * *") .timeZone("") .onRun(async () => { await checkUnsentOrders(); await gameMailUnsentOrders(); await sendStatusEmails(); ]); }); пример триггера gameMailUnsentOrders.js: const processGamerStatusReminderEmail = async (gamerOrders: OrderData[]) => { const firstOrder = _.head(gamerOrders); const gamerName = firstOrder ? firstOrder.gamerName ? firstOrder.gamerName : "" : ""; const gamerId = firstOrder ? firstGameOrder.gamerId ? firstGameOrder.gamerId : "" : ""; const gamerData = await (await gamer.doc(gamerId).get()).data(); const gamerReminderEmail = gamerData.reminderEmail; if (gamerReminderEmail === "" || !gamerReminderEmail) { console.log( ` ${gamerName} reminder email is not detected` ); return; } let rows = gamerOrders .map( (doc: OrderData) => `...` ) let view = `<strong>Status: </strong> ${status}( `; return await sentGameHtmlEmail( gamerReminderEmail ); }; module.exports = async () => { const startDate = startOfDate(); const endDate = endOfDate(); const dateBefore = dateBeforeGameDay(); const finalizedStatusDayBefore = [ ...finalisedOrdersStatusIds, constants.DELIVERED.id, ]; let listGameOrders = await getGameOrdersMailing(startDate, endDate); let ordersStatus = listGameOrders.filter((gameOrder) => { const gameDate = DateTime.fromJSDate(gameOrder.gamePDate) .toJSDate(); if (dateBefore.getDay() === gameDate.getDay()) { return !finalizedStatusDayBefore.includes(gameOrder.gameStatus.id); } return !finalisedOrdersStatusIds.includes(gameOrder.gameStatus.id); }); let orderedByGamerId = _.orderBy( ordersStatus.map((order) => order), "gamerId" ); return await Promise.all( _.map(orderedByGamerId, (gameOrders: OrderData[]) => { return processGamerReminderEmail(gameOrders); }) ); }; |
Часовой пояс GMT +3, время: 19:52. |