2017-06-26 21:35:29 +00:00
|
|
|
import { model as Challenges } from '../../website/server/models/challenge';
|
|
|
|
|
import { model as User } from '../../website/server/models/user';
|
|
|
|
|
|
|
|
|
|
async function syncChallengeToMembers (challenges) {
|
2019-10-08 14:57:10 +00:00
|
|
|
const challengSyncPromises = challenges.map(async challenge => {
|
|
|
|
|
const users = await User.find({
|
2017-06-26 21:35:29 +00:00
|
|
|
// _id: '',
|
|
|
|
|
challenges: challenge._id,
|
|
|
|
|
}).exec();
|
|
|
|
|
|
2019-10-08 14:57:10 +00:00
|
|
|
const promises = [];
|
|
|
|
|
users.forEach(user => {
|
2019-12-13 13:14:57 +00:00
|
|
|
promises.push(challenge.syncTasksToUser(user));
|
2017-06-26 21:35:29 +00:00
|
|
|
promises.push(challenge.save());
|
|
|
|
|
promises.push(user.save());
|
|
|
|
|
});
|
|
|
|
|
|
2018-03-15 18:59:36 +00:00
|
|
|
return Promise.all(promises);
|
2017-06-26 21:35:29 +00:00
|
|
|
});
|
|
|
|
|
|
2019-10-08 16:36:55 +00:00
|
|
|
return Promise.all(challengSyncPromises);
|
2017-06-26 21:35:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function syncChallenges (lastChallengeDate) {
|
2019-10-08 14:57:10 +00:00
|
|
|
const query = {
|
2017-06-26 21:35:29 +00:00
|
|
|
// _id: '',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (lastChallengeDate) {
|
|
|
|
|
query.createdOn = { $lte: lastChallengeDate };
|
|
|
|
|
}
|
|
|
|
|
|
2019-10-08 14:57:10 +00:00
|
|
|
const challengesFound = await Challenges.find(query)
|
2017-06-26 21:35:29 +00:00
|
|
|
.limit(10)
|
|
|
|
|
.sort('-createdAt')
|
|
|
|
|
.exec();
|
|
|
|
|
|
2019-10-08 14:57:10 +00:00
|
|
|
const syncedChallenges = await syncChallengeToMembers(challengesFound)
|
2017-06-26 21:35:29 +00:00
|
|
|
.catch(reason => console.error(reason));
|
2019-10-08 14:57:10 +00:00
|
|
|
const lastChallenge = challengesFound[challengesFound.length - 1];
|
2017-06-26 21:35:29 +00:00
|
|
|
if (lastChallenge) syncChallenges(lastChallenge.createdAt);
|
|
|
|
|
return syncedChallenges;
|
2018-02-17 17:11:24 +00:00
|
|
|
}
|
2017-06-26 21:35:29 +00:00
|
|
|
|
2019-10-15 13:32:53 +00:00
|
|
|
export default syncChallenges;
|