From e95c70907d774b7d70ce46882e1d05eb8277db4d Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Fri, 24 Apr 2026 15:02:18 +0700 Subject: [PATCH] update: hospital information just create --- src/controllers/hospital_information.ts | 103 +++++++----------------- src/routes/private.ts | 1 - 2 files changed, 31 insertions(+), 73 deletions(-) diff --git a/src/controllers/hospital_information.ts b/src/controllers/hospital_information.ts index e91d6d4..04216b7 100644 --- a/src/controllers/hospital_information.ts +++ b/src/controllers/hospital_information.ts @@ -88,89 +88,48 @@ export class HospitalInformationController { #swagger.requestBody = { required: true, content: { "application/json": { schema: { $ref: "#/components/schemas/hospitalinformation" } } } } */ const queryRunner = OrmHelper.DB.createQueryRunner(); + await queryRunner.connect(); await queryRunner.startTransaction(); try { - const schema = Joi.object().keys({ - ...hospitalCreateUpdateSchema, - }); - + const schema = Joi.object().keys({ ...hospitalCreateUpdateSchema }); let param: any = await schema.validateAsync(req.body); - const hospital = await OrmHelper.DB.getRepository(HospitalInformation).findOne({ - where: {} - }); + const existing = await OrmHelper.DB.getRepository(HospitalInformation).findOne({ where: {} }); - if (hospital) throw { message: "Hospital is already found, you cannot create a new one" }; + let hospitalinformation: HospitalInformation; + + if (existing) { + // ── UPDATE ───────────────────────────────────────────── + hospitalinformation = existing; + hospitalinformation.name = param.name; + hospitalinformation.address = param.address; + hospitalinformation.phone = param.phone; + hospitalinformation.logo = param.logo || existing.logo; // ✅ pertahankan logo lama kalau kosong + hospitalinformation.province = param.province; + hospitalinformation.city = param.city; + hospitalinformation.subdistrict = param.subdistrict; + hospitalinformation.ward = param.ward; + hospitalinformation.updated_by = req.auth?.data.name; + } else { + // ── INSERT ───────────────────────────────────────────── + hospitalinformation = new HospitalInformation(); + hospitalinformation.name = param.name; + hospitalinformation.address = param.address; + hospitalinformation.phone = param.phone; + hospitalinformation.logo = param.logo; + hospitalinformation.province = param.province; + hospitalinformation.city = param.city; + hospitalinformation.subdistrict = param.subdistrict; + hospitalinformation.ward = param.ward; + hospitalinformation.created_by = req.auth?.data.name; + hospitalinformation.updated_by = req.auth?.data.name; + } - let hospitalinformation = new HospitalInformation(); - hospitalinformation.name = param.name; - hospitalinformation.address = param.address; - hospitalinformation.phone = param.phone; - hospitalinformation.logo = param.logo; - hospitalinformation.province = param.province; - hospitalinformation.city = param.city; - hospitalinformation.subdistrict = param.subdistrict; - hospitalinformation.ward = param.ward; - hospitalinformation.created_by = req.auth?.data.name; - hospitalinformation.updated_by = req.auth?.data.name; await queryRunner.manager.save(hospitalinformation); - await queryRunner.commitTransaction(); return ReturnHelper.successResponseAny(res, 200, Language.lang.success_insert, hospitalinformation); - } catch (e: unknown) { - await queryRunner.rollbackTransaction(); - log.error(e); - const err = e as Error; - return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); - } finally { - await queryRunner.release(); - } - } - static async update(req: Request, res: Response, next: NextFunction): Promise { - /* - #swagger.tags = ['Hospital Information'] - #swagger.security = [{ "bearerAuth": [] }] - #swagger.parameters['id'] = { description: '', in: 'path', type: 'string' } - #swagger.requestBody = { required: true, content: { "application/json": { schema: { $ref: "#/components/schemas/hospitalinformation" } } } } - */ - const queryRunner = OrmHelper.DB.createQueryRunner(); - await queryRunner.startTransaction(); - - try { - req.body.id = req.params["id"]; - - const schema = Joi.object().keys({ - id: Joi.string().uuid().required().label("Hospital Information ID"), - ...hospitalCreateUpdateSchema, - }); - - let param: any = await schema.validateAsync(req.body); - - const hospital = await OrmHelper.DB.getRepository(HospitalInformation).findOne({ - where: { id: param.id } - }); - - if (!hospital) throw { message: "Hospital " + Language.lang.failed_not_found }; - - if (param.logo == "" || param.logo == null || param.logo == undefined) param.logo = hospital.logo; - - let hospitalinformation = new HospitalInformation(); - hospitalinformation.id = param.id; - hospitalinformation.name = param.name; - hospitalinformation.address = param.address; - hospitalinformation.phone = param.phone; - hospitalinformation.logo = param.logo ? param.logo : hospital.logo; - hospitalinformation.province = param.province; - hospitalinformation.city = param.city; - hospitalinformation.subdistrict = param.subdistrict; - hospitalinformation.ward = param.ward; - hospitalinformation.updated_by = req.auth?.data.name; - await queryRunner.manager.save(hospitalinformation); - - await queryRunner.commitTransaction(); - return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, hospitalinformation); } catch (e: unknown) { await queryRunner.rollbackTransaction(); log.error(e); diff --git a/src/routes/private.ts b/src/routes/private.ts index d269090..cd6e67a 100644 --- a/src/routes/private.ts +++ b/src/routes/private.ts @@ -276,7 +276,6 @@ export class RoutePrivate { app.get("/api/hospital-information/view", HospitalInformationController.view); app.post("/api/hospital-information/create", HospitalInformationController.create); - app.put("/api/hospital-information/update/:id", HospitalInformationController.update); app.post("/api/hospital-information/upload-logo", HospitalInformationController.uploadlogo); app.delete("/api/hospital-information/delete-logo", HospitalInformationController.deletelogo);