Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.04.2021, 00:03
Новичок на форуме
Отправить личное сообщение для typicsort Посмотреть профиль Найти все сообщения от typicsort
 
Регистрация: 20.04.2021
Сообщений: 5

Отправка 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);
      })
    );
  };

Последний раз редактировалось typicsort, 22.04.2021 в 11:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
eMail через JS konstantinopol Общие вопросы Javascript 15 12.01.2015 10:06
Эмулировать список через селект Nanto Элементы интерфейса 2 06.03.2012 11:54
Отправка формы на Email Donny Работа 4 26.07.2011 09:04
Отправка через $.post - уже 2-й день мучаюсь! Alexander666 jQuery 4 20.02.2009 16:18
отправка файла через обработчик события submit starrich AJAX и COMET 2 13.08.2008 22:29