update: change province, ward,subdistrict, city to tl administration

This commit is contained in:
wayanrivan
2026-04-26 10:50:37 +07:00
parent d40838eb51
commit 2a33abd39a
5 changed files with 137 additions and 80 deletions

View File

@ -25,10 +25,14 @@ const hospitalCreateUpdateSchema = {
address: Joi.string().required().label("Hospital Address"), address: Joi.string().required().label("Hospital Address"),
phone: Joi.string().required().label("Hospital Phone"), phone: Joi.string().required().label("Hospital Phone"),
logo: Joi.string().allow(null, "").label("Hospital Logo"), logo: Joi.string().allow(null, "").label("Hospital Logo"),
province: Joi.string().allow("").optional().label("Province Code"), // province: Joi.string().allow("").optional().label("Province Code"),
city: Joi.string().allow("").optional().label("City Code"), // city: Joi.string().allow("").optional().label("City Code"),
subdistrict: Joi.string().allow("").optional().label("Subdistrict Code"), // subdistrict: Joi.string().allow("").optional().label("Subdistrict Code"),
ward: Joi.string().allow("").optional().label("Ward Code"), // ward: Joi.string().allow("").optional().label("Ward Code"),
munisipo: Joi.string().allow(null, "").label("Munisipo ID"),
administrativu: Joi.string().allow(null, "").label("Administrativu ID"),
aldeia: Joi.string().allow(null, "").label("Aldeia ID"),
suco: Joi.string().allow(null, "").label("Suco ID"),
}; };
interface FileUploadRequest extends Request { interface FileUploadRequest extends Request {
@ -46,10 +50,14 @@ export class HospitalInformationController {
try { try {
const hospital = await OrmHelper.DB.getRepository(HospitalInformation) const hospital = await OrmHelper.DB.getRepository(HospitalInformation)
.createQueryBuilder("HospitalInformation") .createQueryBuilder("HospitalInformation")
.leftJoinAndSelect("HospitalInformation.province", "province") .leftJoinAndSelect("HospitalInformation.munisipo", "munisipo")
.leftJoinAndSelect("HospitalInformation.city", "city") .leftJoinAndSelect("HospitalInformation.administrativu", "administrativu")
.leftJoinAndSelect("HospitalInformation.subdistrict", "subdistrict") .leftJoinAndSelect("HospitalInformation.aldeia", "aldeia")
.leftJoinAndSelect("HospitalInformation.ward", "ward") .leftJoinAndSelect("HospitalInformation.suco", "suco")
// .leftJoinAndSelect("HospitalInformation.province", "province")
// .leftJoinAndSelect("HospitalInformation.city", "city")
// .leftJoinAndSelect("HospitalInformation.subdistrict", "subdistrict")
// .leftJoinAndSelect("HospitalInformation.ward", "ward")
.getOne(); .getOne();
if (!hospital) return ReturnHelper.errorResponse(res, 404, 404, Language.lang.failed_view, "Hospital not found"); if (!hospital) return ReturnHelper.errorResponse(res, 404, 404, Language.lang.failed_view, "Hospital not found");
@ -66,10 +74,10 @@ export class HospitalInformationController {
phone: hospital.phone, phone: hospital.phone,
logo: hospitallogo, logo: hospitallogo,
file: hospital.logo, file: hospital.logo,
province: hospital.province, munisipo: hospital.munisipo,
city: hospital.city, administrativu: hospital.administrativu,
subdistrict: hospital.subdistrict, aldeia: hospital.aldeia,
ward: hospital.ward suco: hospital.suco
}; };
return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, result); return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, result);
@ -105,10 +113,14 @@ export class HospitalInformationController {
hospitalinformation.address = param.address; hospitalinformation.address = param.address;
hospitalinformation.phone = param.phone; hospitalinformation.phone = param.phone;
hospitalinformation.logo = param.logo || existing.logo; // ✅ pertahankan logo lama kalau kosong hospitalinformation.logo = param.logo || existing.logo; // ✅ pertahankan logo lama kalau kosong
hospitalinformation.province = param.province; // hospitalinformation.province = param.province;
hospitalinformation.city = param.city; // hospitalinformation.city = param.city;
hospitalinformation.subdistrict = param.subdistrict; // hospitalinformation.subdistrict = param.subdistrict;
hospitalinformation.ward = param.ward; // hospitalinformation.ward = param.ward;
hospitalinformation.suco = param.suco;
hospitalinformation.administrativu = param.administrativu;
hospitalinformation.aldeia = param.aldeia;
hospitalinformation.munisipo = param.munisipo;
hospitalinformation.updated_by = req.auth?.data.name; hospitalinformation.updated_by = req.auth?.data.name;
} else { } else {
// ── INSERT ───────────────────────────────────────────── // ── INSERT ─────────────────────────────────────────────
@ -117,10 +129,14 @@ export class HospitalInformationController {
hospitalinformation.address = param.address; hospitalinformation.address = param.address;
hospitalinformation.phone = param.phone; hospitalinformation.phone = param.phone;
hospitalinformation.logo = param.logo; hospitalinformation.logo = param.logo;
hospitalinformation.province = param.province; // hospitalinformation.province = param.province;
hospitalinformation.city = param.city; // hospitalinformation.city = param.city;
hospitalinformation.subdistrict = param.subdistrict; // hospitalinformation.subdistrict = param.subdistrict;
hospitalinformation.ward = param.ward; // hospitalinformation.ward = param.ward;
hospitalinformation.suco = param.suco;
hospitalinformation.administrativu = param.administrativu;
hospitalinformation.aldeia = param.aldeia;
hospitalinformation.munisipo = param.munisipo;
hospitalinformation.created_by = req.auth?.data.name; hospitalinformation.created_by = req.auth?.data.name;
hospitalinformation.updated_by = req.auth?.data.name; hospitalinformation.updated_by = req.auth?.data.name;
} }

View File

@ -195,7 +195,7 @@ export class PatientGuarantorController {
if (param.is_default || param.is_default === true) { if (param.is_default || param.is_default === true) {
await OrmHelper.DB.getRepository(PatientGuarantor) await OrmHelper.DB.getRepository(PatientGuarantor)
.update({ is_default: true }, { is_default: false, updated_by: req.auth.data.name }); .update({ is_default: true }, { is_default: false, updated_by: req.auth?.data.name });
} }
const data = new PatientGuarantor() const data = new PatientGuarantor()
@ -209,10 +209,8 @@ export class PatientGuarantorController {
data.patient_group = param.patient_group_id; data.patient_group = param.patient_group_id;
data.faretype = param.faretype; data.faretype = param.faretype;
data.maximal_liability = param.maximalliability; data.maximal_liability = param.maximalliability;
data.is_default = param.is_default; data.created_by = req.auth?.data.name;
data.is_full_paid = param.is_full_paid; data.updated_by = req.auth?.data.name;
data.created_by = req.auth.data.name;
data.updated_by = req.auth.data.name;
await OrmHelper.DB.manager.save(data); await OrmHelper.DB.manager.save(data);
@ -274,13 +272,31 @@ export class PatientGuarantorController {
const repo = OrmHelper.DB.getRepository(PatientGuarantor); const repo = OrmHelper.DB.getRepository(PatientGuarantor);
const data = await repo.findOneBy({ id: param.id }); const data = await repo.findOneBy({ id: param.id });
if (data == null) {
if (data != null) {
data.guarantor_name = param.guarantor_name;
data.phone = param.phone;
data.province = param.province;
data.city = param.city;
data.zip_code = param.zip_code;
data.agreement_no = param.agreement_no;
data.agreement_desc = param.agreement_desc;
data.patient_group = param.patient_group_id;
data.faretype = param.faretype;
data.maximal_liability = param.maximalliability;
data.created_by = req.auth?.data.name;
data.updated_by = req.auth?.data.name;
await repo.save(data);
return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, data);
} else {
return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, ""); return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, "");
} }
if (param.is_default || param.is_default === true) { if (param.is_default || param.is_default === true) {
await OrmHelper.DB.getRepository(PatientGuarantor) await OrmHelper.DB.getRepository(PatientGuarantor)
.update({ is_default: true }, { is_default: false, updated_by: req.auth.data.name }); .update({ is_default: true }, { is_default: false, updated_by: req.auth?.data.name });
} }
data.guarantor_name = param.guarantor_name; data.guarantor_name = param.guarantor_name;
@ -340,11 +356,11 @@ export class PatientGuarantorController {
const existData = await repo.findOne({ where: { id: param.id } }); const existData = await repo.findOne({ where: { id: param.id } });
if (existData && !param.hard) { if (existData && !param.hard) {
existData.deleted_by = req.auth.data.name; existData.deleted_by = req.auth?.data.name;
await OrmHelper.DB.manager.save(existData); await OrmHelper.DB.manager.save(existData);
} }
const affected = (!param.hard ? await repo.softDelete({ id: param.id }) : await repo.delete({ id: param.id })).affected; const affected = (!param.hard ? await repo.softDelete({ id: param.id }) : await repo.delete({ id: param.id })).affected ?? 0;
if (affected > 0) { if (affected > 0) {
return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {}); return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {});
@ -382,7 +398,7 @@ export class PatientGuarantorController {
const repo = OrmHelper.DB.getRepository(PatientGuarantor); const repo = OrmHelper.DB.getRepository(PatientGuarantor);
const affected = (await repo.restore({ id: param.id })).affected; const affected = (await repo.restore({ id: param.id })).affected ?? 0;
if (affected > 0) { if (affected > 0) {
return ReturnHelper.successResponseAny(res, 200, Language.lang.success_restore, {}); return ReturnHelper.successResponseAny(res, 200, Language.lang.success_restore, {});

View File

@ -251,10 +251,10 @@ export class PharmacyInfoController {
.required() .required()
.label('Default Room'), .label('Default Room'),
province: Joi.string().allow("").optional().label("Province Code"), // province: Joi.string().allow("").optional().label("Province Code"),
city: Joi.string().allow("").optional().label("City Code"), // city: Joi.string().allow("").optional().label("City Code"),
subdistrict: Joi.string().allow("").optional().label("Subdistrict Code"), // subdistrict: Joi.string().allow("").optional().label("Subdistrict Code"),
ward: Joi.string().allow("").optional().label("Ward Code"), // ward: Joi.string().allow("").optional().label("Ward Code"),
}); });
const param: any = await schema.validateAsync(req.body); const param: any = await schema.validateAsync(req.body);
@ -262,17 +262,17 @@ export class PharmacyInfoController {
const data = new PharmacyInfo() const data = new PharmacyInfo()
data.name = param.name, data.name = param.name,
data.address = param.address data.address = param.address
// data.munisipiu = param.munisipiu, data.munisipiu = param.munisipiu,
// data.postu_admin = param.postu_admin data.postu_admin = param.postu_admin
// data.suco = param.suco data.suco = param.suco
// data.aldeia = param.aldeia data.aldeia = param.aldeia
data.phone = param.phone data.phone = param.phone
data.default_room = param.default_room_id data.default_room = param.default_room_id
data.logo = param.logo data.logo = param.logo
data.province = param.province // data.province = param.province
data.city = param.city // data.city = param.city
data.subdistrict = param.subdistrict // data.subdistrict = param.subdistrict
data.ward = param.ward // data.ward = param.ward
data.created_by = req.auth?.data.name; data.created_by = req.auth?.data.name;
await OrmHelper.DB.manager.save(data); await OrmHelper.DB.manager.save(data);
@ -329,21 +329,42 @@ export class PharmacyInfoController {
.required() .required()
.label('Address'), .label('Address'),
province: Joi.string() munisipiu: Joi.string()
.allow("", null) .uuid()
.label('Province'), .required()
.label('Munisipiu'),
city: Joi.string() postu_admin: Joi.string()
.allow("", null) .uuid()
.label('City'), .required()
.label('Postu Admin'),
subdistrict: Joi.string() suco: Joi.string()
.allow("", null) .uuid()
.label('Subdistrict'), .required()
.label('Suco'),
ward: Joi.string() aldeia: Joi.string()
.allow("", null) .uuid()
.label('Ward'), .required()
.label('Aldeia'),
// province: Joi.string()
// .allow("", null)
// .label('Province'),
// city: Joi.string()
// .allow("", null)
// .label('City'),
// subdistrict: Joi.string()
// .allow("", null)
// .label('Subdistrict'),
// ward: Joi.string()
// .allow("", null)
// .label('Ward'),
}); });
req.body.id = req.params['id']; req.body.id = req.params['id'];
@ -357,17 +378,17 @@ export class PharmacyInfoController {
if (data != null) { if (data != null) {
data.name = param.name, data.name = param.name,
data.address = param.address data.address = param.address
// data.munisipiu = param.munisipiu, data.munisipiu = param.munisipiu,
// data.postu_admin = param.postu_admin data.postu_admin = param.postu_admin
// data.suco = param.suco data.suco = param.suco
// data.aldeia = param.aldeia data.aldeia = param.aldeia
data.phone = param.phone data.phone = param.phone
data.default_room = param.default_room_id data.default_room = param.default_room_id
data.logo = param.logo data.logo = param.logo
data.province = param.province // data.province = param.province
data.city = param.city // data.city = param.city
data.subdistrict = param.subdistrict // data.subdistrict = param.subdistrict
data.ward = param.ward // data.ward = param.ward
data.updated_by = req.auth?.data.name; data.updated_by = req.auth?.data.name;
await repo.save(data); await repo.save(data);
@ -419,7 +440,7 @@ export class PharmacyInfoController {
await OrmHelper.DB.manager.save(existData); await OrmHelper.DB.manager.save(existData);
} }
const affected = (!param.hard ? await repo.softDelete({ id: param.id }) : await repo.delete({ id: param.id })).affected; const affected = (!param.hard ? await repo.softDelete({ id: param.id }) : await repo.delete({ id: param.id })).affected ?? 0;
if (affected > 0) { if (affected > 0) {
return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {}); return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {});
@ -457,7 +478,7 @@ export class PharmacyInfoController {
const repo = OrmHelper.DB.getRepository(PharmacyInfo); const repo = OrmHelper.DB.getRepository(PharmacyInfo);
const affected = (await repo.restore({ id: param.id })).affected; const affected = (await repo.restore({ id: param.id })).affected ?? 0;
if (affected > 0) { if (affected > 0) {
return ReturnHelper.successResponseAny(res, 200, Language.lang.success_restore, {}); return ReturnHelper.successResponseAny(res, 200, Language.lang.success_restore, {});

View File

@ -19,10 +19,10 @@ export class PharmacyInfoModel {
.leftJoinAndSelect("pharmacy_info.postu_admin", "postu_admin") .leftJoinAndSelect("pharmacy_info.postu_admin", "postu_admin")
.leftJoinAndSelect("pharmacy_info.suco", "suco") .leftJoinAndSelect("pharmacy_info.suco", "suco")
.leftJoinAndSelect("pharmacy_info.aldeia", "aldeia") .leftJoinAndSelect("pharmacy_info.aldeia", "aldeia")
.leftJoinAndSelect("pharmacy_info.province", "province") // .leftJoinAndSelect("pharmacy_info.province", "province")
.leftJoinAndSelect("pharmacy_info.city", "city") // .leftJoinAndSelect("pharmacy_info.city", "city")
.leftJoinAndSelect("pharmacy_info.subdistrict", "subdistrict") // .leftJoinAndSelect("pharmacy_info.subdistrict", "subdistrict")
.leftJoinAndSelect("pharmacy_info.ward", "ward"); // .leftJoinAndSelect("pharmacy_info.ward", "ward");
if (whereAttr.length != 0) { if (whereAttr.length != 0) {
query = query.where(whereAttr.join(" and "), whereVal); query = query.where(whereAttr.join(" and "), whereVal);
} }

View File

@ -241,10 +241,14 @@ const doc = {
$address: "Hospital Address", $address: "Hospital Address",
$phone: "Hospital Phone", $phone: "Hospital Phone",
$logo: "Hospital Logo", $logo: "Hospital Logo",
$province: "province code", // $province: "province code",
$city: "city code", // $city: "city code",
$subdistrict: "subdistrict code", // $subdistrict: "subdistrict code",
$ward: "ward code", // $ward: "ward code",
$munisipo: "Munisipo ID",
$administrativu: "Administrativu ID",
$aldeia: "Aldeia ID",
$suco: "Suco ID",
}, },
files: { files: {
$file_name: "File Name", $file_name: "File Name",
@ -333,16 +337,16 @@ const doc = {
$logo: "Logo (string, max 256)", $logo: "Logo (string, max 256)",
$name: "Name (string, max 256)", $name: "Name (string, max 256)",
$address: "Address (string, max 500)", $address: "Address (string, max 500)",
// $munisipiu: "Munisipiu ID (UUID)", $munisipiu: "Munisipiu ID (UUID)",
// $postu_admin: "Postu Admin ID (UUID)", $postu_admin: "Postu Admin ID (UUID)",
// $suco: "Suco ID (UUID)", $suco: "Suco ID (UUID)",
// $aldeia: "Aldeia ID (UUID)", $aldeia: "Aldeia ID (UUID)",
$phone: "Phone (string, max 30, optional)", $phone: "Phone (string, max 30, optional)",
$default_room_id: "Default Room ID (UUID)", $default_room_id: "Default Room ID (UUID)",
$province: "Province Code", // $province: "Province Code",
$city: "City Code", // $city: "City Code",
$subdistrict: "Subdistrict Code", // $subdistrict: "Subdistrict Code",
$ward: "Ward Code", // $ward: "Ward Code",
}, },
item_price: { item_price: {
$item_master_id: "Item Master ID (required, UUID)", $item_master_id: "Item Master ID (required, UUID)",