Files
calendar/packages/trpc/server/routers/viewer/admin/getSMSLockStateTeamsUsers.handler.ts
T
883d745784 feat: SMS/Whatsapp to attendee for teams (#14648)
* remove event type requires confirmation

* allow sms sending also for team (frontend)

* allow text to attendee for team (backend)

* add rate limiting for SMS (WIP)

* add functionality to lock and unlock SMS sending (+admin UI view)

* rename to smsLockState

* add ability to lock users and teams

* don't send sms if locked

* add missing imports

* fix rate limit namespace

* add translation

* fix type error

* remove prop from UsersTable

* add smsLockState to buildUser

* code clean up

* create seperate sms rate limit function

* fix type error

* add missing userId and teamId to sendSMS

* code improvements

* add User Team type

* fix marking as reviewed

* check monthly sms limit only for user

* don't lock orgs

* fix type error

* fix avatars

* fix type error

* fix type error

* fix type error

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
2024-04-23 19:48:44 +00:00

72 lines
1.4 KiB
TypeScript

import { prisma } from "@calcom/prisma";
import { SMSLockState } from "@calcom/prisma/client";
import type { TrpcSessionUser } from "../../../trpc";
type GetOptions = {
ctx: {
user: NonNullable<TrpcSessionUser>;
};
};
const getSMSLockStateTeamsUsers = async ({ ctx }: GetOptions) => {
const userSelect = {
id: true,
smsLockState: true,
email: true,
username: true,
name: true,
avatarUrl: true,
};
const teamSelect = {
id: true,
smsLockState: true,
slug: true,
name: true,
logoUrl: true,
};
const lockedUsers = await prisma.user.findMany({
where: {
smsLockState: SMSLockState.LOCKED,
},
select: userSelect,
});
const reviewNeededUsers = await prisma.user.findMany({
where: {
smsLockState: SMSLockState.REVIEW_NEEDED,
},
select: userSelect,
});
const lockedTeams = await prisma.team.findMany({
where: {
smsLockState: SMSLockState.LOCKED,
},
select: teamSelect,
});
const reviewNeededTeams = await prisma.team.findMany({
where: {
smsLockState: SMSLockState.REVIEW_NEEDED,
},
select: teamSelect,
});
const resultObj = {
users: {
locked: lockedUsers,
reviewNeeded: reviewNeededUsers,
},
teams: {
locked: lockedTeams,
reviewNeeded: reviewNeededTeams,
},
};
return resultObj;
};
export default getSMSLockStateTeamsUsers;