diff --git a/src/controllers/employee-controller.ts b/src/controllers/employee-controller.ts index 2eda377..163cc0e 100644 --- a/src/controllers/employee-controller.ts +++ b/src/controllers/employee-controller.ts @@ -783,7 +783,35 @@ export class EmployeeController extends Controller { where: { masterId: employeeId }, }); } + + @Get("{employeeId}/image") + async getImageByEmployeeId(@Request() req: RequestWithUser, @Path() employeeId: string) { + const url = await presignedGetObjectIfExist(MINIO_BUCKET, imageLocation(employeeId), 60 * 60); + + if (!url) { + throw new HttpError(HttpStatus.NOT_FOUND, "Image cannot be found", "imageNotFound"); + } + + return req.res?.redirect(url); + } + + @Put("{employeeId}/image") + @Security("keycloak", MANAGE_ROLES) + async setImageByEmployeeId(@Request() req: RequestWithUser, @Path() employeeId: string) { + const record = await prisma.employee.findFirst({ + where: { id: employeeId }, + }); + + if (!record) { + throw new HttpError(HttpStatus.NOT_FOUND, "Employee cannot be found.", "employeeNotFound"); + } + + return req.res?.redirect( + await minio.presignedPutObject(MINIO_BUCKET, imageLocation(employeeId), 12 * 60 * 60), + ); + } } + @Route("api/v1/employee/{employeeId}/attachment") @Tags("Employee") @Security("keycloak")