From 0b1cd60738b43f6955d1b478ee902619705a2f7d Mon Sep 17 00:00:00 2001 From: sasadib Date: Fri, 19 Jun 2026 17:04:46 +0700 Subject: [PATCH] Use request host for internal API URLs --- handlers/corporate/account.handlers.go | 10 +- .../mcudetail/tabdaftarpeserta.handler.go | 10 +- handlers/public/login.handlers.go | 25 +++-- services/corporate/account.services.go | 30 ++---- .../mcudetail/tabdaftarpeserta.services.go | 102 ++++++++++-------- services/public/login.services.go | 24 +++-- utils/requesturl.utils.go | 18 ++++ 7 files changed, 125 insertions(+), 94 deletions(-) create mode 100644 utils/requesturl.utils.go diff --git a/handlers/corporate/account.handlers.go b/handlers/corporate/account.handlers.go index 4e9ce6a..33f4861 100644 --- a/handlers/corporate/account.handlers.go +++ b/handlers/corporate/account.handlers.go @@ -15,8 +15,8 @@ import ( ) type AccountService interface { - ChangePasswordPIC(host string, token string, currPassword string, newPassword string) (models.ResponseStatus, error) - ChangePasswordPAT(token string, currPassword string, newPassword string) (models.ResponseStatus, error) + ChangePasswordPIC(host string, token string, currPassword string, newPassword string, baseURL string) (models.ResponseStatus, error) + ChangePasswordPAT(token string, currPassword string, newPassword string, baseURL string) (models.ResponseStatus, error) } func NewAccountHandler(as AccountService) *AccountHandler { @@ -97,8 +97,10 @@ func (as *AccountHandler) HandleChangePassword(c echo.Context) error { return utils.ViewMulti(c, []templ.Component{toast, newBody}) } + baseURL := utils.RequestBaseURL(c.Request()) + if userGroup == "pic" { - resp, err := as.AccountService.ChangePasswordPIC(h, token, old_pass, new_pass) + resp, err := as.AccountService.ChangePasswordPIC(h, token, old_pass, new_pass, baseURL) if err != nil { newBody := sidebaruserprofile.ModalGantiPassword() toast := customtoastv2.CustomToastV2Show("Warning", err.Error(), "warning") @@ -108,7 +110,7 @@ func (as *AccountHandler) HandleChangePassword(c echo.Context) error { } if userGroup == "patient" { - resp, err := as.AccountService.ChangePasswordPAT(token, old_pass, new_pass) + resp, err := as.AccountService.ChangePasswordPAT(token, old_pass, new_pass, baseURL) if err != nil { newBody := sidebaruserprofile.ModalGantiPassword() toast := customtoastv2.CustomToastV2Show("Warning", "Error ganti password pat", "warning") diff --git a/handlers/corporate/mcudetail/tabdaftarpeserta.handler.go b/handlers/corporate/mcudetail/tabdaftarpeserta.handler.go index a8fc128..75d1e77 100644 --- a/handlers/corporate/mcudetail/tabdaftarpeserta.handler.go +++ b/handlers/corporate/mcudetail/tabdaftarpeserta.handler.go @@ -17,11 +17,11 @@ import ( type TabDaftarPesertaServices interface { SearchDaftarPesertaMCU(mcuID string, keyword string, page int, perPage int) ([]models.ModelMcuDaftarPeserta, int, error) - GenerataPasswordMCU(mgmMCUID string, host string) (models.GeneratePasswordResponse, error) + GenerataPasswordMCU(mgmMCUID string, baseURL string) (models.GeneratePasswordResponse, error) GetAkunPeserta(patientID string) (models.AuthPatient, error) GetListReportPesertaV4(orderheaderID string, staffname string) ([]models.TabViewReportMcu, error) GetListReportPesertaV5(orderheaderID string, mcuid string, staffname string) ([]models.TabViewReportMcu, error) - ResetPasswordPeserta(token string, newPassword string, email string, authuserid string) (models.ResponseStatus, error) + ResetPasswordPeserta(token string, newPassword string, email string, authuserid string, baseURL string) (models.ResponseStatus, error) DetailTestdanPaket(orderheaderID string) ([]models.TableTestPaket, error) GetListAttachmentFile(orderheaderID string) ([]models.AttachmentFIle, error) } @@ -363,7 +363,8 @@ func (tdp *TabDaftarPesertaHandlers) HandleDialogGenPass(c echo.Context) error { pageparam := c.FormValue("currpage" + paginat_id) msg := "Apakah anda yakin untuk me-generate password untuk seluruh peserta" - resp, err := tdp.TabDaftarPesertaServices.GenerataPasswordMCU(id, "") + baseURL := utils.RequestBaseURL(c.Request()) + resp, err := tdp.TabDaftarPesertaServices.GenerataPasswordMCU(id, baseURL) if err != nil { body_pass := corporate_daftarpeserta.Body_GenPass(dialog_passbody_id, msg, corporate_daftarpeserta.JSShowModal("")) toast := customtoastv2.CustomToastV2Show("Warning", "Gagal generate password peserta", "warning") @@ -637,7 +638,8 @@ func (tdp *TabDaftarPesertaHandlers) HandleAkun(c echo.Context) error { return utils.ViewMulti(c, ret) } - resp, err := tdp.TabDaftarPesertaServices.ResetPasswordPeserta(token, newPass, akunEmail, akunID) + baseURL := utils.RequestBaseURL(c.Request()) + resp, err := tdp.TabDaftarPesertaServices.ResetPasswordPeserta(token, newPass, akunEmail, akunID, baseURL) body_err := corporate_daftarpeserta.Body_Account( dialog_akunbody_id, models.CustomTextFieldv2Prm{ diff --git a/handlers/public/login.handlers.go b/handlers/public/login.handlers.go index b409a73..ce83dae 100644 --- a/handlers/public/login.handlers.go +++ b/handlers/public/login.handlers.go @@ -16,7 +16,7 @@ import ( type LoginService interface { CheckIsAccountCpone(email string) (string, error) CheckAccountHasLocation(email string) (bool, error) - MultiSignInV2(username string, password string) (models.Response, error) + MultiSignInV2(username string, password string, baseURL string) (models.Response, error) } func NewLoginHandler(us LoginService) *LoginHandler { @@ -44,7 +44,9 @@ func (lh *LoginHandler) HandleSignIn(c echo.Context) error { defer logger.Sync() logger.Info("Params", zap.Any("username", username), zap.Any("pass", password)) - resp, err := lh.LoginService.MultiSignInV2(username, password) + // get the server hostname + baseURL := utils.RequestBaseURL(c.Request()) + resp, err := lh.LoginService.MultiSignInV2(username, password, baseURL) if err != nil { defer logger.Sync() logger.Info("Error", zap.Any("error multi signin", err)) @@ -103,12 +105,12 @@ func (lh *LoginHandler) HandleSignIn(c echo.Context) error { htmx.on("htmx:configRequest", (e)=> { e.detail.headers["Authorization"] = "Bearer ` + resp.Data.Token + `" - }) + }) setTimeout(() => { htmx.ajax('GET', '/login/redirect?url=` + url + `') }, 200) - + ` c.Response().Header().Set("HX-Trigger", "script") return c.String(http.StatusOK, store) @@ -186,7 +188,7 @@ func (lh *LoginHandler) HandleAutoLoginPage(c echo.Context) error { } }) }, 200) - + ` c.Response().Header().Set("HX-Trigger", "script") return c.String(http.StatusOK, redirect) @@ -215,8 +217,10 @@ func (lh *LoginHandler) HandleSignInV2(c echo.Context) error { return c.String(http.StatusOK, utype) } + // get the server hostname + baseURL := utils.RequestBaseURL(c.Request()) // resp, err := lh.LoginService.MultiSignIn(username, password, "") - resp, err := lh.LoginService.MultiSignInV2(username, password) + resp, err := lh.LoginService.MultiSignInV2(username, password, baseURL) if err != nil { logger.Info("[ERROR]", zap.Any("error multi sigin: ", err)) @@ -268,7 +272,7 @@ func (lh *LoginHandler) HandleSignInV2(c echo.Context) error { htmx.on("htmx:configRequest", (e)=> { e.detail.headers["Authorization"] = "Bearer ` + resp.Data.Token + `" - }) + }) setTimeout(() => { htmx.ajax('GET', '/login/redirect?url=` + url + `') @@ -286,8 +290,11 @@ func (lh *LoginHandler) HandleSignInV3(c echo.Context) error { username := c.FormValue("username") password := c.FormValue("password") + // get the server hostname + baseURL := utils.RequestBaseURL(c.Request()) + // check is type cpone and exist in location - resp, err := lh.LoginService.MultiSignInV2(username, password) + resp, err := lh.LoginService.MultiSignInV2(username, password, baseURL) if err != nil { logger.Error("[ERROR]", zap.Any("multi signin process: ", err)) ret := public_login.ShowLogin("Login", public_login.MainLogin(false), public_login.CssLogin(), public_login.JsLogin()) @@ -337,7 +344,7 @@ func (lh *LoginHandler) HandleSignInV3(c echo.Context) error { htmx.on("htmx:configRequest", (e)=> { e.detail.headers["Authorization"] = "Bearer ` + resp.Data.Token + `" - }) + }) setTimeout(() => { htmx.ajax('GET', '/login/redirect?url=` + url + `') diff --git a/services/corporate/account.services.go b/services/corporate/account.services.go index a969e48..3724c43 100644 --- a/services/corporate/account.services.go +++ b/services/corporate/account.services.go @@ -8,6 +8,7 @@ import ( "encoding/json" "io" "net/http" + "strings" ) type AccountService struct { @@ -20,10 +21,13 @@ func NewAccountService(aStore db.AppStore) *AccountService { } } -func (as *AccountService) ChangePasswordPIC(host string, token string, currPassword string, newPassword string) (models.ResponseStatus, error) { +func (as *AccountService) ChangePasswordPIC(host string, token string, currPassword string, newPassword string, baseURL string) (models.ResponseStatus, error) { var ret models.ResponseStatus - uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/change_password_pic" + if strings.TrimSpace(baseURL) == "" { + baseURL = "https://" + config.Data.Get("servername") + } + uri := strings.TrimRight(baseURL, "/") + "/one-api/mockup/system/menu/change_password_pic" params, _ := json.Marshal(map[string]string{ "new": newPassword, @@ -63,25 +67,13 @@ func (as *AccountService) ChangePasswordPIC(host string, token string, currPassw return ret, nil } -func (as *AccountService) ChangePasswordPAT(token string, currPassword string, newPassword string) (models.ResponseStatus, error) { +func (as *AccountService) ChangePasswordPAT(token string, currPassword string, newPassword string, baseURL string) (models.ResponseStatus, error) { var ret models.ResponseStatus - uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/change_password_pat" - - // params := url.Values{} - // params.Add("new", newPassword) - // params.Add("old", currPassword) - // params.Add("token", token) - - // req, err := http.PostForm(uri, params) - // if err != nil { - // ret = models.ResponseStatus{ - // Status: "ERR", - // Message: "error request change password", - // } - // return ret, err - // } - // defer req.Body.Close() + if strings.TrimSpace(baseURL) == "" { + baseURL = "https://" + config.Data.Get("servername") + } + uri := strings.TrimRight(baseURL, "/") + "/one-api/mockup/system/menu/change_password_pat" params, _ := json.Marshal(map[string]string{ "new": newPassword, diff --git a/services/corporate/mcudetail/tabdaftarpeserta.services.go b/services/corporate/mcudetail/tabdaftarpeserta.services.go index 52d4990..0991077 100644 --- a/services/corporate/mcudetail/tabdaftarpeserta.services.go +++ b/services/corporate/mcudetail/tabdaftarpeserta.services.go @@ -14,6 +14,7 @@ import ( "math" "net/http" "strconv" + "strings" "go.uber.org/zap" ) @@ -47,7 +48,7 @@ func (tdps *TabDaftarPesertaServices) GetListDaftarPesertaMCU(id string, current SELECT *, GROUP_CONCAT(test_paket) as list_paket FROM ( - SELECT + SELECT T_OrderHeaderID, T_OrderHeaderDate, IFNULL(T_OrderHeaderLabNumber, 0) AS T_OrderHeaderLabNumber, @@ -56,7 +57,7 @@ func (tdps *TabDaftarPesertaServices) GetListDaftarPesertaMCU(id string, current M_PatientNoReg, M_PatientName, M_PatientGender, - CASE + CASE WHEN M_PatientGender = 'male' THEN 'Laki - Laki' WHEN M_PatientGender = 'female' THEN 'Perempuan' ELSE ' ' @@ -71,7 +72,7 @@ func (tdps *TabDaftarPesertaServices) GetListDaftarPesertaMCU(id string, current END AS test_paket FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' - JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID + JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailOrderIsActive = 'Y' LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y' WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ? @@ -99,7 +100,7 @@ func (tdps *TabDaftarPesertaServices) SearchDaftarPesertaMCU(mcuID string, keywo sqlt := ` SELECT COUNT(*) as total FROM ( - SELECT + SELECT T_OrderHeaderID, T_OrderHeaderDate, IFNULL(T_OrderHeaderLabNumber, 0) AS T_OrderHeaderLabNumber, @@ -108,7 +109,7 @@ func (tdps *TabDaftarPesertaServices) SearchDaftarPesertaMCU(mcuID string, keywo M_PatientNoReg, M_PatientName, M_PatientGender, - CASE + CASE WHEN M_PatientGender = 'male' THEN 'Laki - Laki' WHEN M_PatientGender = 'female' THEN 'Perempuan' ELSE ' ' @@ -123,7 +124,7 @@ func (tdps *TabDaftarPesertaServices) SearchDaftarPesertaMCU(mcuID string, keywo END AS test_paket FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' - JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID + JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailOrderIsActive = 'Y' LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y' WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ? AND (M_PatientName LIKE ? OR M_PatientNIP LIKE ?) @@ -138,7 +139,7 @@ func (tdps *TabDaftarPesertaServices) SearchDaftarPesertaMCU(mcuID string, keywo SELECT *, GROUP_CONCAT(test_paket) as list_paket FROM ( - SELECT + SELECT T_OrderHeaderID, T_OrderHeaderDate, IFNULL(T_OrderHeaderLabNumber, 0) AS T_OrderHeaderLabNumber, @@ -147,7 +148,7 @@ func (tdps *TabDaftarPesertaServices) SearchDaftarPesertaMCU(mcuID string, keywo M_PatientNoReg, M_PatientName, M_PatientGender, - CASE + CASE WHEN M_PatientGender = 'male' THEN 'Laki - Laki' WHEN M_PatientGender = 'female' THEN 'Perempuan' ELSE ' ' @@ -162,10 +163,10 @@ func (tdps *TabDaftarPesertaServices) SearchDaftarPesertaMCU(mcuID string, keywo END AS test_paket FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' - JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID + JOIN t_orderdetailorder ON T_OrderDetailOrderT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailOrderIsActive = 'Y' LEFT JOIN auth_patient ON M_PatientID = authPatientM_PatientID AND authPatientIsActive = 'Y' - WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ? + WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderMgm_McuID = ? AND (M_PatientName LIKE ? OR M_PatientNIP LIKE ?) ) x GROUP BY T_OrderHeaderID @@ -238,10 +239,14 @@ func (tdps *TabDaftarPesertaServices) DetailTestdanPaket(orderheaderID string) ( return ret, nil } -func (tdps *TabDaftarPesertaServices) GenerataPasswordMCU(mgmMCUID string, host string) (models.GeneratePasswordResponse, error) { +func (tdps *TabDaftarPesertaServices) GenerataPasswordMCU(mgmMCUID string, baseURL string) (models.GeneratePasswordResponse, error) { logger, _ := zap.NewProduction() var ret models.GeneratePasswordResponse - uri := "https://" + config.Data.Get("servername") + "/one-api/tools/auth_patient/generate/" + mgmMCUID + + if strings.TrimSpace(baseURL) == "" { + baseURL = "https://" + config.Data.Get("servername") + } + uri := strings.TrimRight(baseURL, "/") + "/one-api/tools/auth_patient/generate/" + mgmMCUID payload := []byte{} resp, err := http.Post(uri, "application/json", bytes.NewBuffer(payload)) @@ -287,10 +292,13 @@ func (tdps *TabDaftarPesertaServices) GetAkunPeserta(patientID string) (models.A return ret, nil } -func (tdps *TabDaftarPesertaServices) ResetPasswordPeserta(token string, newPassword string, email string, authuserid string) (models.ResponseStatus, error) { +func (tdps *TabDaftarPesertaServices) ResetPasswordPeserta(token string, newPassword string, email string, authuserid string, baseURL string) (models.ResponseStatus, error) { var ret models.ResponseStatus - uri := "https://" + config.Data.Get("servername") + "/one-api/mockup/system/menu/reset_password_pat" + if strings.TrimSpace(baseURL) == "" { + baseURL = "https://" + config.Data.Get("servername") + } + uri := strings.TrimRight(baseURL, "/") + "/one-api/mockup/system/menu/reset_password_pat" params, _ := json.Marshal(map[string]string{ "new": newPassword, @@ -376,7 +384,7 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV3(orderheaderID strin JOIN so_resultentry sre ON sre.So_ResultEntryT_OrderDetailID = tdet.T_OrderDetailID AND sre.So_ResultEntryIsActive = 'Y' WHERE tdet.T_OrderDetailT_OrderHeaderID = ? - AND tdet.T_OrderDetailIsActive = 'Y' + AND tdet.T_OrderDetailIsActive = 'Y' ` if err := dbx.Handlex.Select(&SoResultData, q, orderheaderID); err != nil { return returnTab, fmt.Errorf("error get so result data non lab: %v", err) @@ -456,7 +464,7 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID strin mp.M_PatientName, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM t_orderheader toh - JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID + JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND mp.M_PatientIsActive = 'Y' WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y' ` @@ -481,44 +489,44 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID strin papsmear := "" sql_rpt := ` - SELECT DISTINCT group_resultName as rpt_name, - IFNULL(So_ResultEntryID,0) as so_id, + SELECT DISTINCT group_resultName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, T_OrderDetailT_OrderHeaderID as order_id, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID - JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID - JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N' LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' UNION - SELECT DISTINCT group_resultName as rpt_name, - IFNULL(So_ResultEntryID,0) as so_id, + SELECT DISTINCT group_resultName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, T_OrderDetailT_OrderHeaderID as order_id, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID - JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID - JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y' LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' UNION - SELECT DISTINCT T_TestName as rpt_name, - IFNULL(So_ResultEntryID,0) as so_id, + SELECT DISTINCT T_TestName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, T_OrderDetailT_OrderHeaderID as order_id, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang') JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND - T_SamplingSoT_TestID = T_TestID + T_SamplingSoT_TestID = T_TestID JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID - JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y' LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE @@ -561,7 +569,7 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV4(orderheaderID strin Mcu_ResumeID, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM mcu_resume - WHERE Mcu_ResumeT_OrderHeaderID = ? + WHERE Mcu_ResumeT_OrderHeaderID = ? AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL' ` if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil { @@ -635,7 +643,7 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV5(orderheaderID strin mp.M_PatientName, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM t_orderheader toh - JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID + JOIN m_patient mp ON toh.T_OrderHeaderM_PatientID = mp.M_PatientID AND mp.M_PatientIsActive = 'Y' WHERE toh.T_OrderHeaderID = ? AND toh.T_OrderHeaderIsActive = 'Y' ` @@ -667,44 +675,44 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV5(orderheaderID strin sds := "" sql_rpt := ` - SELECT DISTINCT group_resultName as rpt_name, - IFNULL(So_ResultEntryID,0) as so_id, + SELECT DISTINCT group_resultName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, T_OrderDetailT_OrderHeaderID as order_id, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID - JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID - JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'N' LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' UNION - SELECT DISTINCT group_resultName as rpt_name, - IFNULL(So_ResultEntryID,0) as so_id, + SELECT DISTINCT group_resultName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, T_OrderDetailT_OrderHeaderID as order_id, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID - JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID - JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultFlagPerTest = 'N' AND Group_ResultName <> 'LAB' AND Group_ResultFlagNonLab = 'Y' LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = ? AND Group_ResultName <> 'Tanpa Hasil' UNION - SELECT DISTINCT T_TestName as rpt_name, - IFNULL(So_ResultEntryID,0) as so_id, + SELECT DISTINCT T_TestName as rpt_name, + IFNULL(So_ResultEntryID,0) as so_id, T_OrderDetailT_OrderHeaderID as order_id, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestName NOT IN ('Visus Mata','Buta Warna','Pemeriksaan Lapang Pandang') JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND - T_SamplingSoT_TestID = T_TestID + T_SamplingSoT_TestID = T_TestID JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID - JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND + JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultFlagPerTest = 'Y' AND Group_ResultFlagNonLab = 'Y' LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE @@ -744,7 +752,7 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV5(orderheaderID strin if d.So_id != "0" { tipval := "" tpe := `SELECT So_ResultEntrySDSTypeValue as tipval - FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ? + FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ? AND So_ResultEntrySDSTypeIsActive = 'Y' LIMIT 1` if err := dbx.Handlex.Get(&tipval, tpe, d.So_id); err != nil { if errors.Is(err, sql.ErrNoRows) { @@ -784,7 +792,7 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV5(orderheaderID strin if d.So_id != "0" { tipval := "" tpe := `SELECT So_ResultEntrySDSTypeValue as tipval - FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ? + FROM so_resultentrysds_type WHERE So_ResultEntrySDSTypeSo_ResultEntryID = ? AND So_ResultEntrySDSTypeIsActive = 'Y' LIMIT 1` if err := dbx.Handlex.Get(&tipval, tpe, d.So_id); err != nil { if errors.Is(err, sql.ErrNoRows) { @@ -811,7 +819,7 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV5(orderheaderID strin Mcu_ResumeID, DATE_FORMAT(NOW(), '%y%m%d%H%i%s') AS Datetime FROM mcu_resume - WHERE Mcu_ResumeT_OrderHeaderID = ? + WHERE Mcu_ResumeT_OrderHeaderID = ? AND Mcu_ResumeIsActive = 'Y' AND Mcu_ResumeStatus = 'VAL' ` if err := dbx.Handlex.Get(&ResumeData, sql_resume, orderheaderID); err != nil { @@ -834,7 +842,7 @@ func (tdps *TabDaftarPesertaServices) GetListReportPesertaV5(orderheaderID strin additional := "" if fisik == "" { id_add := "" - sql_additional := `SELECT So_ResultEntryID FROM t_orderdetail + sql_additional := `SELECT So_ResultEntryID FROM t_orderdetail JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestID IN (2571,2573,3450,2572) LIMIT 1` if err := dbx.Handlex.Get(&id_add, sql_additional, orderheaderID); err != nil { @@ -905,7 +913,7 @@ func (tdps *TabDaftarPesertaServices) GetListAttachmentFile(orderheaderID string File_AttachmentID, File_AttachmentFileName FROM t_orderheader - JOIN file_attachment ON File_AttachmentT_OrderHeaderID = T_OrderHeaderID + JOIN file_attachment ON File_AttachmentT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderID = ? AND File_AttachmentIsActive = 'Y' ORDER BY File_AttachmentID ASC` diff --git a/services/public/login.services.go b/services/public/login.services.go index 311bcef..cfd4d74 100644 --- a/services/public/login.services.go +++ b/services/public/login.services.go @@ -11,6 +11,7 @@ import ( "errors" "io" "net/http" + "strings" "go.uber.org/zap" ) @@ -26,12 +27,15 @@ func NewServicesLogin(uStore db.AppStore) *ServicesLogin { } } -func (ls *ServicesLogin) MultiSignInV2(username string, password string) (models.Response, error) { +func (ls *ServicesLogin) MultiSignInV2(username string, password string, baseURL string) (models.Response, error) { logger, _ := zap.NewProduction() var ret models.Response - // uri := "https://" + config.Data.Get("servername") + "/one-api/v1/system/auth_v2/multi_login" - uri := "https://" + config.Data.Get("servername") + "/one-api/v1/system/auth_v2/multi_login_v2" + if strings.TrimSpace(baseURL) == "" { + baseURL = "https://" + config.Data.Get("servername") + } + + uri := strings.TrimRight(baseURL, "/") + "/one-api/v1/system/auth_v2/multi_login_v2" params, _ := json.Marshal(map[string]string{ "username": username, @@ -65,10 +69,9 @@ func (ls *ServicesLogin) MultiSignInV2(username string, password string) (models func (ls *ServicesLogin) CheckIsAccountCpone(email string) (string, error) { var usr_type string - q := ` - SELECT M_UserEmail - FROM m_user - WHERE M_UserEmail = ? AND M_UserIsActive = 'Y' + q := `SELECT M_UserEmail + FROM m_user + WHERE M_UserEmail = ? AND M_UserIsActive = 'Y' ` if err := dbx.Handlex.Get(&usr_type, q, email); err != nil { if errors.Is(err, sql.ErrNoRows) { @@ -83,13 +86,12 @@ func (ls *ServicesLogin) CheckIsAccountCpone(email string) (string, error) { func (ls *ServicesLogin) CheckAccountHasLocation(email string) (bool, error) { var placeholder string - sqla := `SELECT - M_UserEmail + sqla := `SELECT M_UserEmail FROM m_user JOIN m_userlocation ON M_UserLocationM_UserID = M_UserID - WHERE M_UserEmail = ? + WHERE M_UserEmail = ? AND M_UserIsActive = 'Y' - ` + ` if err := dbx.Handlex.Get(&placeholder, sqla, email); err != nil { if errors.Is(err, sql.ErrNoRows) { return false, nil diff --git a/utils/requesturl.utils.go b/utils/requesturl.utils.go new file mode 100644 index 0000000..2db0eac --- /dev/null +++ b/utils/requesturl.utils.go @@ -0,0 +1,18 @@ +package utils + +import ( + "net/http" + "strings" +) + +func RequestBaseURL(r *http.Request) string { + scheme := "https" + + if proto := r.Header.Get("X-Forwarded-Proto"); proto != "" { + scheme = strings.TrimSpace(strings.Split(proto, ",")[0]) + } else if r.TLS != nil { + scheme = "https" + } + + return scheme + "://" + r.Host +}