UserOnboardingEmailManager.js 822 B

12345678910111213141516171819202122232425262728
  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.createScheduledJob(
  8. 'emails-onboarding',
  9. { data: { userId: user._id } },
  10. ONE_DAY_MS
  11. )
  12. }
  13. async function sendOnboardingEmail(userId) {
  14. const user = await UserGetter.promises.getUser({ _id: userId }, { email: 1 })
  15. if (user) {
  16. await EmailHandler.promises.sendEmail('userOnboardingEmail', {
  17. to: user.email,
  18. })
  19. await UserUpdater.promises.updateUser(user._id, {
  20. $set: { onboardingEmailSentAt: new Date() },
  21. })
  22. }
  23. }
  24. module.exports = { scheduleOnboardingEmail, sendOnboardingEmail }