Files
calendar/packages/lib/server/repository/calAiPhoneNumber.ts
T
Udit TakkarandGitHub 416504240c feat: call history V1 (#23761)
* feat: call history

* chore

* refactor: move to insights

* fix: types

* chore: improvements

* fix: memberhsip logic

* chore: improvements

* fix: update types

* fix: type errors

* fix: type errors
2025-09-14 12:04:47 -03:00

55 lines
1.5 KiB
TypeScript

import { prisma } from "@calcom/prisma";
export class CalAiPhoneNumberRepository {
static async getUserPhoneNumbers(userId: number) {
return prisma.calAiPhoneNumber.findMany({
where: { userId },
select: { phoneNumber: true },
});
}
static async getOrganizationTeamPhoneNumbers(organizationId: number) {
return prisma.calAiPhoneNumber.findMany({
where: {
team: { parentId: organizationId },
},
select: { phoneNumber: true },
});
}
static async getTeamPhoneNumbers(teamIds: number[]) {
return prisma.calAiPhoneNumber.findMany({
where: { teamId: { in: teamIds } },
select: { phoneNumber: true },
});
}
static async getAccessiblePhoneNumbers({
userId,
organizationId,
isOrgOwner,
adminTeamIds,
}: {
userId: number;
organizationId?: number;
isOrgOwner: boolean;
adminTeamIds: number[];
}): Promise<string[]> {
const userPhoneNumbers = await this.getUserPhoneNumbers(userId);
let teamPhoneNumbers: Array<{ phoneNumber: string }> = [];
if (isOrgOwner && organizationId) {
teamPhoneNumbers = await this.getOrganizationTeamPhoneNumbers(organizationId);
} else if (adminTeamIds.length > 0) {
teamPhoneNumbers = await this.getTeamPhoneNumbers(adminTeamIds);
}
const allPhoneNumbers = [
...userPhoneNumbers.map((p) => p.phoneNumber),
...teamPhoneNumbers.map((p) => p.phoneNumber),
];
return Array.from(new Set(allPhoneNumbers));
}
}