76 lines
1.4 KiB
TypeScript
76 lines
1.4 KiB
TypeScript
import { TenantUserType } from "~/application/enums/tenants/TenantUserType";
|
|
import { db } from "~/utils/db.server";
|
|
|
|
export async function getUserInvitation(id: string, tenantId?: string) {
|
|
return await db.tenantUserInvitation.findFirst({
|
|
where: {
|
|
id,
|
|
...(tenantId ? { tenantId } : {}),
|
|
pending: true,
|
|
},
|
|
include: {
|
|
tenant: true,
|
|
},
|
|
});
|
|
}
|
|
|
|
export async function getUserInvitations(tenantId?: string) {
|
|
if (!tenantId) {
|
|
return [];
|
|
}
|
|
return await db.tenantUserInvitation.findMany({
|
|
where: {
|
|
tenantId,
|
|
pending: true,
|
|
},
|
|
});
|
|
}
|
|
|
|
export async function createUserInvitation(
|
|
tenantId: string,
|
|
data: {
|
|
email: string;
|
|
firstName: string;
|
|
lastName: string;
|
|
type: TenantUserType;
|
|
fromUserId: string | null;
|
|
}
|
|
) {
|
|
const invitation = await db.tenantUserInvitation.create({
|
|
data: {
|
|
tenantId,
|
|
...data,
|
|
pending: true,
|
|
},
|
|
});
|
|
|
|
return invitation;
|
|
}
|
|
|
|
export async function updateUserInvitationPending(id: string) {
|
|
return await db.tenantUserInvitation.update({
|
|
where: {
|
|
id,
|
|
},
|
|
data: {
|
|
pending: false,
|
|
},
|
|
});
|
|
}
|
|
|
|
export async function deleteUserInvitation(id: string, tenantId?: string) {
|
|
if (tenantId) {
|
|
return await db.tenantUserInvitation.deleteMany({
|
|
where: {
|
|
id,
|
|
tenantId,
|
|
},
|
|
});
|
|
}
|
|
return await db.tenantUserInvitation.delete({
|
|
where: {
|
|
id,
|
|
},
|
|
});
|
|
}
|