UNPKG

@beincom/dto

Version:

Share dto for all projects of Beincom

67 lines (66 loc) 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UpdateGroupSetLog = void 0; const activity_log_base_use_case_dto_1 = require("../../activity-log-base-use-case.dto"); const enums_1 = require("../../enums"); const helpers_1 = require("../../helpers"); class PayloadDTO extends activity_log_base_use_case_dto_1.BasePayloadPropsDTO { } class DataDTO { } class UpdateGroupSetLog extends activity_log_base_use_case_dto_1.ActivityLogBaseUseCase { static toPayload(data) { return { useCase: this.useCase, eventTime: Date.now(), data, }; } static toDocument({ eventTime, data, }) { const { id, mainId, actor, originalState, currentState } = data; const groupsInOriginalState = originalState.groups || []; const groupsInCurrentState = currentState.groups || []; const combinedGroupsMap = new Map([...groupsInOriginalState, ...groupsInCurrentState].map((group) => [group.id, group])); const combinedGroupIds = [...combinedGroupsMap.keys()]; const groupIdsInOriginalState = groupsInOriginalState.map((group) => group.id); const groupIdsInCurrentState = groupsInCurrentState.map((group) => group.id); const addedGroups = combinedGroupIds .filter((groupId) => !groupIdsInOriginalState.includes(groupId)) .map((groupId) => combinedGroupsMap.get(groupId)); const removedGroups = combinedGroupIds .filter((groupId) => !groupIdsInCurrentState.includes(groupId)) .map((groupId) => combinedGroupsMap.get(groupId)); return { id, mainId, eventTime, useCase: this.useCase, eventType: this.eventType, objectType: this.objectType, actorId: actor ? actor.id : undefined, communityId: currentState.communityId, objectId: currentState.id, data: { actor: actor ? { id: actor.id } : null, object: currentState, changes: (0, helpers_1.GetPropsChanged)(originalState, currentState), addedGroups, removedGroups, }, }; } toObjectIds() { const { actorId } = this.document; return { userIds: [actorId].filter((id) => id), }; } toData(objectData) { const { actorId, data } = this.document; return Object.assign(Object.assign({}, data), { actor: objectData.users[actorId] }); } } UpdateGroupSetLog.useCase = enums_1.ACTIVITY_LOG_USE_CASES.UPDATE_GROUP_SET; UpdateGroupSetLog.eventType = enums_1.ACTIVITY_EVENT_TYPES.UPDATE; UpdateGroupSetLog.objectType = enums_1.ACTIVITY_OBJECT_TYPES.GROUP_SET; exports.UpdateGroupSetLog = UpdateGroupSetLog;