diff --git a/handlers/dev/mcudaftarpeserta.handlers.go b/handlers/dev/mcudaftarpeserta.handlers.go index a7745b2..2ee87b4 100644 --- a/handlers/dev/mcudaftarpeserta.handlers.go +++ b/handlers/dev/mcudaftarpeserta.handlers.go @@ -1,13 +1,17 @@ package dev_handlers import ( + "cpone/models" "cpone/utils" dev_mcudaftarpeserta "cpone/views/dev/mcu/daftarpeserta" + "fmt" "github.com/labstack/echo/v4" + "go.uber.org/zap" ) type McuDaftarPesertaServices interface { + GetListMcuDaftarPeserta(id string, currentPage int, rowPerPage int) ([]models.ModelMcuDaftarPeserta, int, error) } type McuDaftarPesertaHandler struct { @@ -20,6 +24,30 @@ func NewMcuDaftarPeserta(mdp McuDaftarPesertaServices) *McuDaftarPesertaHandler } } +func (mdp *McuDaftarPesertaHandler) HandleGetMcuDaftarPeserta(c echo.Context) error { + logger, _ := zap.NewProduction() + + id := c.Param("id") + + // get listing data + dataMcuDaftarPeserta, totalPage, err := mdp.McuDaftarPesertaServices.GetListMcuDaftarPeserta(id, 1, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET LIST LAB", + zap.Any("error", err), + ) + fmt.Println(dataMcuDaftarPeserta) + return err + } + + defer logger.Sync() + logger.Info("PESERTA", + zap.Any("totalpage", totalPage), + ) + + return err +} + func (mdp *McuDaftarPesertaHandler) HandleShowMcuDaftarPeserta(c echo.Context) error { title := "Daftar Peserta" diff --git a/handlers/routes.go b/handlers/routes.go index 27819b5..2ff8b71 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -365,4 +365,9 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { devKesimpulanServices := dev_services.NewServicesKesimpulan(appStore) devKesimpuanHandler := dev_handlers.NewKesimpulanHandler(devKesimpulanServices) dev.GET("/kesimpulan/:id", devKesimpuanHandler.HandleShowKesimpulanScreen) + + // mcu daftar peserta + devMcuDaftarPesertaServices := dev_services.NewMcuDaftarPesertaServices(appStore) + devMcuDaftarPesertaHandler := dev_handlers.NewMcuDaftarPeserta(devMcuDaftarPesertaServices) + dev.GET("/mcudaftarpeserta/:id", devMcuDaftarPesertaHandler.HandleGetMcuDaftarPeserta) } diff --git a/models/mcudaftarpeserta.models.go b/models/mcudaftarpeserta.models.go new file mode 100644 index 0000000..2dc9dbe --- /dev/null +++ b/models/mcudaftarpeserta.models.go @@ -0,0 +1,15 @@ +package models + +type ModelMcuDaftarPeserta struct { + T_OrderHeaderID string `db:"T_OrderHeaderID"` + T_OrderHeaderDate string `db:"T_OrderHeaderDate"` + T_OrderHeaderLabNumber string `db:"T_OrderHeaderLabNumber"` + T_OrderHeaderM_PatientAge string `db:"T_OrderHeaderM_PatientAge"` + M_PatientID string `db:"M_PatientID"` + M_PatientNoReg string `db:"M_PatientNoReg"` + M_PatientName string `db:"M_PatientName"` + M_PatientGender string `db:"M_PatientGender"` + JenisKelamin string `db:"jenisKelamin"` + M_PatientDOB string `db:"M_PatientDOB"` + Age string `db:"age"` +} diff --git a/services/dev/mcudaftarpeserta.services.go b/services/dev/mcudaftarpeserta.services.go index cd23a5e..45af013 100644 --- a/services/dev/mcudaftarpeserta.services.go +++ b/services/dev/mcudaftarpeserta.services.go @@ -1,6 +1,14 @@ package dev_services -import "cpone/db" +import ( + "cpone/db" + "cpone/models" + dbx "cpone/package/database" + "fmt" + "math" + + "go.uber.org/zap" +) type McuDaftarPesertaServices struct { McuDaftarPesertaStore db.AppStore @@ -11,3 +19,56 @@ func NewMcuDaftarPesertaServices(uStore db.AppStore) *McuDaftarPesertaServices { McuDaftarPesertaStore: uStore, } } + +func (mdp *McuDaftarPesertaServices) GetListMcuDaftarPeserta(id string, currentPage int, rowPerPage int) ([]models.ModelMcuDaftarPeserta, int, error) { + logger, _ := zap.NewProduction() + var listDaftarPeserta []models.ModelMcuDaftarPeserta + var totalData int + offset := (currentPage - 1) * rowPerPage + + querytotal := `SELECT COUNT(*) + FROM t_orderheader + JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID + AND M_PatientIsActive = 'Y' + WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ?` + + if err := dbx.Handlex.Get(&totalData, querytotal, id); err != nil { + return nil, 0, fmt.Errorf("error querying database: %v", err) + } + + query := `SELECT T_OrderHeaderID, + T_OrderHeaderDate, + T_OrderHeaderLabNumber, + T_OrderHeaderM_PatientAge, + M_PatientID, + M_PatientNoReg, + M_PatientName, + M_PatientGender, + CASE + WHEN M_PatientGender = 'male' THEN 'Laki - Laki' + WHEN M_PatientGender = 'female' THEN 'Perempuan' + ELSE ' ' + END AS jenisKelamin, + M_PatientDOB, + FLOOR(DATEDIFF(CURDATE(), M_PatientDOB)/ 365.25) AS age + FROM t_orderheader + JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID + AND M_PatientIsActive = 'Y' + WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ? + ORDER BY M_PatientName ASC + LIMIT ? OFFSET ?` + + if err := dbx.Handlex.Select(&listDaftarPeserta, query, id, rowPerPage, offset); err != nil { + return nil, 0, fmt.Errorf("error querying database: %v", err) + } + totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage))) + + defer logger.Sync() + logger.Info("GET DATA PESERTA", + zap.Any("id", id), + zap.Any("total data", totalData), + zap.Any("peserta", listDaftarPeserta), + ) + + return listDaftarPeserta, totalPage, nil +}