update: hospital information just create

This commit is contained in:
wayanrivan
2026-04-24 15:02:18 +07:00
parent 8af51a599b
commit e95c70907d
2 changed files with 31 additions and 73 deletions

View File

@ -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<void | Response> {
/*
#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);

View File

@ -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);