From 466aa0d9cf4d6592dbbd418ad7c981e3057ccfc0 Mon Sep 17 00:00:00 2001 From: adibwp Date: Tue, 4 Jun 2024 15:16:57 +0700 Subject: [PATCH] add delete func + dialog --- handlers/dev/md.nonlabtemplate.handlers.go | 185 ++++++++++++++++++ handlers/routes.go | 3 + services/dev/md.nonlabtemplate.services.go | 51 +++++ .../mdnonlabtemplate/mdnonlabtmptmodal.templ | 2 +- .../mdnonlabtmptmodal_templ.go | 2 +- .../mdnonlabtmptmodaldel.templ | 2 +- .../mdnonlabtmptmodaldel_templ.go | 2 +- .../nonlabtemplatetable.templ | 8 +- .../nonlabtemplatetable_templ.go | 16 +- 9 files changed, 255 insertions(+), 16 deletions(-) diff --git a/handlers/dev/md.nonlabtemplate.handlers.go b/handlers/dev/md.nonlabtemplate.handlers.go index fc62616..386cfd8 100644 --- a/handlers/dev/md.nonlabtemplate.handlers.go +++ b/handlers/dev/md.nonlabtemplate.handlers.go @@ -6,6 +6,7 @@ import ( navbarmenu "cpone/component/navbar" "cpone/component/pagination" sidebaruserprofile "cpone/component/sidebar_user_profile" + customtoastv2 "cpone/component/toastbootstrap" "cpone/models" "cpone/services" "cpone/utils" @@ -21,6 +22,8 @@ import ( type MDNonlabTemplateServices interface { GetMDNonLabTemplateBreadcrumb() (models.BreadCrumbV1, error) GetListNonlabTemplate(search string, currentPage int, rowPerPage int) ([]models.MDNonlabTemplate, int, error) + GetMDNonlabTemplateByID(id string) (models.MDNonlabTemplate, error) + DeleteDataNonlabTemplate(id string) (models.MDNonlabTemplate, error) } type MDNonlabTemplateHandler struct { @@ -122,6 +125,59 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex ) // dialog delete + dialogDeleteCmp := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate( + dialogDeleteBodyID, + models.CustomTextFieldv2Prm{ + Label: "ID Nonlab Template", + Name: "nonlabtemplateid", + Placeholder: "ID Nonlab Template", + Type: "hidden", + ID: "nonlabtemplateinputid", + }, + models.CustomTextFieldv2Prm{ + Label: "Name Nonlab Template", + Name: "nonlabtemplatename", + Placeholder: "Nama Nonlab Template", + Type: "text", + ID: "nonlabtemplateinputname", + }, + models.CustomCheckboxv1Prm{ + Name: "nonlabtemplateflag", + ID: "nonlabtemplateinputname", + Text: "Template Fisik", + Value: "N", + }, + dev_mdnonlabtemplateview.JSHideModal(""), + ) + + modalActionDeleteComp := dev_mdnonlabtemplateview.ActionFormNonlabTemplateDelete( + "/dev/md/nonlabtemplate/closedeleteform", + "#"+dialogDeleteBodyID, + "outerHTML", + "#"+dialogDeleteID, + ) + + btnCloseModalDelete := dev_mdnonlabtemplateview.BtnCloseFormMDNonlabTmplt( + "/dev/md/nonlabtemplate/closedeleteform", + "#"+dialogDeleteBodyID, + "outerHTML", + "#"+dialogDeleteID, + ) + + modalDeleteFormComponent := dev_mdnonlabtemplateview.MDNonlabTmpltForm( + models.MDNonlabTemplateForm{ + IDComponent: "formnonlabtemplate", + Link: "/dev/md/nonlabtemplate/delete", + HxTarget: "#" + dialogDeleteBodyID, + HxSwap: "outerHTML", + HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID, + ModalID: dialogDeleteID, + ModalTitle: "Delete - Non Lab Template", + DialogBody: dialogDeleteCmp, + DialogAction: modalActionDeleteComp, + ButtonClose: btnCloseModalDelete, + }, + ) content := dev_mdnonlabtemplateview.MdNonlabTemplateScreen( tableID, @@ -137,6 +193,7 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex tableFilter, tableComp, tablePagination, + modalDeleteFormComponent, ) css := dev_mdnonlabtemplateview.CSSmdnontemplate() @@ -253,3 +310,131 @@ func (nlt *MDNonlabTemplateHandler) HandleNonlabTempltPagination(c echo.Context) retval = append(retval, tablePagination) return utils.ViewMulti(c, retval) } + +func (nlt *MDNonlabTemplateHandler) HandleOpenFormDelete(c echo.Context) error { + id := c.QueryParam("id") + dialogDeleteID := c.QueryParam("dialogDeleteID") + dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID") + + dataMDNLT, err := nlt.MDNonlabTemplateServices.GetMDNonlabTemplateByID(id) + if err != nil { + newForm := dev_mdnonlabtemplateview.DeleteKonfirmasiBody( + models.CustomTextFieldv2Prm{Name: "nonlabtemplateid", Type: "hidden", Value: "0"}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus non lab template berikut ?", + []string{"NAME"}, + []string{""}, + dev_mdnonlabtemplateview.JSHideModal(""), + ) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), newForm}) + } + + newForm := dev_mdnonlabtemplateview.DeleteKonfirmasiBody( + models.CustomTextFieldv2Prm{Name: "nonlabtemplateid", Type: "hidden", Value: strconv.Itoa(dataMDNLT.NonlabTemplateID)}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus non lab template berikut ?", + []string{"NAME"}, + []string{dataMDNLT.NonlabTemplateName}, + dev_mdnonlabtemplateview.JSShowModal("#"+dialogDeleteID), + ) + return utils.View(c, newForm) +} + +func (nlt *MDNonlabTemplateHandler) HandleCloseFormDelete(c echo.Context) error { + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") + newForm := dev_mdnonlabtemplateview.DeleteKonfirmasiBody( + models.CustomTextFieldv2Prm{Type: "hidden", Value: "0", Name: "nonlabtemplateid"}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus non lab template berikut ?", + []string{"NAME"}, + []string{""}, + dev_mdnonlabtemplateview.JSHideModal(""), + ) + return utils.View(c, newForm) +} + +func (nlt *MDNonlabTemplateHandler) HandleDelete(c echo.Context) error { + logger, _ := zap.NewProduction() + defer logger.Sync() + + id := c.FormValue("nonlabtemplateid") + tableID := c.FormValue("tableID") + paginationID := c.FormValue("paginationID") + searchID := c.FormValue("searchID") + search := c.FormValue("search") + currPagePrm := c.FormValue("currpage" + paginationID) + // dialogAddBodyID := c.FormValue("dialogAddBodyID") + dialogDeleteID := c.FormValue("dialogDeleteID") + dialogEditBodyID := c.FormValue("dialogEditBodyID") + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") + + currPage, err := strconv.Atoi(currPagePrm) + if err != nil { + return err + } + logger.Info("ADD NON LAB TEMPLATE PARAM", zap.Any("tableid", tableID), zap.Any("search", search), zap.Any("currPage", currPage)) + + // delete data from db + respDel, err := nlt.MDNonlabTemplateServices.DeleteDataNonlabTemplate(id) + if err != nil { + logger.Info("Error", zap.Any("error", err)) + newForm := dev_mdnonlabtemplateview.DeleteKonfirmasiBody( + models.CustomTextFieldv2Prm{Name: "nonlabtemplateid", Type: "hidden", Value: ""}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus non lab template berikut ?", + []string{"NAME"}, + []string{""}, + dev_mdnonlabtemplateview.JSHideModal(""), + ) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), newForm}) + } + logger.Info("Response Delete", zap.Any("Resp", respDel)) + + dataNLTList, totalPage, err := nlt.MDNonlabTemplateServices.GetListNonlabTemplate(search, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("Error get list data non lab template", zap.Any("error", err)) + return err + } + + tableComp := dev_mdnonlabtemplateview.TableNonlabTmplt(dataNLTList, + tableID, + "/dev/md/nonlabtemplate/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/nonlabtemplate/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + ) + + paginationTable := pagination.PaginationV3( + totalPage, + currPage, + "/dev/md/nonlabtemplate/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "#"+paginationID, + "outerHTML", "", "true", + dev_mdnonlabtemplateview.BeforeRequestContent(), + dev_mdnonlabtemplateview.AfterRequestContent(), + ) + + var retVal []templ.Component + newForm := dev_mdnonlabtemplateview.DeleteKonfirmasiBody( + models.CustomTextFieldv2Prm{Name: "nonlabtemplateid", Type: "hidden", Value: ""}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus non lab template berikut ?", + []string{"NAME"}, + []string{""}, + dev_mdnonlabtemplateview.JSHideModal("#"+dialogDeleteID), + ) + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil delete non lab template ", "success") + retVal = append(retVal, toastSuccess) + retVal = append(retVal, tableComp) + retVal = append(retVal, paginationTable) + retVal = append(retVal, newForm) + + return utils.ViewMulti(c, retVal) +} diff --git a/handlers/routes.go b/handlers/routes.go index df158e7..07f1c02 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -284,6 +284,9 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.GET("/md/nonlabtemplate", devMDNonlabTemplateHandlers.HandleShowNonlabTemplateScreen) dev.GET("/md/nonlabtemplate/filter", devMDNonlabTemplateHandlers.HandleFilterNonlabTemplate) dev.GET("/md/nonlabtemplate/changepage", devMDNonlabTemplateHandlers.HandleNonlabTempltPagination) + dev.GET("/md/nonlabtemplate/opendelete", devMDNonlabTemplateHandlers.HandleOpenFormDelete) + dev.POST("/md/nonlabtemplate/closedeleteform", devMDNonlabTemplateHandlers.HandleCloseFormDelete) + dev.POST("/md/nonlabtemplate/delete", devMDNonlabTemplateHandlers.HandleDelete) // masterdata nat unit devMdNatUnitServices := dev_services.NewMdNatUnitServices(appStore) diff --git a/services/dev/md.nonlabtemplate.services.go b/services/dev/md.nonlabtemplate.services.go index 3e2dd85..5403033 100644 --- a/services/dev/md.nonlabtemplate.services.go +++ b/services/dev/md.nonlabtemplate.services.go @@ -7,6 +7,8 @@ import ( "fmt" "math" "strings" + + "go.uber.org/zap" ) type MDNonlabTemplateServices struct { @@ -82,3 +84,52 @@ func (nlt *MDNonlabTemplateServices) GetListNonlabTemplate(search string, currPa return ret, totalPage, nil } + +func (nlt *MDNonlabTemplateServices) GetMDNonlabTemplateByID(id string) (models.MDNonlabTemplate, error) { + logger, _ := zap.NewProduction() + var ret models.MDNonlabTemplate + + q := ` + SELECT + NonlabTemplateID, + NonlabTemplateName, + NonlabTemplateFlagFisik, + NonlabTemplateIsActive, + NonlabTemplateCreated, + NonlabTemplateLastUpdated + FROM nonlab_template + WHERE NonlabTemplateID = ? + ` + err := dbx.Handlex.Get(&ret, q, id) + if err != nil { + defer logger.Sync() + logger.Error("Error get data non lab template by id vs", + zap.String("ID", id), + zap.Error(err), + ) + return ret, fmt.Errorf("QUERY FAILED GET DATA BY ID") + } + return ret, nil +} + +func (nlt *MDNonlabTemplateServices) DeleteDataNonlabTemplate(id string) (models.MDNonlabTemplate, error) { + logger, _ := zap.NewProduction() + var ret models.MDNonlabTemplate + + q := ` + UPDATE nonlab_template + SET + NonlabTemplateIsActive = 'N', + NonlabTemplateLastUpdated = NOW() + WHERE NonlabTemplateID = ? + ` + dlt := dbx.Handlex.MustExec(q, id) + _, err := dlt.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error delete sample station", zap.String("id", id)) + return ret, fmt.Errorf("query failed delete non lab template") + } + + return nlt.GetMDNonlabTemplateByID(id) +} diff --git a/views/dev/mdnonlabtemplate/mdnonlabtmptmodal.templ b/views/dev/mdnonlabtemplate/mdnonlabtmptmodal.templ index c12d002..5681aeb 100644 --- a/views/dev/mdnonlabtemplate/mdnonlabtmptmodal.templ +++ b/views/dev/mdnonlabtemplate/mdnonlabtmptmodal.templ @@ -18,7 +18,7 @@ templ MDNonlabTmpltForm(data models.MDNonlabTemplateForm) { hx-on::before-request={ HandleFormBeforeRequest() } hx-on::after-request={ HandleFormAfterRequest() } > - @modalcomponent.ModalXL(data.ModalID, + @modalcomponent.Modal(data.ModalID, data.ModalTitle, data.DialogBody, data.DialogAction, diff --git a/views/dev/mdnonlabtemplate/mdnonlabtmptmodal_templ.go b/views/dev/mdnonlabtemplate/mdnonlabtmptmodal_templ.go index 0f28e68..8e7e554 100644 --- a/views/dev/mdnonlabtemplate/mdnonlabtmptmodal_templ.go +++ b/views/dev/mdnonlabtemplate/mdnonlabtmptmodal_templ.go @@ -123,7 +123,7 @@ func MDNonlabTmpltForm(data models.MDNonlabTemplateForm) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = modalcomponent.ModalXL(data.ModalID, + templ_7745c5c3_Err = modalcomponent.Modal(data.ModalID, data.ModalTitle, data.DialogBody, data.DialogAction, diff --git a/views/dev/mdnonlabtemplate/mdnonlabtmptmodaldel.templ b/views/dev/mdnonlabtemplate/mdnonlabtmptmodaldel.templ index 1361b7b..5442d11 100644 --- a/views/dev/mdnonlabtemplate/mdnonlabtmptmodaldel.templ +++ b/views/dev/mdnonlabtemplate/mdnonlabtmptmodaldel.templ @@ -31,7 +31,7 @@ templ DeleteKonfirmasiBody( } -templ ActionFormMDSampleStationDelete(LinkClose string, targetClose string, hxSwapClose string, modalID string) { +templ ActionFormNonlabTemplateDelete(LinkClose string, targetClose string, hxSwapClose string, modalID string) {