diff --git a/src/controllers/room.ts b/src/controllers/room.ts index f37ff92..975c3d6 100644 --- a/src/controllers/room.ts +++ b/src/controllers/room.ts @@ -422,6 +422,11 @@ export class RoomController { const param: { file_name: string } = await schema.validateAsync(req.body); + // Prevent deletion of files starting with "template_" + if (param.file_name.startsWith("template_")) { + return ReturnHelper.errorResponse(res, 403, 403, Language.lang.failed_delete, "Cannot delete files that start with 'template_'"); + } + // const env = process.env.NODE_ENV + '/' const fixedPath = 'uploads/room-picture/'; const file_path = fixedPath + param.file_name; @@ -442,4 +447,32 @@ export class RoomController { return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_delete, err.message); } } + + static async gettemplatepicture(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Room'] + #swagger.security = [{ "bearerAuth": [] }] + #swagger.description = 'Get all room pictures from uploads/room-picture/template directory".' + */ + try { + const filePath = 'uploads/room-picture/template/'; + if (!fs.existsSync(filePath)) { + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, []); + } + + const files = fs.readdirSync(filePath) + + const photoBaseUrl = "https://his.shiblysolution.id/service-master-data/uploads/room-picture/template/"; + const filesWithUrl = files.map(filename => ({ + name: `template/${filename}`, + url: photoBaseUrl + filename + })); + + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, filesWithUrl); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + return ReturnHelper.errorResponse(res, 500, 401, Language.lang.failed_view, err.message); + } + } } diff --git a/src/routes/private.ts b/src/routes/private.ts index 4db2044..a4e1e9c 100644 --- a/src/routes/private.ts +++ b/src/routes/private.ts @@ -139,6 +139,7 @@ export class RoutePrivate { app.put('/api/room/restore/:id', RoomController.restore) app.post('/api/room/upload-picture', RoomController.uploadpicture) app.delete('/api/room/delete-picture', RoomController.deletepicture) + app.get('/api/room/get-template-picture', RoomController.gettemplatepicture) app.get('/api/laboratory/list', LaboratoryController.list)