Skip to content

Commit 2373dae

Browse files
authored
Correct FieldRegion's zone change to only migrate zone directors for that region (#3502)
1 parent b7892d4 commit 2373dae

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

src/components/project/project-member/handlers/regions-zone-changes-applies-director-change-to-project-members.handler.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export class RegionsZoneChangesAppliesDirectorChangeToProjectMembersHandler {
3333
oldDirector.id,
3434
newDirector.id,
3535
'FieldOperationsDirector',
36+
event.updated.id,
3637
);
3738

3839
this.logger.notice(

src/components/project/project-member/project-member.gel.repository.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,22 +77,26 @@ export class ProjectMemberGelRepository
7777
oldDirector: ID<'User'>,
7878
newDirector: ID<'User'>,
7979
role: Role,
80+
region?: ID<'FieldRegion'>,
8081
) {
8182
return await this.db.run(this.replaceMembershipsOnOpenProjectsQuery, {
8283
oldDirector,
8384
newDirector,
8485
role,
86+
region,
8587
});
8688
}
8789
private readonly replaceMembershipsOnOpenProjectsQuery = e.params(
8890
{
8991
oldDirector: e.uuid,
9092
newDirector: e.uuid,
9193
role: e.Role,
94+
region: e.optional(e.uuid),
9295
},
9396
($) => {
9497
const oldDirector = e.cast(e.User, $.oldDirector);
9598
const newDirector = e.cast(e.User, $.newDirector);
99+
const region = e.cast(e.FieldRegion, $.region);
96100

97101
const members = e.select(e.Project.members, (member) => ({
98102
filter: e.all(
@@ -101,6 +105,14 @@ export class ProjectMemberGelRepository
101105
e.op(member.active, '=', true),
102106
e.op($.role, 'in', member.roles),
103107
e.op(member.project.status, 'in', e.set('Active', 'InDevelopment')),
108+
e.op(
109+
'if',
110+
e.op('exists', region),
111+
'then',
112+
e.op(member.project.fieldRegion, '=', region),
113+
'else',
114+
true,
115+
),
104116
),
105117
),
106118
}));

src/components/project/project-member/project-member.repository.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ export class ProjectMemberRepository extends DtoRepository(ProjectMember) {
205205
oldDirector: ID<'User'>,
206206
newDirector: ID<'User'>,
207207
role: Role,
208+
// This could be replaced with Filters once those are abstracted for Gel.
209+
region?: ID<'FieldRegion'>,
208210
) {
209211
const nowVal = DateTime.now();
210212
const now = variable('$now');
@@ -232,7 +234,10 @@ export class ProjectMemberRepository extends DtoRepository(ProjectMember) {
232234
user: { id: oldDirector },
233235
active: true,
234236
roles: [role],
235-
project: { status: ['Active', 'InDevelopment'] },
237+
project: {
238+
status: ['Active', 'InDevelopment'],
239+
...(region ? { fieldRegion: { id: region } } : {}),
240+
},
236241
}),
237242
)
238243
.apply(

0 commit comments

Comments
 (0)