activity.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { Types } from 'mongoose';
  2. import Crowi from '../crowi';
  3. import ActivityDefine from '../util/activityDefine';
  4. import Subscription from '../models/subscription';
  5. import { getModelSafely } from '../util/mongoose-utils';
  6. class ActivityService {
  7. crowi!: Crowi;
  8. inAppNotificationService!: any;
  9. activityEvent!: any;
  10. constructor(crowi: Crowi) {
  11. this.crowi = crowi;
  12. this.inAppNotificationService = crowi.inAppNotificationService;
  13. this.activityEvent = crowi.event('activity');
  14. }
  15. /**
  16. * @param {Page} page
  17. * @param {User} user
  18. * @return {Promise}
  19. */
  20. createByPageUpdate = async function(page, user) {
  21. const parameters = {
  22. user: user._id,
  23. targetModel: ActivityDefine.MODEL_PAGE,
  24. target: page,
  25. action: ActivityDefine.ACTION_UPDATE,
  26. };
  27. const Activity = getModelSafely('Activity') || require('../models/activity')(this.crowi);
  28. const savedActivity = await Activity.createByParameters(parameters);
  29. return savedActivity;
  30. };
  31. // ================================↓移動==========================
  32. /**
  33. * @param {object} parameters
  34. * @return {Promise}
  35. */
  36. createByParameters = function(parameters) {
  37. const Activity = getModelSafely('Activity') || require('../models/activity')(this.crowi);
  38. return Activity.create(parameters);
  39. };
  40. /**
  41. * @param {Comment} comment
  42. * @return {Promise}
  43. */
  44. createByPageComment = function(comment) {
  45. const parameters = {
  46. user: comment.creator,
  47. targetModel: ActivityDefine.MODEL_PAGE,
  48. target: comment.page,
  49. eventModel: ActivityDefine.MODEL_COMMENT,
  50. event: comment._id,
  51. action: ActivityDefine.ACTION_COMMENT,
  52. };
  53. return this.createByParameters(parameters);
  54. };
  55. /**
  56. * @param {User} user
  57. * @return {Promise}
  58. */
  59. static findByUser = function(user) {
  60. return this.find({ user }).sort({ createdAt: -1 }).exec();
  61. };
  62. static getActionUsersFromActivities = function(activities) {
  63. return activities.map(({ user }) => user).filter((user, i, self) => self.indexOf(user) === i);
  64. };
  65. }
  66. module.exports = ActivityService;