UserPostRegistrationAnalyticsManager.mjs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import Queues from '../../infrastructure/Queues.js'
  2. import UserGetter from './UserGetter.js'
  3. import InstitutionsAPI from '../Institutions/InstitutionsAPI.js'
  4. import AnalyticsManager from '../Analytics/AnalyticsManager.js'
  5. const ONE_DAY_MS = 24 * 60 * 60 * 1000
  6. async function schedulePostRegistrationAnalytics(user) {
  7. await Queues.createScheduledJob(
  8. 'post-registration-analytics',
  9. { data: { userId: user._id } },
  10. ONE_DAY_MS
  11. )
  12. }
  13. async function postRegistrationAnalytics(userId) {
  14. const user = await UserGetter.promises.getUser({ _id: userId }, { email: 1 })
  15. if (!user) {
  16. return
  17. }
  18. await checkAffiliations(userId)
  19. }
  20. async function checkAffiliations(userId) {
  21. const affiliationsData =
  22. await InstitutionsAPI.promises.getUserAffiliations(userId)
  23. const hasCommonsAccountAffiliation = affiliationsData.some(
  24. affiliationData =>
  25. affiliationData.institution && affiliationData.institution.commonsAccount
  26. )
  27. if (hasCommonsAccountAffiliation) {
  28. await AnalyticsManager.setUserPropertyForUser(
  29. userId,
  30. 'registered-from-commons-account',
  31. true
  32. )
  33. }
  34. }
  35. export default {
  36. schedulePostRegistrationAnalytics,
  37. postRegistrationAnalytics,
  38. }