Use request host for internal API URLs

This commit is contained in:
2026-06-19 17:04:46 +07:00
parent f8ad467b3d
commit 0b1cd60738
7 changed files with 125 additions and 94 deletions

View File

@@ -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")

View File

@@ -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{

View File

@@ -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)
</script>
</script>
`
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)
</script>
</script>
`
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 + `')

View File

@@ -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,

View File

@@ -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`

View File

@@ -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

18
utils/requesturl.utils.go Normal file
View File

@@ -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
}