@beincom/dto
Version:
Share dto for all projects of Beincom
67 lines (66 loc) • 2.83 kB
JavaScript
;
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;