From 1cc0dba1c5954fc59212f9bbbfc4523fe1d8c7a7 Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Wed, 11 Mar 2026 22:41:14 +0700 Subject: [PATCH] update: add option for order pharmacy --- src/controllers/pharmacy/item_master.ts | 61 ++++++++++++++----------- src/controllers/pharmacy/item_origin.ts | 27 ++++++++++- src/controllers/pharmacy/supplier.ts | 27 ++++++++++- src/controllers/room.ts | 37 ++++++++++++--- src/routes/private.ts | 3 ++ 5 files changed, 120 insertions(+), 35 deletions(-) diff --git a/src/controllers/pharmacy/item_master.ts b/src/controllers/pharmacy/item_master.ts index 7cbc99a..92c2f6c 100644 --- a/src/controllers/pharmacy/item_master.ts +++ b/src/controllers/pharmacy/item_master.ts @@ -75,7 +75,14 @@ export class ItemMasterController { #swagger.security = [{ "bearerAuth": [] }] */ try { - const query = await ItemMasterModel.list(); // ← hapus await disini, karena list() return QueryBuilder + const query = await ItemMasterModel.list(); + + query.select([ + "item_master.item_name", + "unit.large_unit", + "unit.small_unit", + "item_master.pack_size", + ]); const total_count_data = await query.getCount(); const list_data = await query.getMany(); @@ -213,19 +220,19 @@ export class ItemMasterController { const data = new ItemMaster() data.item_name = param.item_name, - data.generic_name = param.generic_name_id, - data.type_detail = param.item_type_detail_id, - data.category = param.item_category_id, - data.item_class = param.item_class_id, - data.item_class_detail = param.item_class_detail_id, - data.status = param.item_status_id, - data.factory = param.factory_id, - data.unit = param.unit_id, - data.pack_size = param.pack_size, - data.minimum_quantity = param.minimum_quantity, - data.minimum_sales_quantity = param.minimum_sales_quantity, - data.strength = param.strength, - data.active = param.active + data.generic_name = param.generic_name_id, + data.type_detail = param.item_type_detail_id, + data.category = param.item_category_id, + data.item_class = param.item_class_id, + data.item_class_detail = param.item_class_detail_id, + data.status = param.item_status_id, + data.factory = param.factory_id, + data.unit = param.unit_id, + data.pack_size = param.pack_size, + data.minimum_quantity = param.minimum_quantity, + data.minimum_sales_quantity = param.minimum_sales_quantity, + data.strength = param.strength, + data.active = param.active data.created_by = req.auth.data.name; await OrmHelper.DB.manager.save(data); @@ -293,19 +300,19 @@ export class ItemMasterController { if (data != null) { data.item_name = param.item_name, - data.generic_name = param.generic_name_id, - data.type_detail = param.item_type_detail_id, - data.category = param.item_category_id, - data.item_class = param.item_class_id, - data.item_class_detail = param.item_class_detail_id, - data.status = param.item_status_id, - data.factory = param.factory_id, - data.unit = param.unit_id, - data.pack_size = param.pack_size, - data.minimum_quantity = param.minimum_quantity, - data.minimum_sales_quantity = param.minimum_sales_quantity, - data.strength = param.strength, - data.active = param.active + data.generic_name = param.generic_name_id, + data.type_detail = param.item_type_detail_id, + data.category = param.item_category_id, + data.item_class = param.item_class_id, + data.item_class_detail = param.item_class_detail_id, + data.status = param.item_status_id, + data.factory = param.factory_id, + data.unit = param.unit_id, + data.pack_size = param.pack_size, + data.minimum_quantity = param.minimum_quantity, + data.minimum_sales_quantity = param.minimum_sales_quantity, + data.strength = param.strength, + data.active = param.active data.updated_by = req.auth.data.name; await repo.save(data); diff --git a/src/controllers/pharmacy/item_origin.ts b/src/controllers/pharmacy/item_origin.ts index cfddcca..e60aff2 100644 --- a/src/controllers/pharmacy/item_origin.ts +++ b/src/controllers/pharmacy/item_origin.ts @@ -68,6 +68,31 @@ export class ItemOriginController { } } + static async option(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Pharmacy - ItemOrigin'] + #swagger.security = [{ "bearerAuth": [] }] + */ + try { + const query = await ItemOriginModel.list(); + + query.select([ + "item_origin.id", + "item_origin.origin_name", + ]); + + const total_count_data = await query.getCount(); + const list_data = await query.getMany(); + const count_data = CommonHelper.countObject(list_data); + + return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, 1, total_count_data, list_data); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); + } + } + static async export(req: Request, res: Response, next: NextFunction): Promise { /* #swagger.tags = ['Pharmacy - ItemOrigin'] @@ -110,7 +135,7 @@ export class ItemOriginController { var query = await ItemOriginModel.list(filter); const data = await query.getMany(); - + const filename = "item_origin.csv"; res.setHeader('Content-Type', 'text/csv'); diff --git a/src/controllers/pharmacy/supplier.ts b/src/controllers/pharmacy/supplier.ts index f3efd11..21c3240 100644 --- a/src/controllers/pharmacy/supplier.ts +++ b/src/controllers/pharmacy/supplier.ts @@ -68,6 +68,31 @@ export class SupplierController { } } + static async option(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Pharmacy - Supplier'] + #swagger.security = [{ "bearerAuth": [] }] + */ + try { + const query = await SupplierModel.list(); + + query.select([ + "supplier.id", + "supplier.supplier_name", + ]); + + const total_count_data = await query.getCount(); + const list_data = await query.getMany(); + const count_data = CommonHelper.countObject(list_data); + + return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, 1, total_count_data, list_data); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); + } + } + static async export(req: Request, res: Response, next: NextFunction): Promise { /* #swagger.tags = ['Pharmacy - Supplier'] @@ -110,7 +135,7 @@ export class SupplierController { var query = await SupplierModel.list(filter); const data = await query.getMany(); - + const filename = "supplier.csv"; res.setHeader('Content-Type', 'text/csv'); diff --git a/src/controllers/room.ts b/src/controllers/room.ts index 3787ef5..34ab3c7 100644 --- a/src/controllers/room.ts +++ b/src/controllers/room.ts @@ -71,14 +71,39 @@ export class RoomController { const total_count_data = await res_count.getCount(); const list_data = await res_list.getMany(); const mapped_data = list_data.map((item: any) => ({ - ...item, - picture: item.picture - ? photoBaseUrl + item.picture - : null - })); + ...item, + picture: item.picture + ? photoBaseUrl + item.picture + : null + })); const count_data = CommonHelper.countObject(list_data); - return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, current_page, total_count_data, mapped_data); + return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, current_page, total_count_data, mapped_data); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); + } + } + + static async option(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Room'] + #swagger.security = [{ "bearerAuth": [] }] + */ + try { + const query = await RoomModel.list(); + + query.select([ + "Room.id", + "Room.room", + ]); + + const total_count_data = await query.getCount(); + const list_data = await query.getMany(); + const count_data = CommonHelper.countObject(list_data); + + return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, 1, total_count_data, list_data); } catch (e: unknown) { log.error(e); const err = e as Error; diff --git a/src/routes/private.ts b/src/routes/private.ts index f1783bc..1b11a1f 100644 --- a/src/routes/private.ts +++ b/src/routes/private.ts @@ -130,6 +130,7 @@ export class RoutePrivate { app.put('/api/diagnostic-procedure/restore/:id', DiagnosticProcedureController.restore) app.get('/api/room/list', RoomController.list) + app.get('/api/room/option', RoomController.option) app.post('/api/room/create', RoomController.create) app.get('/api/room/detail/:id', RoomController.detail) app.put('/api/room/update/:id', RoomController.update) @@ -247,6 +248,7 @@ export class RoutePrivate { app.put('/api/pharmacy/item-group/restore/:id', ItemGroupController.restore) app.get('/api/pharmacy/item-origin/list', ItemOriginController.list) + app.get('/api/pharmacy/item-origin/option', ItemOriginController.option) app.get('/api/pharmacy/item-origin/export', ItemOriginController.export) app.post('/api/pharmacy/item-origin/create', ItemOriginController.create) app.put('/api/pharmacy/item-origin/update/:id', ItemOriginController.update) @@ -331,6 +333,7 @@ export class RoutePrivate { app.put('/api/pharmacy/factory/restore/:id', FactoryController.restore) app.get('/api/pharmacy/supplier/list', SupplierController.list) + app.get('/api/pharmacy/supplier/option', SupplierController.option) app.get('/api/pharmacy/supplier/export', SupplierController.export) app.post('/api/pharmacy/supplier/create', SupplierController.create) app.put('/api/pharmacy/supplier/update/:id', SupplierController.update)