update: hospital information just create
This commit is contained in:
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user