From b9930f5662edf963239a2b11629bd8e52e2cb013 Mon Sep 17 00:00:00 2001 From: adibwp Date: Mon, 12 Aug 2024 15:43:22 +0700 Subject: [PATCH] add change password pic and pat service and handler --- handlers/corporate/account.handlers.go | 80 ++++++++++++++ handlers/corporate/mcudetail.handlers.go | 2 +- models/account.models.go | 6 ++ services/corporate/account.services.go | 102 ++++++++++++++++++ .../mcudetail/tabkelainanfisik.services.go | 5 +- .../mcudetail/tabkelainanglobal.services.go | 6 +- .../mcudetail/tabkesimpulan.services.go | 8 +- views/corporate/mcu/mcutabview.templ | 4 +- views/corporate/mcu/mcutabview_templ.go | 4 +- 9 files changed, 205 insertions(+), 12 deletions(-) create mode 100644 handlers/corporate/account.handlers.go create mode 100644 models/account.models.go create mode 100644 services/corporate/account.services.go diff --git a/handlers/corporate/account.handlers.go b/handlers/corporate/account.handlers.go new file mode 100644 index 0000000..95259e6 --- /dev/null +++ b/handlers/corporate/account.handlers.go @@ -0,0 +1,80 @@ +package corporate_handlers + +import ( + "cpone/models" + "net/http" + "time" + + "github.com/golang-jwt/jwt/v5" + "github.com/labstack/echo/v4" +) + +type AccountService interface { + ChangePasswordPIC(token string, currPassword string, newPassword string) (models.ResponseStatus, error) + ChangePasswordPAT(token string, currPassword string, newPassword string) (models.ResponseStatus, error) +} + +func NewAccountHandler(as AccountService) *AccountHandler { + return &AccountHandler{ + AccountService: as, + } +} + +type AccountHandler struct { + AccountService AccountService +} + +func (as *AccountHandler) HandleChangePassword(c echo.Context) error { + var response models.ResponseStatus + userToken := c.Get("user").(*jwt.Token) + token := userToken.Raw + claims := userToken.Claims.(jwt.MapClaims) + userGroup := claims["M_UserGroupDashboard"].(string) + + old_pass := c.FormValue("oldpassword") + new_pass := c.FormValue("newpassword") + + if userGroup == "pic" { + resp, err := as.AccountService.ChangePasswordPIC(token, old_pass, new_pass) + if err != nil { + return err + } + response = resp + } + + if userGroup == "patient" { + resp, err := as.AccountService.ChangePasswordPAT(token, old_pass, new_pass) + if err != nil { + return err + } + response = resp + } + + if response.Status == "ERR" { + return nil + } + + expire := time.Now().Add(-7 * 24 * time.Hour) + cookie := new(http.Cookie) + cookie.Name = "token" + cookie.Value = "" + cookie.Path = "/" + cookie.Expires = expire + cookie.HttpOnly = true + c.SetCookie(cookie) + + ret := ` + + ` + + c.Response().Header().Set("HX-Trigger", "script") + return c.String(http.StatusOK, ret) +} diff --git a/handlers/corporate/mcudetail.handlers.go b/handlers/corporate/mcudetail.handlers.go index 5253937..24f710e 100644 --- a/handlers/corporate/mcudetail.handlers.go +++ b/handlers/corporate/mcudetail.handlers.go @@ -38,7 +38,7 @@ func (mcud *McuDetailHandler) HandlerShowMcuDetailScreen(c echo.Context) error { claims := userCok.Claims.(jwt.MapClaims) name := claims["M_StaffName"].(string) position := claims["M_UserGroupDashboard"].(string) - logger.Info("jwt", zap.Any("name", name)) + // logger.Info("jwt", zap.Any("name", name)) user := models.User{ UserID: 1, diff --git a/models/account.models.go b/models/account.models.go new file mode 100644 index 0000000..5be2259 --- /dev/null +++ b/models/account.models.go @@ -0,0 +1,6 @@ +package models + +type ResponseStatus struct { + Status string `json:"status"` + Message string `json:"message"` +} diff --git a/services/corporate/account.services.go b/services/corporate/account.services.go new file mode 100644 index 0000000..121d289 --- /dev/null +++ b/services/corporate/account.services.go @@ -0,0 +1,102 @@ +package corporate_services + +import ( + "cpone/db" + "cpone/models" + "encoding/json" + "io" + "net/http" + "net/url" +) + +type AccountService struct { + AccountStore db.AppStore +} + +func NewAccountService(aStore db.AppStore) *AccountService { + return &AccountService{ + AccountStore: aStore, + } +} + +func (as *AccountService) ChangePasswordPIC(token string, currPassword string, newPassword string) (models.ResponseStatus, error) { + var ret models.ResponseStatus + + uri := "/one-api/mockup/system/menu/change_password_pic" + + 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() + + resp, err := io.ReadAll(req.Body) + if err != nil { + ret = models.ResponseStatus{ + Status: "ERR", + Message: "error read response", + } + return ret, err + } + + err = json.Unmarshal(resp, &ret) + if err != nil { + ret = models.ResponseStatus{ + Status: "ERR", + Message: "error unmarshal response", + } + return ret, err + } + + return ret, nil +} + +func (as *AccountService) ChangePasswordPAT(token string, currPassword string, newPassword string) (models.ResponseStatus, error) { + var ret models.ResponseStatus + + uri := "/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() + + resp, err := io.ReadAll(req.Body) + if err != nil { + ret = models.ResponseStatus{ + Status: "ERR", + Message: "error read response", + } + return ret, err + } + + err = json.Unmarshal(resp, &ret) + if err != nil { + ret = models.ResponseStatus{ + Status: "ERR", + Message: "error unmarshal response", + } + return ret, err + } + + return ret, nil +} diff --git a/services/corporate/mcudetail/tabkelainanfisik.services.go b/services/corporate/mcudetail/tabkelainanfisik.services.go index bf7bf3c..9285f62 100644 --- a/services/corporate/mcudetail/tabkelainanfisik.services.go +++ b/services/corporate/mcudetail/tabkelainanfisik.services.go @@ -196,14 +196,15 @@ func (tkf *TabKelainanFisikServices) GetKelainanFisikPresentase(mcuID string) (m count(distinct T_OrderHeaderID) as total FROM t_kelainan_fisik JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID - JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID + JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73) join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH') group by Mcu_KelainanID ORDER BY total DESC - LIMIt 10 + LIMIT 10 ` if err := dbx.Handlex.Select(&data, q, mcuID); err != nil { return option, fmt.Errorf("error get data kelainan fisik: %v", err) diff --git a/services/corporate/mcudetail/tabkelainanglobal.services.go b/services/corporate/mcudetail/tabkelainanglobal.services.go index 67cea8d..5c9cdd0 100644 --- a/services/corporate/mcudetail/tabkelainanglobal.services.go +++ b/services/corporate/mcudetail/tabkelainanglobal.services.go @@ -262,10 +262,12 @@ func (tkg *TabKelainanGlobalServices) GetKelainanGlobalV2(mcuID string) (models. count(distinct T_OrderHeaderID) as Total FROM t_kelainan_fisik JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID - JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID + JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73) join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID - where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? + where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND + Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH') group by Mcu_KelainanID ) a diff --git a/services/corporate/mcudetail/tabkesimpulan.services.go b/services/corporate/mcudetail/tabkesimpulan.services.go index 1a3e74e..1b2c497 100644 --- a/services/corporate/mcudetail/tabkesimpulan.services.go +++ b/services/corporate/mcudetail/tabkesimpulan.services.go @@ -289,11 +289,13 @@ func (tks *TabKesimpulanServices) GetListKesimpulanFisikV2(id string) ([]models. count(distinct T_OrderHeaderID) as total FROM t_kelainan_fisik JOIN t_orderheader ON T_KelainanFiskT_OrderHeaderID = T_OrderHeaderID - JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID + JOIN mcu_summaryfisik ON T_KelainanFiskMcu_SummaryFisikID = Mcu_SummaryFisikID AND + Mcu_SummaryFisikID NOT IN (63,67,68,69,70,71,72,73) join mcu_kelainan on Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID - where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? - group by Mcu_KelainanID + where T_KelainanFiskIsActive = 'Y' and T_OrderHeaderMgm_McuID = ? AND + Mcu_KelainanClasification NOT IN ('who','kemenkes','JNC-VIII','ESC/ESH') + group by Mcu_KelainanID ORDER BY total DESC LIMIT 3 ` diff --git a/views/corporate/mcu/mcutabview.templ b/views/corporate/mcu/mcutabview.templ index 1d30885..da56100 100644 --- a/views/corporate/mcu/mcutabview.templ +++ b/views/corporate/mcu/mcutabview.templ @@ -62,8 +62,8 @@ templ TabViewMcuDetail(
- // - + // +
diff --git a/views/corporate/mcu/mcutabview_templ.go b/views/corporate/mcu/mcutabview_templ.go index d7e18ba..60e5e5f 100644 --- a/views/corporate/mcu/mcutabview_templ.go +++ b/views/corporate/mcu/mcutabview_templ.go @@ -134,9 +134,9 @@ func TabViewMcuDetail( return templ_7745c5c3_Err } var templ_7745c5c3_Var10 string - templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs("/birt/run?__report=report/one/mcu/rpt_summary_executive.rptdesign&__format=pdf&PID=" + id + "&username=adhi&tm=1717726294764") + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs("/birt/run?__report=report/one/mcu/rpt_executive_summary_mcu_001.rptdesign&__format=pdf&PID=" + id + "&username=admin&tm=1722914077866") if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutabview.templ`, Line: 66, Col: 139} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\corporate\mcu\mcutabview.templ`, Line: 66, Col: 148} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) if templ_7745c5c3_Err != nil {