11import lodash , { chunk , uniq } from 'lodash'
22import Sequelize , { QueryTypes } from 'sequelize'
33
4- import { captureApiChange , memberCreateAction , memberEditProfileAction } from '@crowd/audit-logs'
4+ import {
5+ captureApiChange ,
6+ memberCreateAction ,
7+ memberEditAffiliationsAction ,
8+ memberEditProfileAction ,
9+ } from '@crowd/audit-logs'
510import {
611 DEFAULT_TENANT_ID ,
712 Error400 ,
@@ -25,6 +30,11 @@ import {
2530import { findManyLfxMemberships } from '@crowd/data-access-layer/src/lfx_memberships'
2631import { findMaintainerRoles } from '@crowd/data-access-layer/src/maintainers'
2732import { addMemberNoMerge , removeMemberToMerge } from '@crowd/data-access-layer/src/member_merge'
33+ import {
34+ deleteMemberSegmentAffiliations ,
35+ findMemberAffiliations ,
36+ insertMemberAffiliations ,
37+ } from '@crowd/data-access-layer/src/member_segment_affiliations'
2838import {
2939 MemberField ,
3040 fetchManyMemberIdentities ,
@@ -67,7 +77,6 @@ import { AttributeData } from '../attributes/attribute'
6777
6878import { IRepositoryOptions } from './IRepositoryOptions'
6979import MemberAttributeSettingsRepository from './memberAttributeSettingsRepository'
70- import MemberSegmentAffiliationRepository from './memberSegmentAffiliationRepository'
7180import SegmentRepository from './segmentRepository'
7281import SequelizeRepository from './sequelizeRepository'
7382import TenantRepository from './tenantRepository'
@@ -1128,8 +1137,31 @@ class MemberRepository {
11281137 data : MemberSegmentAffiliation [ ] ,
11291138 options : IRepositoryOptions ,
11301139 ) : Promise < void > {
1131- const affiliationRepository = new MemberSegmentAffiliationRepository ( options )
1132- await affiliationRepository . setForMember ( memberId , data )
1140+ const qx = optionsQx ( options )
1141+ await captureApiChange (
1142+ options ,
1143+ memberEditAffiliationsAction ( memberId , async ( captureOldState , captureNewState ) => {
1144+ const oldOnes = await findMemberAffiliations ( qx , memberId )
1145+ captureOldState (
1146+ oldOnes . map ( ( item ) => ( {
1147+ segmentId : item . segmentId ,
1148+ organizationId : item . organizationId ,
1149+ dateStart : item . dateStart ,
1150+ dateEnd : item . dateEnd ,
1151+ } ) ) ,
1152+ )
1153+
1154+ captureNewState ( data )
1155+
1156+ await deleteMemberSegmentAffiliations ( qx , { memberId } )
1157+
1158+ if ( data . length === 0 ) {
1159+ return
1160+ }
1161+
1162+ await insertMemberAffiliations ( qx , memberId , data )
1163+ } ) ,
1164+ )
11331165 }
11341166
11351167 static async getAffiliations (
@@ -1155,6 +1187,7 @@ class MemberRepository {
11551187 left join organizations o on o.id = msa."organizationId"
11561188 join segments s on s.id = msa."segmentId"
11571189 where msa."memberId" = :memberId
1190+ and msa."deletedAt" is null
11581191 `
11591192
11601193 const data = await seq . query ( query , {
0 commit comments