improvement: a flow added for owner users to make it possible for them to participate in treatments or tasks.
This commit is contained in:
@@ -15,6 +15,7 @@ import { CreateAppointmentDto } from './dto/create-appointment.dto';
|
||||
import { ListAppointmentsDto } from './dto/list-appointments.dto';
|
||||
import { UpdateAppointmentDto } from './dto/update-appointment.dto';
|
||||
import { TreatmentCatalogService } from '../treatment-catalog/treatment-catalog.service';
|
||||
import { hasEffectivePermission } from '../../common/membership-permissions';
|
||||
|
||||
const MS_PER_DAY = 86_400_000;
|
||||
|
||||
@@ -39,8 +40,7 @@ export class AppointmentsService {
|
||||
const members = await this.prisma.membership.findMany({
|
||||
where: {
|
||||
organizationId,
|
||||
isOwner: false,
|
||||
isActive: true,
|
||||
OR: [{ isOwner: true }, { isActive: true }],
|
||||
permissions: {
|
||||
some: {
|
||||
permission: {
|
||||
@@ -308,16 +308,10 @@ export class AppointmentsService {
|
||||
if (!m) {
|
||||
throw new BadRequestException('Provider is not a member of this organization');
|
||||
}
|
||||
if (m.isOwner) {
|
||||
throw new BadRequestException(
|
||||
'Appointments must be assigned to staff with treatment access, not the organization owner',
|
||||
);
|
||||
}
|
||||
if (!m.isActive) {
|
||||
if (!m.isOwner && !m.isActive) {
|
||||
throw new BadRequestException('Provider is not an active staff member');
|
||||
}
|
||||
const names = m.permissions.map((p) => p.permission.name);
|
||||
if (!names.includes('TAB_TREATMENT_EDIT')) {
|
||||
if (!hasEffectivePermission(m, 'TAB_TREATMENT_EDIT')) {
|
||||
throw new BadRequestException('Provider does not have treatment edit access');
|
||||
}
|
||||
}
|
||||
@@ -375,8 +369,15 @@ export class AppointmentsService {
|
||||
|
||||
private async getMembership(userId: string, organizationId: string) {
|
||||
return this.prisma.membership.findFirst({
|
||||
where: { userId, organizationId },
|
||||
include: { permissions: { include: { permission: true } } },
|
||||
where: {
|
||||
userId,
|
||||
organizationId,
|
||||
OR: [{ isOwner: true }, { isActive: true }],
|
||||
},
|
||||
include: {
|
||||
permissions: { include: { permission: true } },
|
||||
organization: { include: { type: true, plan: true } },
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user