From cb9fa388d4c5f0daf42860e31196d7862f70d116 Mon Sep 17 00:00:00 2001 From: avicenan Date: Thu, 19 Feb 2026 08:23:12 +0700 Subject: [PATCH] add new: queue monitoring get by slug --- src/controllers/queue_monitoring.ts | 27 +++++++++++++++++++++++++++ src/routes/private.ts | 1 + 2 files changed, 28 insertions(+) diff --git a/src/controllers/queue_monitoring.ts b/src/controllers/queue_monitoring.ts index 3d10502..2038e5d 100644 --- a/src/controllers/queue_monitoring.ts +++ b/src/controllers/queue_monitoring.ts @@ -73,6 +73,33 @@ export class QueueMonitoringController { } } + static async detailBySlug(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Queue Monitoring'] + #swagger.security = [{ "bearerAuth": [] }] + #swagger.parameters['slug'] = { in: 'path', type: 'string' } + */ + try { + const schema = Joi.object().keys({ + slug: Joi.string().required().label("Queue Monitoring Slug"), + }); + + const param: any = await schema.validateAsync(req.params); + + const queueMonitoring = await QueueMonitoringModel.list({ "QueueMonitoring.slug": param.slug }).then((q) => + q.leftJoinAndSelect("QueueMonitoring.rooms", "rooms").leftJoinAndSelect("rooms.department", "department").getOne() + ); + + if (!queueMonitoring) throw { message: "Queue Monitoring Not Found" }; + + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, queueMonitoring); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_not_found, err.message); + } + } + static async create(req: Request, res: Response, next: NextFunction): Promise { /* #swagger.tags = ['Queue Monitoring'] diff --git a/src/routes/private.ts b/src/routes/private.ts index ed67c9b..4580443 100644 --- a/src/routes/private.ts +++ b/src/routes/private.ts @@ -180,6 +180,7 @@ export class RoutePrivate { app.get('/api/queue-monitoring/list', QueueMonitoringController.list) app.post('/api/queue-monitoring/create', QueueMonitoringController.create) app.get('/api/queue-monitoring/detail/:id', QueueMonitoringController.detail) + app.get('/api/queue-monitoring/:slug', QueueMonitoringController.detailBySlug) app.put('/api/queue-monitoring/update/:id', QueueMonitoringController.update) app.delete('/api/queue-monitoring/delete/:id/:hard', QueueMonitoringController.delete) app.put('/api/queue-monitoring/restore/:id', QueueMonitoringController.restore)