UserOnboardingEmailManager.js 810 B

123456789101112131415161718192021222324252627
  1. const Queues = require('../../infrastructure/Queues')
  2. const EmailHandler = require('../Email/EmailHandler')
  3. const UserUpdater = require('./UserUpdater')
  4. const UserGetter = require('./UserGetter')
  5. const ONE_DAY_MS = 24 * 60 * 60 * 1000
  6. async function scheduleOnboardingEmail(user) {
  7. await Queues.getOnboardingEmailsQueue().add(
  8. { userId: user._id },
  9. { delay: ONE_DAY_MS }
  10. )
  11. }
  12. async function sendOnboardingEmail(userId) {
  13. const user = await UserGetter.promises.getUser({ _id: userId }, { email: 1 })
  14. if (user) {
  15. await EmailHandler.promises.sendEmail('userOnboardingEmail', {
  16. to: user.email,
  17. })
  18. await UserUpdater.promises.updateUser(user._id, {
  19. $set: { onboardingEmailSentAt: new Date() },
  20. })
  21. }
  22. }
  23. module.exports = { scheduleOnboardingEmail, sendOnboardingEmail }