InactiveProjectManager.coffee 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. async = require("async")
  2. _ = require("underscore")
  3. logger = require("logger-sharelatex")
  4. DocstoreManager = require("../Docstore/DocstoreManager")
  5. ProjectGetter = require("../Project/ProjectGetter")
  6. ProjectUpdateHandler = require("../Project/ProjectUpdateHandler")
  7. Project = require("../../models/Project").Project
  8. TrackChangesManager = require("../TrackChanges/TrackChangesManager")
  9. MILISECONDS_IN_DAY = 86400000
  10. module.exports = InactiveProjectManager =
  11. reactivateProjectIfRequired: (project_id, callback)->
  12. ProjectGetter.getProject project_id, {active:true}, (err, project)->
  13. if err?
  14. logger.err err:err, project_id:project_id, "error getting project"
  15. return callback(err)
  16. logger.log project_id:project_id, active:project.active, "seeing if need to reactivate project"
  17. if project.active
  18. return callback()
  19. DocstoreManager.unarchiveProject project_id, (err)->
  20. if err?
  21. logger.err err:err, project_id:project_id, "error reactivating project in docstore"
  22. return callback(err)
  23. ProjectUpdateHandler.markAsActive project_id, callback
  24. deactivateOldProjects: (limit = 10, daysOld = 360, callback)->
  25. oldProjectDate = new Date() - (MILISECONDS_IN_DAY * daysOld)
  26. logger.log oldProjectDate:oldProjectDate, limit:limit, daysOld:daysOld, "starting process of deactivating old projects"
  27. Project.find()
  28. .where("lastOpened").lt(oldProjectDate)
  29. .where("active").equals(true)
  30. .select("_id")
  31. .limit(limit)
  32. .exec (err, projects)->
  33. if err?
  34. logger.err err:err, "could not get projects for deactivating"
  35. jobs = _.map projects, (project)->
  36. return (cb)->
  37. InactiveProjectManager.deactivateProject project._id, cb
  38. logger.log numberOfProjects:projects?.length, "deactivating projects"
  39. async.series jobs, (err)->
  40. if err?
  41. logger.err err:err, "error deactivating projects"
  42. callback err, projects
  43. deactivateProject: (project_id, callback)->
  44. logger.log project_id:project_id, "deactivating inactive project"
  45. jobs = [
  46. (cb)-> DocstoreManager.archiveProject project_id, cb
  47. (cb)-> TrackChangesManager.archiveProject project_id, cb
  48. (cb)-> ProjectUpdateHandler.markAsInactive project_id, cb
  49. ]
  50. async.series jobs, (err)->
  51. if err?
  52. logger.err err:err, project_id:project_id, "error deactivating project"
  53. callback(err)