From aea6e5e60b66db398ef16c8b9d7cb773fb80bc4a Mon Sep 17 00:00:00 2001 From: Hanan Askarim Date: Mon, 3 Jun 2024 15:20:10 +0700 Subject: [PATCH] delete kelainan detail --- handlers/dev/masterkelainan.handlers.go | 267 +++++++++++++++++- handlers/routes.go | 3 + services/dev/masterkelainan.services.go | 32 +++ views/dev/masterkelainan/masterkelainan.templ | 12 + .../masterkelainan/masterkelainan_templ.go | 29 +- .../mdkelainandetailformmodal.templ | 50 ++++ .../mdkelainandetailformmodal_templ.go | 202 +++++++++++++ .../mdkelainandetailtable.templ | 52 +++- .../mdkelainandetailtable_templ.go | 124 +++++++- .../dev/masterkelainan/mdkelainantable.templ | 2 +- .../masterkelainan/mdkelainantable_templ.go | 4 +- 11 files changed, 748 insertions(+), 29 deletions(-) diff --git a/handlers/dev/masterkelainan.handlers.go b/handlers/dev/masterkelainan.handlers.go index 84574c5..8b04470 100644 --- a/handlers/dev/masterkelainan.handlers.go +++ b/handlers/dev/masterkelainan.handlers.go @@ -29,6 +29,8 @@ type MasterKelainanService interface { DeleteKelainan(id 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) + DeleteKelainanDetail(id string) (models.KelainanDetail, error) } func NewMasterKelainanHandler(us MasterKelainanService) *MasterKelainanHandler { @@ -57,6 +59,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error searchDetailID := utils.GenerateRandomID("searchdetailid") dialogDetailAddID := utils.GenerateRandomID("dialogdetailaddid") dialogDetailAddBodyID := utils.GenerateRandomID("dialogdetailaddbodyid") + dialogDetailDeleteID := utils.GenerateRandomID("dialogDetailDeleteID") + dialogDetailDeleteBodyID := utils.GenerateRandomID("dialogDetailDeletebodyID") // println("cek id param", id) @@ -294,9 +298,18 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error }, ) + defer logger.Sync() + logger.Info("CEK HandlerShowMdKelainanDetailPagination", + zap.Any("dialogDetailDeleteBodyID", dialogDetailDeleteBodyID), + ) + // component listing table listing kelainan detail contentKelainanDetailCmp := masterkelainan.TableKelainanDetail( dataKelainanDetail, tableDetailID, + "/dev/kelainandetail/opendelete", + "#"+dialogDetailDeleteBodyID, + "outerHTML", + "#dialogDetailDeleteBodyID, #dialogDetailDeleteID, #tableDetailID", ) // filter kelainan detail component @@ -306,7 +319,7 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error "text", "/dev/searchkelainandetail", "input changed delay:500ms, searchdetail", - "#"+paginationDetailID, "", "", "none", "#tableDetailID, #paginationDetailID, #searchDetailID, #selectedID") + "#"+paginationDetailID, "", "", "none", "#tableDetailID, #paginationDetailID, #searchDetailID, #selectedID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID") // pagination kelainan detail component kelainanDetailPaginationCmp := pagination.PaginationV2( @@ -314,7 +327,7 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error 1, "/dev/kelainandetailpagination", paginationDetailID, - "#tableDetailID, #searchDetailID, #"+searchDetailID+", #paginationDetailID", + "#tableDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #"+searchDetailID+", #paginationDetailID", "#"+paginationDetailID, "outerHTML", "", "", ) @@ -359,7 +372,7 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error Link: "/dev/kelainandetail/add", HxTarget: "#" + dialogDetailAddBodyID, HxSwap: "outerHTML", - HxInclude: "#selectedID, #tableDetailID, #paginationDetailID, #searchDetailID, #dialogDetailAddBodyID, #dialogDetailAddID, #selectedID #" + searchDetailID + ", #currpage" + paginationDetailID, + HxInclude: "#selectedID, #tableDetailID, #paginationDetailID, #searchDetailID, #dialogDetailAddBodyID, #dialogDetailAddID, #selectedID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #" + searchDetailID + ", #currpage" + paginationDetailID, ModalID: dialogDetailAddID, ModalTitle: "New - Kelainan", DialogBody: dialogDetailAddBodyCmp, @@ -367,6 +380,55 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error ButtonCLose: dialogDetailAddCloseCmp, }) + // modal delete kelainan detail form + dialogDetailDeleteCmp := masterkelainan.BodyFormKelainanDetail( + models.CustomTextFieldv2Prm{ + Label: "Nama Kelainan", + Name: "kelainandetailid", + Placeholder: "Nama Kelainan", + Type: "hidden", ID: "kelainandetailid"}, + models.CustomTextFieldv2Prm{ + Label: "Nama Kelainan", + Name: "kelainandetailname", + Placeholder: "Nama Kelainan", + Type: "text", ID: "kelainandetailinputname"}, + models.SwitchclassPrm{ + Label: "Dengan Klasifikasi", + Type: "checkbox", + Checked: "true ", + Name: "select", + ID: "switchname"}, + models.CustomTextFieldv2Prm{ + Label: "Nama Klasifikasi", + Name: "classificationname", + Placeholder: "Nama Klasifikasi", + Type: "text", ID: "classificationinputname"}, + dialogDetailDeleteBodyID, masterkelainan.JsHideModalDetail("")) + modalActionDetailDeleteCmp := masterkelainan.ActionFormKelainanDelete( + "/dev/kelainandetail/closedeleteform", + "#"+dialogDetailDeleteBodyID, + "outerHTML", + "#"+dialogDetailDeleteID) + btnCloseModalDeleteDetail := masterkelainan.BtnCloseFormKelainanDetail( + "/dev/kelainandetail/closedeleteform", + "#"+dialogDetailDeleteBodyID, + "outerHTML", + "#"+dialogDetailDeleteID) + modalDetailDeleteFormCmp := masterkelainan.KelainanDetailForm( + models.KelainanDetailFormComponent{ + IDComponent: "formkelainandetail", + Link: "/dev/kelainandetail/delete", + HxTarget: "#" + dialogDetailDeleteBodyID, + HxSwap: "outerHTML", + HxInclude: "#tableDetailID, #paginationDetailID, #searchDetail, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #" + searchDetailID + ", #currpage" + paginationDetailID, + ModalID: dialogDetailDeleteID, + ModalTitle: "Konfirmasi", + DialogBody: dialogDetailDeleteCmp, + DialogAction: modalActionDetailDeleteCmp, + ButtonCLose: btnCloseModalDeleteDetail, + }, + ) + // content, css, js content := masterkelainan.ContentMasterKelainan( tableID, paginationID, searchID, dialogAddID, dialogAddBodyID, @@ -379,6 +441,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error searchDetailID, dialogDetailAddID, dialogDetailAddBodyID, + dialogDetailDeleteID, + dialogDetailDeleteBodyID, breadcrumbComponent, contentKelainanComponent, kelainanFilterComponent, @@ -389,7 +453,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error contentKelainanDetailCmp, kelainanDetailFilterCmp, kelainanDetailPaginationCmp, - modaldetailaddcomponent) + modaldetailaddcomponent, + modalDetailDeleteFormCmp) css := masterkelainan.CssKelainan() js := masterkelainan.JsMdKelainan() @@ -1045,6 +1110,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanDetail(c echo.Context) tableDetailID := c.QueryParam("tableDetailID") paginationDetailID := c.QueryParam("paginationDetailID") searchDetailID := c.QueryParam("searchDetailID") + // dialogDetailDeleteID := c.QueryParam("dialogDetailDeleteID") + dialogDetailDeleteBodyID := c.QueryParam("dialogDetailDeleteBodyID") logger.Info("tabel paginationDetailID", zap.Any("tabel paginationDetailID", paginationDetailID)) @@ -1062,6 +1129,10 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanDetail(c echo.Context) // component listing table listing kelainan detail contentKelainanDetailCmp := masterkelainan.TableKelainanDetail( dataKelainanDetail, tableDetailID, + "/dev/kelainandetail/opendelete", + "#"+dialogDetailDeleteBodyID, + "outerHTML", + "#dialogDetailDeleteBodyID, #dialogDetailDeleteID, #tableDetailID", ) // pagination kelainan detail component @@ -1070,7 +1141,7 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanDetail(c echo.Context) 1, "/dev/kelainandetailpagination", paginationDetailID, - "#selectedID, #tableDetailID, #searchDetailID, #"+searchDetailID+", #paginationDetailID", + "#selectedID, #tableDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #"+searchDetailID+", #paginationDetailID", "#"+paginationDetailID, "outerHTML", "", "true", ) @@ -1086,6 +1157,7 @@ func (lh *MasterKelainanHandler) HandlerShowMdKelainanDetailSearch(c echo.Contex searchDetailID := c.QueryParam("searchDetailID") tableDetailID := c.QueryParam("tableDetailID") paginationDetailID := c.QueryParam("paginationDetailID") + dialogDetailDeleteBodyID := c.QueryParam("dialogDetailDeleteBodyID") dataKelainanDetail, totalpagedetail, err := lh.MasterKelainanService.GetListMasterKelainanDetail(selectedID, searchdetail, 1, 5) if err != nil { @@ -1103,6 +1175,10 @@ func (lh *MasterKelainanHandler) HandlerShowMdKelainanDetailSearch(c echo.Contex contentKelainanDetailCmp := masterkelainan.TableKelainanDetail( dataKelainanDetail, tableDetailID, + "/dev/kelainandetail/opendelete", + "#"+dialogDetailDeleteBodyID, + "outerHTML", + "#dialogDetailDeleteBodyID, #dialogDetailDeleteID, #tableDetailID", ) kelainanDetailPaginationCmp := pagination.PaginationV2( @@ -1110,7 +1186,7 @@ func (lh *MasterKelainanHandler) HandlerShowMdKelainanDetailSearch(c echo.Contex 1, "/dev/kelainandetailpagination", paginationDetailID, - "#selectedID, #tableDetailID, #searchDetailID, #"+searchDetailID+", #paginationDetailID", + "#selectedID, #tableDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #"+searchDetailID+", #paginationDetailID", "#"+paginationDetailID, "outerHTML", "", "true", ) @@ -1128,6 +1204,13 @@ func (lh *MasterKelainanHandler) HandlerShowMdKelainanDetailPagination(c echo.Co searchDetailID := c.QueryParam("searchDetailID") tableDetailID := c.QueryParam("tableDetailID") paginationDetailID := c.QueryParam("paginationDetailID") + dialogDetailDeleteBodyID := c.QueryParam("dialogDetailDeleteBodyID") + // dialogDetailDeleteID := c.QueryParam("dialogDetailDeleteID") + + // defer logger.Sync() + // logger.Info("CEK HandlerShowMdKelainanDetailPagination", + // zap.Any("dialogDetailDeleteBodyID", dialogDetailDeleteBodyID), + // ) page, err := strconv.Atoi(pageparamdetail) if err != nil { @@ -1151,13 +1234,17 @@ func (lh *MasterKelainanHandler) HandlerShowMdKelainanDetailPagination(c echo.Co contentKelainanDetailCmp := masterkelainan.TableKelainanDetail( dataKelainanDetail, tableDetailID, + "/dev/kelainandetail/opendelete", + "#"+dialogDetailDeleteBodyID, + "outerHTML", + "#dialogDetailDeleteBodyID, #dialogDetailDeleteID, #tableDetailID", ) kelainanPaginationCmp := pagination.PaginationV2(totalpgaedetail, page, "/dev/kelainandetailpagination", paginationDetailID, - "#selectedID, #tableDetailID, #searchDetailID, #"+searchDetailID+", #paginationDetailID", + "#selectedID, #tableDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #"+searchDetailID+", #paginationDetailID", "#"+paginationDetailID, "outerHTML", "", "", ) @@ -1181,6 +1268,7 @@ func (lh *MasterKelainanHandler) HandlerAddKelainanDetail(c echo.Context) error currPagePrmDetail := c.FormValue("currpage" + paginationDetailID) dialogDetailAddBodyID := c.FormValue("dialogDetailAddBodyID") dialogDetailAddID := c.FormValue("dialogDetailAddID") + dialogDetailDeleteBodyID := c.FormValue("dialogDetailDeleteBodyID") currPage, err := strconv.Atoi(currPagePrmDetail) @@ -1285,11 +1373,11 @@ func (lh *MasterKelainanHandler) HandlerAddKelainanDetail(c echo.Context) error return utils.ViewMulti(c, []templ.Component{ customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), newForm}) } - logger.Info("ADD KELAINAN DETAIL", - zap.Any("return", dataKelainanDetail), - zap.Any("name", nameKelainanDetail), - zap.Any("name klasifikasi", nameClassification), + logger.Info("PARAMETER LIST", zap.Any("selectedid", selectedID), + zap.Any("searchdetail", searchdetail), + zap.Any("currPage", currPage), + zap.Any("dataKelainanDetail", dataKelainanDetail), ) // get data table current page @@ -1301,6 +1389,10 @@ func (lh *MasterKelainanHandler) HandlerAddKelainanDetail(c echo.Context) error ) } + logger.Info("list kelainan detail add", + zap.Any("return", dataKelainanDetailList), + ) + // new add form newForm := masterkelainan.BodyFormKelainanDetail( models.CustomTextFieldv2Prm{ @@ -1333,6 +1425,10 @@ func (lh *MasterKelainanHandler) HandlerAddKelainanDetail(c echo.Context) error // new table listing contentKelainanDetailComponent := masterkelainan.TableKelainanDetail( dataKelainanDetailList, tableDetailID, + "/dev/kelainandetail/opendelete", + "#"+dialogDetailDeleteBodyID, + "outerHTML", + "#dialogDetailDeleteBodyID, #dialogDetailDeleteID, #tableDetailID", ) // new pagination @@ -1340,7 +1436,7 @@ func (lh *MasterKelainanHandler) HandlerAddKelainanDetail(c echo.Context) error currPage, "/dev/kelainandetailpagination", paginationDetailID, - "#tableDetailID, #searchDetailID, #"+searchDetailID+", #paginationDetailID", + "#tableDetailID, #searchDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID, #"+searchDetailID+", #paginationDetailID", "#"+paginationDetailID, "outerHTML", "", "true") toastSuccess := customtoastv2.CustomToastV2Show("Success", "Success add kelainan "+nameKelainanDetail, "success") @@ -1384,3 +1480,150 @@ func (lh *MasterKelainanHandler) HandlerCloseFormAddDetail(c echo.Context) error dialogDetailAddBodyID, masterkelainan.JsHideModalDetail("")) return utils.View(c, newForm) } + +func (lh *MasterKelainanHandler) HandlerOpenDeleteFormDetail(c echo.Context) error { + id := c.QueryParam("id") + dialogDetailDeleteID := c.QueryParam("dialogDetailDeleteID") + dialogDetailDeleteBodyID := c.QueryParam("dialogDetailDeleteBodyID") + + logger, _ := zap.NewProduction() + defer logger.Sync() + logger.Info("CEK dialogDetailDeleteBodyID", + zap.Any("dialogDetailDeleteBodyID", dialogDetailDeleteBodyID), + ) + + dataKelainanDetail, err := lh.MasterKelainanService.GetKelainanDetailByID(id) + + if err != nil { + newForm := masterkelainan.DeleteConfirmationBodyDetail( + models.CustomTextFieldv2Prm{Name: "kelainandetailid", Type: "hidden", Value: strconv.Itoa(dataKelainanDetail.Mcu_KelainanID)}, + dialogDetailDeleteBodyID, + "Apakah anda yakin menghapus kelainan berikut ?", + []string{"Nama Kelainan", "Nama Klasifikasi"}, + []string{"", ""}, + masterkelainan.JsShowModalDetail("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get kelainan error", "danger"), newForm}) + } + newForm := masterkelainan.DeleteConfirmationBodyDetail( + models.CustomTextFieldv2Prm{Name: "kelainandetailid", Type: "hidden", Value: strconv.Itoa(dataKelainanDetail.Mcu_KelainanID)}, + dialogDetailDeleteBodyID, + "Apakah anda yakin menghapus kelainan berikut ?", + []string{"Nama Kelainan", "Nama Klasifikasi"}, + []string{dataKelainanDetail.Mcu_KelainanName, dataKelainanDetail.Mcu_KelainanClasification}, + masterkelainan.JsShowModalDetail("#"+dialogDetailDeleteID)) + + return utils.View(c, newForm) +} + +func (lh *MasterKelainanHandler) HandlerCloseDeleteFormDetail(c echo.Context) error { + dialogDetailDeleteBodyID := c.FormValue("dialogDetailDeleteBodyID") + newForm := masterkelainan.DeleteConfirmationBodyDetail( + models.CustomTextFieldv2Prm{Name: "kelainandetailid", Type: "hidden", Value: ""}, + dialogDetailDeleteBodyID, + "Apakah anda yakin menghapus kelainan berikut ?", + []string{"Nama Kelainan", "Nama Klasifikasi"}, + []string{"", ""}, + masterkelainan.JsShowModalDetail("")) + return utils.View(c, newForm) +} + +func (lh *MasterKelainanHandler) HandlerDeleteKelainanDetail(c echo.Context) error { + logger, _ := zap.NewProduction() + defer logger.Sync() + + // prm form kelainan + id := c.FormValue("kelainandetailid") + tableDetailID := c.FormValue("tableDetailID") + paginationDetailID := c.FormValue("paginationDetailID") + searchDetailID := c.FormValue("searchDetailID") + searchdetail := c.FormValue("searchdetail") + currPagePrm := c.FormValue("currpage" + paginationDetailID) + dialogDetailDeleteID := c.FormValue("dialogDetailDeleteID") + dialogDetailDeleteBodyID := c.FormValue("dialogDetailDeleteBodyID") + + currPage, err := strconv.Atoi(currPagePrm) + if err != nil { + return err + } + + logger.Info("PARAMETER LIST", + zap.Any("selectedid", id), + zap.Any("searchdetail", searchdetail), + zap.Any("currPage", currPage), + ) + + dataKelainanDetail, err := lh.MasterKelainanService.DeleteKelainanDetail(id) + if err != nil { + logger.Info("Error", + zap.Any("Error", err), + ) + newForm := masterkelainan.DeleteConfirmationBodyDetail( + models.CustomTextFieldv2Prm{Name: "kelainandetailid", Type: "hidden", Value: ""}, + dialogDetailDeleteBodyID, + "Apakah anda yakin menghapus kelainan berikut ?", + []string{"Nama Kelainan", "Nama Klasifikasi"}, + []string{"", ""}, + masterkelainan.JsShowModalDetail("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), newForm}) + } + logger.Info("Kelainan", + zap.Any("return", dataKelainanDetail), + ) + + //get list kelainan for table + // kelainanDetailList, totalpage, err := lh.MasterKelainanService.GetListMasterKelainanDetail(id, searchdetail, currPage, 5) + kelainanDetailList, totalpage, err := lh.MasterKelainanService.GetListMasterKelainanDetail(id, searchdetail, currPage, 5) + logger.Info("list kelainan detail delete", + zap.Any("return", kelainanDetailList), + ) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET KELAINAN", + zap.Any("error", err), + ) + fmt.Println(dataKelainanDetail) + return err + } + if len(kelainanDetailList) == 0 && totalpage > 1 { + currPage = currPage - 1 + kelainanDetailList, _, err = lh.MasterKelainanService.GetListMasterKelainanDetail(id, searchdetail, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET KELAINAN", + zap.Any("error", err), + ) + return err + } + } + + tablecomponent := masterkelainan.TableKelainanDetail(kelainanDetailList, + tableDetailID, + "/dev/kelainandetail/opendelete", + "#"+dialogDetailDeleteBodyID, + "outerHTML", + "#dialogDetailDeleteBodyID, #dialogDetailDeleteID, #tableDetailID", + ) + + kelainanDetailPaginationCmp := pagination.PaginationV2( + totalpage, + currPage, + "/dev/kelainandetailpagination", + paginationDetailID, + "#tableDetailID, #searchDetailID, #"+searchDetailID+", #paginationDetailID, #dialogDetailDeleteBodyID, #dialogDetailDeleteID", + "#"+paginationDetailID, + "outerHTML", "", "true", + ) + + newForm := masterkelainan.DeleteConfirmationBodyDetail( + models.CustomTextFieldv2Prm{Name: "kelainandetailid", Type: "hidden", Value: ""}, + dialogDetailDeleteBodyID, + "Apakah anda yakin menghapus kelainan berikut ?", + []string{"Nama Kelainan", "Nama Klasifikasi"}, + []string{""}, + masterkelainan.JsHideModalDetail("#"+dialogDetailDeleteID)) + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil delete Kelainan ", "success") + + retVal := []templ.Component{toastSuccess, tablecomponent, kelainanDetailPaginationCmp, newForm} + + return utils.ViewMulti(c, retVal) +} diff --git a/handlers/routes.go b/handlers/routes.go index 20d17eb..b67db8d 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -231,4 +231,7 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.GET("/kelainandetailpagination", devKLhandlers.HandlerShowMdKelainanDetailPagination) dev.POST("/kelainandetail/closeaddform", devKLhandlers.HandlerCloseFormAddDetail) dev.POST("/kelainandetail/add", devKLhandlers.HandlerAddKelainanDetail) + dev.GET("/kelainandetail/opendelete", devKLhandlers.HandlerOpenDeleteFormDetail) + dev.POST("/kelainandetail/closedeleteform", devKLhandlers.HandlerCloseDeleteFormDetail) + dev.POST("/kelainandetail/delete", devKLhandlers.HandlerDeleteKelainanDetail) } diff --git a/services/dev/masterkelainan.services.go b/services/dev/masterkelainan.services.go index dc2bb34..5e97a3b 100644 --- a/services/dev/masterkelainan.services.go +++ b/services/dev/masterkelainan.services.go @@ -357,3 +357,35 @@ func (su *ServicesMasterKelainan) AddKelainanDetail(name string, nameclassificat return data, nil } + +func (su *ServicesMasterKelainan) DeleteKelainanDetail(id string) (models.KelainanDetail, error) { + logger, _ := zap.NewProduction() + var data models.KelainanDetail + + qry := `UPDATE mcu_kelainan + SET Mcu_KelainanIsActive = 'N', + Mcu_KelainanLastUpdated = NOW() + WHERE Mcu_KelainanID = ?` + + rst := dbx.Handlex.MustExec(qry, id) + _, err := rst.RowsAffected() + + if err != nil { + defer logger.Sync() + logger.Error("Error delete kelainan", + zap.String("id", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + + data, err = su.GetKelainanDetailByID(id) + if err != nil { + defer logger.Sync() + logger.Error("Error get kelainan by id", + zap.String("id", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + + return data, nil +} diff --git a/views/dev/masterkelainan/masterkelainan.templ b/views/dev/masterkelainan/masterkelainan.templ index a8c5eb0..fb088d0 100644 --- a/views/dev/masterkelainan/masterkelainan.templ +++ b/views/dev/masterkelainan/masterkelainan.templ @@ -21,6 +21,8 @@ templ ContentMasterKelainan( searchDetailID string, dialogDetailAddID string, dialogDetailAddBodyID string, + dialogDetailDeleteID string, + dialogDetailDeleteBodyID string, breadcrumb templ.Component, tablecontent templ.Component, filterComponent templ.Component, @@ -32,6 +34,7 @@ templ ContentMasterKelainan( filterDetailComponent templ.Component, paginationDetailComponent templ.Component, modalDetailAddForm templ.Component, + modalDetailForm templ.Component, ) {
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", @@ -95,6 +98,14 @@ templ ContentMasterKelainan( Name: "dialogDetailAddBodyID", Type: "hidden", Value: dialogDetailAddBodyID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogDetailDeleteID", + Name: "dialogDetailDeleteID", + Type: "hidden", + Value: dialogDetailDeleteID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogDetailDeleteBodyID", + Name: "dialogDetailDeleteBodyID", + Type: "hidden", + Value: dialogDetailDeleteBodyID})
@breadcrumb @@ -158,6 +169,7 @@ templ ContentMasterKelainan( @tabledetailcontent @paginationDetailComponent @modalDetailAddForm + @modalDetailForm
diff --git a/views/dev/masterkelainan/masterkelainan_templ.go b/views/dev/masterkelainan/masterkelainan_templ.go index ae99188..ecebec7 100644 --- a/views/dev/masterkelainan/masterkelainan_templ.go +++ b/views/dev/masterkelainan/masterkelainan_templ.go @@ -31,6 +31,8 @@ func ContentMasterKelainan( searchDetailID string, dialogDetailAddID string, dialogDetailAddBodyID string, + dialogDetailDeleteID string, + dialogDetailDeleteBodyID string, breadcrumb templ.Component, tablecontent templ.Component, filterComponent templ.Component, @@ -42,6 +44,7 @@ func ContentMasterKelainan( filterDetailComponent templ.Component, paginationDetailComponent templ.Component, modalDetailAddForm templ.Component, + modalDetailForm templ.Component, ) templ.Component { return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) @@ -165,6 +168,20 @@ func ContentMasterKelainan( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogDetailDeleteID", + Name: "dialogDetailDeleteID", + Type: "hidden", + Value: dialogDetailDeleteID}).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "dialogDetailDeleteBodyID", + Name: "dialogDetailDeleteBodyID", + Type: "hidden", + Value: dialogDetailDeleteBodyID}).Render(ctx, templ_7745c5c3_Buffer) + 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 @@ -188,7 +205,7 @@ func ContentMasterKelainan( var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs("#" + dialogAddID) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\masterkelainan.templ`, Line: 115, Col: 39} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\masterkelainan.templ`, Line: 126, Col: 39} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { @@ -201,7 +218,7 @@ func ContentMasterKelainan( var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs("#" + dialogAddID) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\masterkelainan.templ`, Line: 124, Col: 38} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\masterkelainan.templ`, Line: 135, Col: 38} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { @@ -246,7 +263,7 @@ func ContentMasterKelainan( var templ_7745c5c3_Var4 string templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs("#" + dialogDetailAddID) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\masterkelainan.templ`, Line: 145, Col: 45} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\masterkelainan.templ`, Line: 156, Col: 45} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) if templ_7745c5c3_Err != nil { @@ -259,7 +276,7 @@ func ContentMasterKelainan( var templ_7745c5c3_Var5 string templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs("#" + dialogDetailAddID) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\masterkelainan.templ`, Line: 154, Col: 44} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\masterkelainan.templ`, Line: 165, Col: 44} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) if templ_7745c5c3_Err != nil { @@ -281,6 +298,10 @@ func ContentMasterKelainan( if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + templ_7745c5c3_Err = modalDetailForm.Render(ctx, templ_7745c5c3_Buffer) + 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 diff --git a/views/dev/masterkelainan/mdkelainandetailformmodal.templ b/views/dev/masterkelainan/mdkelainandetailformmodal.templ index 17c03a4..e5235c0 100644 --- a/views/dev/masterkelainan/mdkelainandetailformmodal.templ +++ b/views/dev/masterkelainan/mdkelainandetailformmodal.templ @@ -143,3 +143,53 @@ templ BtnCloseFormKelainanDetail(LinkClose string, targetClose string, hxSwapClo } + +templ DeleteConfirmationBodyDetail(inputId models.CustomTextFieldv2Prm, + componentID string, + message string, + datHeader []string, + dataText []string, + hxOnLoad templ.ComponentScript) { +
+

{ message }

+
+
+
+ for _, v := range datHeader { +
{ v }
+ } +
+
+ for _, v := range dataText { +
+ { v } +
+ } +
+
+
+ @customtextfield.CustomTextFieldv2(inputId) +
+} + +templ ActionFormKelainanDetailDelete(LinkClose string, targetClose string, hxSwapClose string, modalID string) { +
+ + +
+} diff --git a/views/dev/masterkelainan/mdkelainandetailformmodal_templ.go b/views/dev/masterkelainan/mdkelainandetailformmodal_templ.go index b767591..c522f03 100644 --- a/views/dev/masterkelainan/mdkelainandetailformmodal_templ.go +++ b/views/dev/masterkelainan/mdkelainandetailformmodal_templ.go @@ -559,3 +559,205 @@ func BtnCloseFormKelainanDetail(LinkClose string, targetClose string, hxSwapClos return templ_7745c5c3_Err }) } + +func DeleteConfirmationBodyDetail(inputId models.CustomTextFieldv2Prm, + componentID string, + message string, + datHeader []string, + dataText []string, + hxOnLoad templ.ComponentScript) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var29 := templ.GetChildren(ctx) + if templ_7745c5c3_Var29 == nil { + templ_7745c5c3_Var29 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, hxOnLoad) + 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 + } + var templ_7745c5c3_Var32 string + templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(message) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainandetailformmodal.templ`, Line: 154, Col: 14} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) + 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 + } + for _, v := range datHeader { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var33 string + templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(v) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainandetailformmodal.templ`, Line: 159, Col: 68} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) + 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("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for _, v := range dataText { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var34 string + templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(v) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainandetailformmodal.templ`, Line: 165, Col: 10} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) + 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("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = customtextfield.CustomTextFieldv2(inputId).Render(ctx, templ_7745c5c3_Buffer) + 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 + }) +} + +func ActionFormKelainanDetailDelete(LinkClose string, targetClose string, hxSwapClose string, modalID string) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var35 := templ.GetChildren(ctx) + if templ_7745c5c3_Var35 == nil { + templ_7745c5c3_Var35 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, JsHideModalDetail(modalID)) + 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 + }) +} diff --git a/views/dev/masterkelainan/mdkelainandetailtable.templ b/views/dev/masterkelainan/mdkelainandetailtable.templ index 0d34d22..a155325 100644 --- a/views/dev/masterkelainan/mdkelainandetailtable.templ +++ b/views/dev/masterkelainan/mdkelainandetailtable.templ @@ -2,18 +2,33 @@ package masterkelainan import "cpone/models" import "cpone/component/table" +import "strconv" templ TableKelainanDetail(data []models.KelainanDetail, tableDetailID string, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, ) {
@tablecomponent.TableV3([]string{"NO", "KELAINAN", "AKSI"}, []string{"10%", "60%", "30%"}, - TableDetailRow(data)) + TableDetailRow(data, + hxGetDelete, + hxTargetDelete, + hxSwapDelete, + hxIncludeDelete, + ))
} -templ TableDetailRow(data []models.KelainanDetail) { +templ TableDetailRow(data []models.KelainanDetail, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, +) { if len(data) == 0 { Data Tidak Ditemukan @@ -29,8 +44,39 @@ templ TableDetailRow(data []models.KelainanDetail) { } - action + @TableDetailAction(v.Mcu_KelainanID, + hxGetDelete, + hxTargetDelete, + hxSwapDelete, + hxIncludeDelete, + ) } } + +templ TableDetailAction( + id int, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, +) { +
+ + action\r") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = TableDetailAction(v.Mcu_KelainanID, + hxGetDelete, + hxTargetDelete, + hxSwapDelete, + hxIncludeDelete, + ).Render(ctx, templ_7745c5c3_Buffer) + 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 } @@ -142,3 +170,85 @@ func TableDetailRow(data []models.KelainanDetail) templ.Component { return templ_7745c5c3_Err }) } + +func TableDetailAction( + id int, + hxGetDelete string, + hxTargetDelete string, + hxSwapDelete string, + hxIncludeDelete string, +) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var7 := templ.GetChildren(ctx) + if templ_7745c5c3_Var7 == nil { + templ_7745c5c3_Var7 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, 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 + }) +} diff --git a/views/dev/masterkelainan/mdkelainantable.templ b/views/dev/masterkelainan/mdkelainantable.templ index dd0e21c..369805f 100644 --- a/views/dev/masterkelainan/mdkelainantable.templ +++ b/views/dev/masterkelainan/mdkelainantable.templ @@ -72,7 +72,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, #sas" + strconv.Itoa(v.Mcu_KelainanGroupID) } + hx-include={ "#selectedID, #paginationID, #dialogEditBodyID, #dialogEditID, #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)) } diff --git a/views/dev/masterkelainan/mdkelainantable_templ.go b/views/dev/masterkelainan/mdkelainantable_templ.go index cc7a75f..0b86295 100644 --- a/views/dev/masterkelainan/mdkelainantable_templ.go +++ b/views/dev/masterkelainan/mdkelainantable_templ.go @@ -177,9 +177,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, #sas" + strconv.Itoa(v.Mcu_KelainanGroupID)) + 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)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 75, Col: 224} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\masterkelainan\mdkelainantable.templ`, Line: 75, Col: 274} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) if templ_7745c5c3_Err != nil {