diff --git a/src/modules/visits/server/router.ts b/src/modules/visits/server/router.ts index e0a22c12..6e43b170 100644 --- a/src/modules/visits/server/router.ts +++ b/src/modules/visits/server/router.ts @@ -256,7 +256,7 @@ const userRouter: FastifyPluginCallback = async (fastify, opts) => { `The ${req.office.name} office doesn't support desk reservation` ) } - return reply.send(req.office.areas) + return reply.send(req.office.areas?.filter((x) => x.available) || []) } ) @@ -287,6 +287,12 @@ const userRouter: FastifyPluginCallback = async (fastify, opts) => { `The ${office.name} office doesn't support desk reservation` ) } + const availableAreaIds = office + .areas!.filter((x) => x.available) + .map((x) => x.id) + if (visits.some((x) => !availableAreaIds.includes(x.areaId))) { + return reply.throw.badParams('Request contains unavailable areas') + } try { await fastify.sequelize.transaction(async (t) => { @@ -472,7 +478,8 @@ const userRouter: FastifyPluginCallback = async (fastify, opts) => { ) const desks = req.office - .areas!.map((a) => + .areas!.filter((a) => a.available) + .map((a) => a.desks.map((d) => ({ areaId: a.id, deskId: d.id, diff --git a/src/server/app-config/schemas.ts b/src/server/app-config/schemas.ts index 883c3b94..7ca375fa 100644 --- a/src/server/app-config/schemas.ts +++ b/src/server/app-config/schemas.ts @@ -69,6 +69,7 @@ export const officeAreaDesk = z export const officeArea = z.object({ id: z.string(), + available: z.boolean().default(true), name: z.string(), capacity: z.number().min(1), map: z.string(),