diff --git a/.gitignore b/.gitignore index 232d914..4e2b9dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ tmp bin config.yaml -restapi.rest \ No newline at end of file +restapi.rest +cpone.db +coba.Http diff --git a/handlers/dev/mastermenuusergroup.handlers.go b/handlers/dev/mastermenuusergroup.handlers.go index ab15762..cd163c8 100644 --- a/handlers/dev/mastermenuusergroup.handlers.go +++ b/handlers/dev/mastermenuusergroup.handlers.go @@ -31,6 +31,9 @@ type MasterMenuUserGroupService interface { // try GetListMasterUserGroup() ([]models.UserGroupV1, error) GetListBreadCrumb(title string) (models.BreadCrumbV1, error) + AddUserGroup(code string, name string) (models.UserGroupV1, error) + EditUserGroup(id string, code string, name string) (models.UserGroupV1, error) + DeleteUserGroup(id string) (models.UserGroupV1, error) } func NewMasterMenuUserGroupHandler(us MasterMenuUserGroupService) *MasterMenuUserGroupHandler { @@ -285,3 +288,91 @@ func (lh *MasterMenuUserGroupHandler) HandlerShowBreadCrumbV1(c echo.Context) er return lh.View(c, si) } +func (lh *MasterMenuUserGroupHandler) AddUserGroup(c echo.Context) error { + data := utils.GetJSONRawBody(c) + logger, _ := zap.NewProduction() + defer logger.Sync() + + dataUserGroup, err := lh.MasterMenuUserGroupService.AddUserGroup(data["code"].(string), data["name"].(string)) + + if err != nil { + logger.Info("Error", + zap.Any("Error", err), + zap.Any("prm", data), + ) + return err + } + logger.Info("ADD USER GROUP", + zap.Any("return", dataUserGroup), + zap.Any("prm", data), + ) + dataUserGroupvw, err := lh.MasterMenuUserGroupService.GetUserGroupByID("1") + fmt.Println(dataUserGroup) + fmt.Println(err) + if err != nil { + fmt.Println(dataUserGroup) + return err + } + vw := mastermenuusergroup.DialogEditForm(dataUserGroupvw.UserGroupKode, dataUserGroupvw.UserGroupName) + + return lh.View(c, vw) +} +func (lh *MasterMenuUserGroupHandler) EditUserGroup(c echo.Context) error { + data := utils.GetJSONRawBody(c) + logger, _ := zap.NewProduction() + defer logger.Sync() + + dataUserGroup, err := lh.MasterMenuUserGroupService.EditUserGroup(data["id"].(string), data["code"].(string), data["name"].(string)) + + if err != nil { + logger.Info("Error", + zap.Any("Error", err), + zap.Any("prm", data), + ) + return err + } + logger.Info("Edit USER GROUP handler", + zap.Any("return", dataUserGroup), + zap.Any("prm", data), + ) + dataUserGroupvw, err := lh.MasterMenuUserGroupService.GetUserGroupByID("1") + fmt.Println(dataUserGroup) + fmt.Println(err) + if err != nil { + fmt.Println(dataUserGroup) + return err + } + vw := mastermenuusergroup.DialogEditForm(dataUserGroupvw.UserGroupKode, dataUserGroupvw.UserGroupName) + + return lh.View(c, vw) +} +func (lh *MasterMenuUserGroupHandler) DeleteUserGroup(c echo.Context) error { + + id := c.Param("id") + logger, _ := zap.NewProduction() + defer logger.Sync() + + dataUserGroup, err := lh.MasterMenuUserGroupService.DeleteUserGroup(id) + + if err != nil { + logger.Info("Error", + zap.Any("Error", err), + zap.Any("prm", id), + ) + return err + } + logger.Info("DELETE USER GROUP handler", + zap.Any("return", dataUserGroup), + zap.Any("prm", id), + ) + dataUserGroupvw, err := lh.MasterMenuUserGroupService.GetUserGroupByID("1") + fmt.Println(dataUserGroup) + fmt.Println(err) + if err != nil { + fmt.Println(dataUserGroup) + return err + } + vw := mastermenuusergroup.DialogEditForm(dataUserGroupvw.UserGroupKode, dataUserGroupvw.UserGroupName) + + return lh.View(c, vw) +} diff --git a/handlers/routes.go b/handlers/routes.go index fc51ba3..fc0e844 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -189,6 +189,9 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { devUGhandlers := dev_handlers.NewMasterMenuUserGroupHandler(devUGServices) dev.GET("/usergroup", devUGhandlers.HandlerShowMasterMenuUserGroup) dev.GET("/usergroup/pagination", devUGhandlers.HandleChangePage) + dev.POST("/usergroup/add", devUGhandlers.AddUserGroup) + dev.POST("/usergroup/edit", devUGhandlers.EditUserGroup) + dev.GET("/usergroup/delete/:id", devUGhandlers.DeleteUserGroup) // try dev.GET("/usergroupv1", devUGhandlers.HandlerShowMasterMenuUserGroupV1) diff --git a/services/dev/mastermenuusergroup.services.go b/services/dev/mastermenuusergroup.services.go index 8cb486a..f09285c 100644 --- a/services/dev/mastermenuusergroup.services.go +++ b/services/dev/mastermenuusergroup.services.go @@ -6,7 +6,10 @@ import ( "cpone/db" "cpone/models" + dbx "cpone/package/database" + + "go.uber.org/zap" ) func NewServicesMasterMenuUserGroup(uStore db.AppStore) *ServicesMasterMenuUserGroup { @@ -685,3 +688,127 @@ func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupBySearch(search *st return userGroupList, nil } +func (ug *ServicesMasterMenuUserGroup) GetUserGroupByIDV1(id string) (models.UserGroupV1, error) { + logger, _ := zap.NewProduction() + + var data models.UserGroupV1 + err := dbx.Handlex.Get(&data, `SELECT * FROM m_usergroup + WHERE M_UserGroupID = ?`, id) + + if err != nil { + defer logger.Sync() + logger.Error("Error get data ug by id vs", + zap.String("ID", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} +func (ug *ServicesMasterMenuUserGroup) AddUserGroup(code string, name string) (models.UserGroupV1, error) { + logger, _ := zap.NewProduction() + var data models.UserGroupV1 + var datacek []models.UserGroupV1 + + qryCek := `SELECT M_UserGroupCode FROM m_usergroup WHERE M_UserGroupCode = ? AND M_UserGroupIsActive = 'Y'` + err := dbx.Handlex.Select(&datacek, qryCek, code) + + if err != nil { + defer logger.Sync() + logger.Error("Error cek data by code", + zap.String("code", code), + zap.Any("datacek", datacek), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + if len(datacek) > 0 { + defer logger.Sync() + logger.Error("Code already taken by another data", + zap.String("code", code), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + qry := `INSERT INTO m_usergroup + (M_UserGroupCode, + M_UserGroupName) + VALUES (?,?);` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, code, name) + insertedID, err := rst.LastInsertId() + if err != nil { + defer logger.Sync() + logger.Error("Error Insert usergroup", + zap.String("code", code), + zap.String("name", name), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + s := strconv.Itoa(int(insertedID)) + data, err = ug.GetUserGroupByIDV1(s) + if err != nil { + defer logger.Sync() + logger.Error("Error get usergroup by id", + zap.String("code", code), + zap.String("name", name), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} +func (ug *ServicesMasterMenuUserGroup) EditUserGroup(id string, code string, name string) (models.UserGroupV1, error) { + logger, _ := zap.NewProduction() + var data models.UserGroupV1 + qry := `UPDATE m_usergroup + SET M_UserGroupCode = ?, + M_UserGroupName= ? + WHERE M_UserGroupID = ?;` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, code, name, id) + _, err := rst.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error Update usergroup", + zap.String("code", code), + zap.String("name", name), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + + data, err = ug.GetUserGroupByIDV1(id) + if err != nil { + defer logger.Sync() + logger.Error("Error get usergroup by id", + zap.String("code", code), + zap.String("name", name), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} + +func (ug *ServicesMasterMenuUserGroup) DeleteUserGroup(id string) (models.UserGroupV1, error) { + logger, _ := zap.NewProduction() + var data models.UserGroupV1 + qry := `UPDATE m_usergroup + SET M_UserGroupIsActive = 'N' + WHERE M_UserGroupID = ?;` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, id) + _, err := rst.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error delete usergroup", + zap.String("id", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + + data, err = ug.GetUserGroupByIDV1(id) + if err != nil { + defer logger.Sync() + logger.Error("Error get usergroup by id", + zap.String("id", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} diff --git a/utils/getjsonreq.utils.go b/utils/getjsonreq.utils.go new file mode 100644 index 0000000..c10eec9 --- /dev/null +++ b/utils/getjsonreq.utils.go @@ -0,0 +1,21 @@ +package utils + +import ( + "encoding/json" + + "github.com/labstack/echo/v4" + "github.com/labstack/gommon/log" +) + +func GetJSONRawBody(c echo.Context) map[string]interface{} { + + jsonBody := make(map[string]interface{}) + err := json.NewDecoder(c.Request().Body).Decode(&jsonBody) + if err != nil { + + log.Error("empty json body") + return nil + } + + return jsonBody +}