Files
calendar/packages/features/ee/teams/lib/deleteWorkflowRemindersOfRemovedMember.ts
T
Benny JooandGitHub ff38d6c7db refactor: Remove circular deps between @calcom/lib and @calcom/features [1] (#24399)
* add eslint config

* migrate autoLock to features

* migrate teamService to features

* migrate userCreationService

* migrate insights services to features

* migrate ProfileRepository

* update imports

* migrate filter segmen tests

* migrate filter segment repository

* migrate getBusyTimes

* migrate getLocaleFromRequest

* refactor csvUtils

* make filename clearer

* migrate getLuckyUser integration test

* migrate autoLock test to features

* wip

* refactors

* migrate useBookerUrl

* migrate more

* wip

* Migrate eventTypeRepository

* membership repository

* update imports

* update imports

* migrate

* move organization repository

* update imports

* update imports

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix tests

* fix type checks

* fix

* fix

* migrate

* update imports

* fix tests

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix
2025-10-13 12:01:02 -03:00

95 lines
2.5 KiB
TypeScript

import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository";
import prisma from "@calcom/prisma";
// cancel/delete all workflowReminders of the removed member that come from that team (org teams only)
export async function deleteWorkfowRemindersOfRemovedMember(
team: {
id: number;
parentId?: number | null;
},
memberId: number,
isOrg: boolean
) {
if (isOrg) {
// if member was removed from org, delete all workflowReminders of the removed team member that come from org workflows
const workflowRemindersToDelete = await prisma.workflowReminder.findMany({
where: {
workflowStep: {
workflow: {
teamId: team.id,
},
},
booking: {
eventType: {
userId: memberId,
},
},
},
select: {
id: true,
referenceId: true,
method: true,
},
});
await WorkflowRepository.deleteAllWorkflowReminders(workflowRemindersToDelete);
} else {
if (!team.parentId) return;
// member was removed from an org subteam
const removedWorkflows = await prisma.workflow.findMany({
where: {
OR: [
{
AND: [
{
activeOnTeams: {
some: {
teamId: team.id,
},
},
},
{
activeOnTeams: {
// Don't delete reminder if user is still part of another team that is active on this workflow
none: {
team: {
members: {
some: {
userId: memberId,
},
},
},
},
},
},
// only if workflow is not active on all team and user event types
{ isActiveOnAll: false },
],
},
],
},
});
const workflowRemindersToDelete = await prisma.workflowReminder.findMany({
where: {
workflowStep: {
workflowId: {
in: removedWorkflows?.map((workflow) => workflow.id) ?? [],
},
},
booking: {
eventType: {
userId: memberId,
},
},
},
select: {
id: true,
referenceId: true,
method: true,
},
});
await WorkflowRepository.deleteAllWorkflowReminders(workflowRemindersToDelete);
}
}