mirror of
https://github.com/overleaf/overleaf.git
synced 2024-09-23 02:55:13 -04:00
eaa7491c2b
User onboarding email GitOrigin-RevId: 367fd8b6292024bfcad2139728c16cf00f2fb1cb
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
const { db, ObjectId } = require('../../infrastructure/mongojs')
|
|
const UserUpdater = require('./UserUpdater')
|
|
const EmailHandler = require('../Email/EmailHandler')
|
|
const logger = require('logger-sharelatex')
|
|
const async = require('async')
|
|
const _ = require('underscore')
|
|
|
|
module.exports = {
|
|
sendRecentSignupOnboardingEmails(req, res, next) {
|
|
// find all the users with no onboardingEmailSentAt and
|
|
// have signed up in the last 7 days
|
|
db.users.find(
|
|
{
|
|
onboardingEmailSentAt: null,
|
|
_id: {
|
|
$gt: ObjectId.createFromTime(Date.now() / 1000 - 7 * 24 * 60 * 60)
|
|
}
|
|
},
|
|
{ email: 1 },
|
|
function(error, users) {
|
|
if (error) {
|
|
return next(error)
|
|
}
|
|
const ids = _.map(users, function(user) {
|
|
return user._id
|
|
})
|
|
logger.log('SENDING USER ONBOARDING EMAILS TO: ', ids)
|
|
async.mapLimit(users, 10, sendOne, function(error) {
|
|
if (error) {
|
|
return next(error)
|
|
}
|
|
logger.log('DONE SENDING ONBOARDING EMAILS')
|
|
res.send(ids)
|
|
})
|
|
}
|
|
)
|
|
}
|
|
}
|
|
|
|
function sendOne(user, callback) {
|
|
var opts = {
|
|
to: user.email
|
|
}
|
|
EmailHandler.sendEmail('userOnboardingEmail', opts, function(error) {
|
|
if (error) {
|
|
return callback(error)
|
|
}
|
|
UserUpdater.updateUser(
|
|
user._id,
|
|
{ $set: { onboardingEmailSentAt: new Date() } },
|
|
function() {
|
|
callback()
|
|
}
|
|
)
|
|
})
|
|
}
|