diff --git a/handlers/dev/masterkelainan.handlers.go b/handlers/dev/masterkelainan.handlers.go index cbf7ac9..ee42588 100644 --- a/handlers/dev/masterkelainan.handlers.go +++ b/handlers/dev/masterkelainan.handlers.go @@ -26,6 +26,7 @@ type MasterKelainanService interface { GetKelainanByID(id string) (models.Kelainan, error) AddKelainan(name string) (models.Kelainan, error) DeleteKelainan(id string) (models.Kelainan, error) + UpdateFlagStatusKelainan(id string, status string) (models.Kelainan, error) GetListMasterKelainanDetail(id string, searchdetail string, currentPage int, rowPerPage int) ([]models.KelainanDetail, int, error) AddKelainanDetail(name string, nameclassification string, selectedid string) (models.KelainanDetail, error) GetKelainanDetailByID(id string) (models.KelainanDetail, error) @@ -187,6 +188,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error // component table listing kelainan contentKelainanComponent := masterkelainan.TableKelainan( dataKelainan, tableID, + "/dev/kelainan/flagaktif", + "outerHTML", "/dev/kelainan/opendelete", "#"+dialogDeleteBodyID, "outerHTML", @@ -444,6 +447,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanSearch(c echo.Context) contentKelainanComponent := masterkelainan.TableKelainan( dataKelainan, tableID, + "/dev/kelainan/flagaktif", + "outerHTML", "/dev/kelainan/opendelete", "#"+dialogDeleteBodyID, "outerHTML", @@ -496,6 +501,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanPagination(c echo.Cont contentKelainanComponent := masterkelainan.TableKelainan( dataKelainan, tableID, + "/dev/kelainan/flagaktif", + "outerHTML", "/dev/kelainan/opendelete", "#"+dialogDeleteBodyID, "outerHTML", @@ -632,6 +639,8 @@ func (lh *MasterKelainanHandler) AddKelainan(c echo.Context) error { // New table listing contentKelainanComponent := masterkelainan.TableKelainan( dataKelainanList, tableID, + "/dev/kelainan/flagaktif", + "outerHTML", "/dev/kelainan/opendelete", "#"+dialogDeleteBodyID, "outerHTML", @@ -783,6 +792,8 @@ func (lh *MasterKelainanHandler) HandleDeleteKelainan(c echo.Context) error { //table component tableComponent := masterkelainan.TableKelainan(dataKelainanList, tableID, + "/dev/kelainan/flagaktif", + "outerHTML", "/dev/kelainan/opendelete", "#"+dialogDeleteBodyID, "outerHTML", @@ -816,6 +827,61 @@ func (lh *MasterKelainanHandler) HandleDeleteKelainan(c echo.Context) error { return utils.ViewMulti(c, retVal) } +func (lh *MasterKelainanHandler) HandlerUpdateStatusKelainanAktif(c echo.Context) error { + logger, _ := zap.NewProduction() + defer logger.Sync() + + id := c.QueryParam("id") + selectedStatus := c.QueryParam("selectedStatus") + + logger.Info("CEK kelainan id", + zap.Any("kelainan id", id), + zap.Any("selectedStatus", selectedStatus)) + + dataKelainan, err := lh.MasterKelainanService.UpdateFlagStatusKelainan(id, selectedStatus) + if err != nil { + defer logger.Sync() + logger.Info("ERROR UPDATE STATUS KELAINAN", + zap.Any("error", err), + ) + fmt.Println(dataKelainan) + return utils.ViewMulti(c, []templ.Component{ + customtoastv2.CustomToastV2Show("Error", err.Error(), "danger")}) + } + + if selectedStatus == "Y" { + buttonCmp := masterkelainan.CustomButtonTidak( + models.ButtonPrm{ + ID: "non" + id, + HxGet: "/dev/kelainan/flagaktif", + HxTarget: "this", + HxSwap: "outerHTML", + Label: "Tidak", + Class: "col-12 col-sm-12 col-md-12 col-lg-5 col-xl-5 col-xxl-5 btn btn-light-danger mb-2", + }, + ) + + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil update status Grup Kelainan", "success") + + return utils.ViewMulti(c, []templ.Component{toastSuccess, buttonCmp}) + } else { + buttonCmp := masterkelainan.CustomButtonTidak( + models.ButtonPrm{ + ID: "active" + id, + HxGet: "/dev/kelainan/flagaktif", + HxTarget: "this", + HxSwap: "outerHTML", + Label: "Aktif", + Class: "col-12 col-sm-12 col-md-12 col-lg-5 col-xl-5 col-xxl-5 btn btn-light-tosca mb-2", + }, + ) + + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil update status Grup Kelainan", "success") + + return utils.ViewMulti(c, []templ.Component{toastSuccess, buttonCmp}) + } +} + // master kelainan detail func (lh *MasterKelainanHandler) HandlerShowMasterKelainanDetail(c echo.Context) error { logger, _ := zap.NewProduction() diff --git a/handlers/routes.go b/handlers/routes.go index 83fe85a..502e898 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -223,6 +223,7 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.GET("/kelainan/opendelete", devKLhandlers.HandleOpenDeleteForm) dev.POST("/kelainan/closedeleteform", devKLhandlers.HandleCloseFormDelete) dev.POST("/kelainan/delete", devKLhandlers.HandleDeleteKelainan) + dev.GET("/kelainan/flagaktif", devKLhandlers.HandlerUpdateStatusKelainanAktif) dev.GET("/kelainan/selected", devKLhandlers.HandlerShowMasterKelainanDetail) dev.GET("/searchkelainandetail", devKLhandlers.HandlerShowMdKelainanDetailSearch) dev.GET("/kelainandetailpagination", devKLhandlers.HandlerShowMdKelainanDetailPagination) diff --git a/models/kelainan.models.go b/models/kelainan.models.go index 408f72d..70d104e 100644 --- a/models/kelainan.models.go +++ b/models/kelainan.models.go @@ -83,3 +83,15 @@ type SwitchclassPrm struct { Name string `default:"name"` ID string } + +type ButtonPrm struct { + ID string + Label string `default:"default"` + Type string `default:"type"` + Class string `default:"class"` + Color string `default:"color"` + HxGet string + HxTarget string + HxSwap string + HxInclude string +} diff --git a/services/dev/masterkelainan.services.go b/services/dev/masterkelainan.services.go index 2fbc201..8249a29 100644 --- a/services/dev/masterkelainan.services.go +++ b/services/dev/masterkelainan.services.go @@ -221,6 +221,49 @@ func (su *ServicesMasterKelainan) DeleteKelainan(id string) (models.Kelainan, er return data, nil } +func (su *ServicesMasterKelainan) UpdateFlagStatusKelainan(id string, status string) (models.Kelainan, error) { + logger, _ := zap.NewProduction() + var data models.Kelainan + + if status == "N" { + qry := `UPDATE mcu_kelainangroup + SET Mcu_KelainanGroupFlagActive = 'Y', + Mcu_KelainanGroupLastUpdated = NOW() + WHERE Mcu_KelainanGroupID = ?` + + rst := dbx.Handlex.MustExec(qry, id) + _, err := rst.RowsAffected() + + if err != nil { + defer logger.Sync() + logger.Error("Error update status", + zap.String("id", id), + zap.String("status", status), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + } else { + qry := `UPDATE mcu_kelainangroup + SET Mcu_KelainanGroupFlagActive = 'N', + Mcu_KelainanGroupLastUpdated = NOW() + WHERE Mcu_KelainanGroupID = ?` + + rst := dbx.Handlex.MustExec(qry, id) + _, err := rst.RowsAffected() + + if err != nil { + defer logger.Sync() + logger.Error("Error update status", + zap.String("id", id), + zap.String("status", status), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + } + + return data, nil +} + // end master group kelainan // master kelainan detail diff --git a/views/dev/masterkelainan/mdkelainantable.templ b/views/dev/masterkelainan/mdkelainantable.templ index 684fb33..97949a4 100644 --- a/views/dev/masterkelainan/mdkelainantable.templ +++ b/views/dev/masterkelainan/mdkelainantable.templ @@ -8,6 +8,8 @@ import ( templ TableKelainan(data []models.Kelainan, tableID string, + hxGetActive string, + hxSwapActive string, hxGetDelete string, hxTargetDelete string, hxSwapDelete string, @@ -19,6 +21,8 @@ templ TableKelainan(data []models.Kelainan, @tablecomponent.TableV3([]string{"NO", "GRUP KELAINAN", "AKSI"}, []string{"10%", "60%", "30%"}, TableRow(data, + hxGetActive, + hxSwapActive, hxGetDelete, hxTargetDelete, hxSwapDelete, @@ -43,6 +47,8 @@ script HandleAfterRequesX(idx string) { } templ TableRow(data []models.Kelainan, + hxGetActive string, + hxSwapActive string, hxGetDelete string, hxTargetDelete string, hxSwapDelete string, @@ -60,7 +66,7 @@ templ TableRow(data []models.Kelainan, id={ "sas" + strconv.Itoa(v.Mcu_KelainanGroupID) } hx-get={ hxGetSelected + "?id=" + strconv.Itoa(v.Mcu_KelainanGroupID) } hx-trigger="click" - hx-include={ "#selectedID, #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID, #tableID, #tableDetailID, #paginationDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #sas" + strconv.Itoa(v.Mcu_KelainanGroupID) } + hx-include={ "#selectedID, #paginationID, #dialogDeleteBodyID, #dialogDeleteID, #tableID, #tableDetailID, #paginationDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #sas" + strconv.Itoa(v.Mcu_KelainanGroupID) } onclick={ clickHandler(strconv.Itoa(v.Mcu_KelainanGroupID)) } hx-target={ hxTargetSelected } hx-on::after-request={ HandleAfterRequesX(strconv.Itoa(v.Mcu_KelainanGroupID)) } @@ -69,7 +75,11 @@ templ TableRow(data []models.Kelainan, { v.Nomor } { v.Mcu_KelainanGroupName } - @TableAction(v.Mcu_KelainanGroupID, + @TableAction("#active"+strconv.Itoa(v.Mcu_KelainanGroupID), + v.Mcu_KelainanGroupID, + v.Mcu_KelainanGroupFlagActive, + hxGetActive, + hxSwapActive, hxGetDelete, hxTargetDelete, hxSwapDelete, @@ -81,13 +91,40 @@ templ TableRow(data []models.Kelainan, } templ TableAction( + idrowactive string, id int, + flag string, + hxGetActive string, + hxSwapActive string, hxGetDelete string, hxTargetDelete string, hxSwapDelete string, hxIncludeDelete string, ) {
+ switch flag { + case "Y": + + Aktif + + case "N": + + Tidak + + default: + { "Unknown Flag" } + }
} + +templ CustomButtonTidak(inp models.ButtonPrm) { + + { inp.Label } + +} diff --git a/views/dev/masterkelainan/mdkelainantable_templ.go b/views/dev/masterkelainan/mdkelainantable_templ.go index bf1d21f..a923e2b 100644 --- a/views/dev/masterkelainan/mdkelainantable_templ.go +++ b/views/dev/masterkelainan/mdkelainantable_templ.go @@ -18,6 +18,8 @@ import ( func TableKelainan(data []models.Kelainan, tableID string, + hxGetActive string, + hxSwapActive string, hxGetDelete string, hxTargetDelete string, hxSwapDelete string, @@ -44,7 +46,7 @@ func TableKelainan(data []models.Kelainan, var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(tableID) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 18, Col: 18} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 20, Col: 18} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { @@ -57,6 +59,8 @@ func TableKelainan(data []models.Kelainan, templ_7745c5c3_Err = tablecomponent.TableV3([]string{"NO", "GRUP KELAINAN", "AKSI"}, []string{"10%", "60%", "30%"}, TableRow(data, + hxGetActive, + hxSwapActive, hxGetDelete, hxTargetDelete, hxSwapDelete, @@ -104,6 +108,8 @@ func HandleAfterRequesX(idx string) templ.ComponentScript { } func TableRow(data []models.Kelainan, + hxGetActive string, + hxSwapActive string, hxGetDelete string, hxTargetDelete string, hxSwapDelete string, @@ -141,7 +147,7 @@ func TableRow(data []models.Kelainan, var templ_7745c5c3_Var4 string templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs("sas" + strconv.Itoa(v.Mcu_KelainanGroupID)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 60, Col: 51} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 66, Col: 51} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) if templ_7745c5c3_Err != nil { @@ -154,7 +160,7 @@ func TableRow(data []models.Kelainan, var templ_7745c5c3_Var5 string templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(hxGetSelected + "?id=" + strconv.Itoa(v.Mcu_KelainanGroupID)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 61, Col: 72} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 67, Col: 72} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) if templ_7745c5c3_Err != nil { @@ -165,9 +171,9 @@ func TableRow(data []models.Kelainan, return templ_7745c5c3_Err } var templ_7745c5c3_Var6 string - templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs("#selectedID, #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID, #tableID, #tableDetailID, #paginationDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #sas" + strconv.Itoa(v.Mcu_KelainanGroupID)) + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs("#selectedID, #paginationID, #dialogDeleteBodyID, #dialogDeleteID, #tableID, #tableDetailID, #paginationDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #sas" + strconv.Itoa(v.Mcu_KelainanGroupID)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 63, Col: 274} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 69, Col: 240} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) if templ_7745c5c3_Err != nil { @@ -189,7 +195,7 @@ func TableRow(data []models.Kelainan, var templ_7745c5c3_Var8 string templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(hxTargetSelected) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 65, Col: 31} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 71, Col: 31} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) if templ_7745c5c3_Err != nil { @@ -211,7 +217,7 @@ func TableRow(data []models.Kelainan, var templ_7745c5c3_Var10 string templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(v.Nomor) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 69, Col: 16} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 75, Col: 16} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) if templ_7745c5c3_Err != nil { @@ -224,7 +230,7 @@ func TableRow(data []models.Kelainan, var templ_7745c5c3_Var11 string templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(v.Mcu_KelainanGroupName) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 70, Col: 32} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 76, Col: 32} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) if templ_7745c5c3_Err != nil { @@ -234,7 +240,11 @@ func TableRow(data []models.Kelainan, if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = TableAction(v.Mcu_KelainanGroupID, + templ_7745c5c3_Err = TableAction("#active"+strconv.Itoa(v.Mcu_KelainanGroupID), + v.Mcu_KelainanGroupID, + v.Mcu_KelainanGroupFlagActive, + hxGetActive, + hxSwapActive, hxGetDelete, hxTargetDelete, hxSwapDelete, @@ -256,7 +266,11 @@ func TableRow(data []models.Kelainan, } func TableAction( + idrowactive string, id int, + flag string, + hxGetActive string, + hxSwapActive string, hxGetDelete string, hxTargetDelete string, hxSwapDelete string, @@ -274,16 +288,115 @@ func TableAction( templ_7745c5c3_Var12 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var13 string - templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(hxGetDelete + "?id=" + strconv.Itoa(id)) - if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 95, Col: 51} + switch flag { + case "Y": + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Aktif\r ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + case "N": + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("Tidak\r ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + default: + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var18 string + templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs("Unknown Flag") + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 126, Col: 26} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var31 string + templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(inp.Label) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 152, Col: 13} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +}