diff --git a/handlers/dev/md.nonlabtemplate.handlers.go b/handlers/dev/md.nonlabtemplate.handlers.go index f978d0e..da9463f 100644 --- a/handlers/dev/md.nonlabtemplate.handlers.go +++ b/handlers/dev/md.nonlabtemplate.handlers.go @@ -28,9 +28,10 @@ type MDNonlabTemplateServices interface { AddNonlabTemplate(nama string, fisik string) (models.MDNonlabTemplate, error) UpdateNonlabTemplate(id string, nama string, fisik string) (models.MDNonlabTemplate, error) GetIDNonlabTemplate(name string) (int, error) - GetDetailByIDNonlabTemplate(id string) (models.NonlabTemplateDetail, error) + GetDetailByID(id string) (models.NonlabTemplateDetail, error) ListDetailByIDNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error) - AddDetailNonlabTemplate(idnonlab string, kode string, name string, flagActive string) (models.NonlabTemplateDetail, error) + AddDetailNonlabTemplate(idnonlab string, kode string, name string, flagActive string) ([]models.NonlabTemplateDetail, error) + DeleteDetailNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error) } type MDNonlabTemplateHandler struct { @@ -56,6 +57,10 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex dialogDeleteID := utils.GenerateRandomID("dialogdeleteid") dialogDeleteBodyID := utils.GenerateRandomID("dialogdeletebodyid") + tableDetailID := utils.GenerateRandomID("tabledetailid") + detailEditID := utils.GenerateRandomID("detaileditid") + detailDeleteID := utils.GenerateRandomID("detaildeleteid") + dataMenu, err := services.GetMenu() if err != nil { fmt.Println(dataMenu) @@ -132,6 +137,19 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex ) // dialog add + var detailData []models.NonlabTemplateDetail + tableDetail := dev_mdnonlabtemplateview.TableDetail(detailData, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", + ) + dialogAddBody := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate( dialogAddBodyID, models.CustomTextFieldv2Prm{ @@ -167,16 +185,17 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex "/dev/md/nonlabtemplate/simpanama", "#"+dialogAddBodyID, "outerHTML", - "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + false, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), dev_mdnonlabtemplateview.BtnAddDetail( "/dev/md/nonlabtemplate/adddetail", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), + tableDetail, dev_mdnonlabtemplateview.JSShowModal(""), ) dialogAddBtn := dev_mdnonlabtemplateview.ActionFormMDNonlabTmplt( @@ -197,7 +216,7 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex Link: "/dev/md/nonlabtemplate/add", HxTarget: "#" + dialogAddBodyID, HxSwap: "outerHTML", - HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID, + HxInclude: "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID, ModalID: dialogAddID, ModalTitle: "New - Nonlab Template", DialogBody: dialogAddBody, @@ -254,6 +273,9 @@ func (nlt *MDNonlabTemplateHandler) HandleShowNonlabTemplateScreen(c echo.Contex dialogEditBodyID, dialogDeleteID, dialogDeleteBodyID, + tableDetailID, + detailEditID, + detailDeleteID, breadcrumbComp, tableFilter, tableComp, @@ -513,6 +535,22 @@ func (nlt *MDNonlabTemplateHandler) HandleCloseFormAdd(c echo.Context) error { dialogAddID := c.FormValue("dialogAddID") searchID := c.FormValue("searchID") paginationID := c.FormValue("paginationID") + tableDetailID := c.FormValue("tableDetailID") + detailEditID := c.FormValue("detailEditID") + detailDeleteID := c.FormValue("detailDeleteID") + + var detailData []models.NonlabTemplateDetail + tableDetail := dev_mdnonlabtemplateview.TableDetail(detailData, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", + ) dialogAddBody := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate( dialogAddBodyID, @@ -549,16 +587,17 @@ func (nlt *MDNonlabTemplateHandler) HandleCloseFormAdd(c echo.Context) error { "/dev/md/nonlabtemplate/simpanama", "#"+dialogAddBodyID, "outerHTML", - "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + false, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), dev_mdnonlabtemplateview.BtnAddDetail( "/dev/md/nonlabtemplate/adddetail", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), + tableDetail, dev_mdnonlabtemplateview.JSHideModal("#"+dialogAddID), ) return utils.View(c, dialogAddBody) @@ -570,10 +609,21 @@ func (nlt *MDNonlabTemplateHandler) HandleSimpanNama(c echo.Context) error { dialogAddID := c.FormValue("dialogAddID") searchID := c.FormValue("searchID") paginationID := c.FormValue("paginationID") + tableDetailID := c.FormValue("tableDetailID") + detailEditID := c.FormValue("detailEditID") + detailDeleteID := c.FormValue("detailDeleteID") fisik := c.FormValue("nonlabtemplatefisik") name := c.FormValue("nonlabtemplatename") id := c.FormValue("nonlabtemplateid") + var detailData []models.NonlabTemplateDetail + var respAdd models.MDNonlabTemplate + var err error + + if id != "" { + detailData, err = nlt.MDNonlabTemplateServices.ListDetailByIDNonlabTemplate(id) + logger.Info("error get id", zap.Any("err", err)) + } flagFisik := "N" if fisik == "on" { @@ -589,6 +639,17 @@ func (nlt *MDNonlabTemplateHandler) HandleSimpanNama(c echo.Context) error { } if formValidation != "" || namaValidation != "" { + tableDetail := dev_mdnonlabtemplateview.TableDetail(detailData, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", + ) nf := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate( dialogAddBodyID, models.CustomTextFieldv2Prm{ @@ -627,25 +688,23 @@ func (nlt *MDNonlabTemplateHandler) HandleSimpanNama(c echo.Context) error { "/dev/md/nonlabtemplate/simpanama", "#"+dialogAddBodyID, "outerHTML", - "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + false, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), dev_mdnonlabtemplateview.BtnAddDetail( "/dev/md/nonlabtemplate/adddetail", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), + tableDetail, dev_mdnonlabtemplateview.JSShowModal(""), ) toast := customtoastv2.CustomToastV2Show("Warning", formValidation, "warning") return utils.ViewMulti(c, []templ.Component{toast, nf}) } - var respAdd models.MDNonlabTemplate - var err error - if id != "" { respAdd, err = nlt.MDNonlabTemplateServices.UpdateNonlabTemplate(id, name, flagFisik) } else { @@ -692,15 +751,26 @@ func (nlt *MDNonlabTemplateHandler) HandleSimpanNama(c echo.Context) error { "/dev/md/nonlabtemplate/simpanama", "#"+dialogAddBodyID, "outerHTML", - "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + false, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), dev_mdnonlabtemplateview.BtnAddDetail( "/dev/md/nonlabtemplate/adddetail", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + ), + dev_mdnonlabtemplateview.TableDetail(detailData, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", ), dev_mdnonlabtemplateview.JSShowModal(""), ) @@ -746,15 +816,26 @@ func (nlt *MDNonlabTemplateHandler) HandleSimpanNama(c echo.Context) error { "/dev/md/nonlabtemplate/simpanama", "#"+dialogAddBodyID, "outerHTML", - "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + true, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), dev_mdnonlabtemplateview.BtnAddDetail( "/dev/md/nonlabtemplate/adddetail", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + ), + dev_mdnonlabtemplateview.TableDetail(detailData, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", ), dev_mdnonlabtemplateview.JSShowModal(""), ) @@ -777,6 +858,9 @@ func (nlt *MDNonlabTemplateHandler) HandleAddDetail(c echo.Context) error { dialogAddID := c.FormValue("dialogAddID") searchID := c.FormValue("searchID") paginationID := c.FormValue("paginationID") + tableDetailID := c.FormValue("tableDetailID") + detailEditID := c.FormValue("detailEditID") + detailDeleteID := c.FormValue("detailDeleteID") id := c.FormValue("nonlabtemplateid") template := c.FormValue("nonlabtemplatename") @@ -785,6 +869,9 @@ func (nlt *MDNonlabTemplateHandler) HandleAddDetail(c echo.Context) error { kode := c.FormValue("nltdetailkode") name := c.FormValue("nltdetailname") + var detailData []models.NonlabTemplateDetail + var err error + if fisik == "Y" { fisik = "on" } else { @@ -855,15 +942,26 @@ func (nlt *MDNonlabTemplateHandler) HandleAddDetail(c echo.Context) error { "/dev/md/nonlabtemplate/simpanama", "#"+dialogAddBodyID, "outerHTML", - "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + true, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), dev_mdnonlabtemplateview.BtnAddDetail( "/dev/md/nonlabtemplate/adddetail", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + ), + dev_mdnonlabtemplateview.TableDetail(detailData, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", ), dev_mdnonlabtemplateview.JSShowModal(""), ) @@ -914,15 +1012,26 @@ func (nlt *MDNonlabTemplateHandler) HandleAddDetail(c echo.Context) error { "/dev/md/nonlabtemplate/simpanama", "#"+dialogAddBodyID, "outerHTML", - "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + true, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), dev_mdnonlabtemplateview.BtnAddDetail( "/dev/md/nonlabtemplate/adddetail", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + ), + dev_mdnonlabtemplateview.TableDetail(detailData, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", ), dev_mdnonlabtemplateview.JSShowModal(""), ) @@ -968,18 +1077,119 @@ func (nlt *MDNonlabTemplateHandler) HandleAddDetail(c echo.Context) error { "/dev/md/nonlabtemplate/simpanama", "#"+dialogAddBodyID, "outerHTML", - "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + true, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, ), dev_mdnonlabtemplateview.BtnAddDetail( "/dev/md/nonlabtemplate/adddetail", "#"+dialogAddBodyID, "outerHTML", "#"+dialogAddID, - "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + ), + dev_mdnonlabtemplateview.TableDetail(resp, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", ), dev_mdnonlabtemplateview.JSShowModal(""), ) toast := customtoastv2.CustomToastV2Show("Success", "success insert detail "+name, "success") return utils.ViewMulti(c, []templ.Component{toast, returnBody}) } + +func (nlt *MDNonlabTemplateHandler) HandleDeleteDetail(c echo.Context) error { + logger, _ := zap.NewProduction() + defer logger.Sync() + + dialogAddBodyID := c.FormValue("dialogAddBodyID") + dialogAddID := c.FormValue("dialogAddID") + searchID := c.FormValue("searchID") + paginationID := c.FormValue("paginationID") + tableDetailID := c.FormValue("tableDetailID") + detailEditID := c.FormValue("detailEditID") + detailDeleteID := c.FormValue("detailDeleteID") + + id := c.QueryParam("id") + logger.Info("ID Selected", zap.Any("ID", id)) + + fisik := c.FormValue("nonlabtemplatefisik") + name := c.FormValue("nonlabtemplatename") + idTemplate := c.FormValue("nonlabtemplateid") + + respDel, err := nlt.MDNonlabTemplateServices.DeleteDetailNonlabTemplate(id) + if err != nil { + logger.Error("Error", zap.Any("error", err)) + } + logger.Info("Resp Delete", zap.Any("resp", respDel)) + + nf := dev_mdnonlabtemplateview.BodyFormMDNonlabTemplate( + dialogAddBodyID, + models.CustomTextFieldv2Prm{ + Name: "nonlabtemplateid", + ID: "nonlabtemplateinputid", + Type: "hidden", + Value: idTemplate, + }, + models.CustomTextFieldv2Prm{ + Placeholder: "Nama Template", + Name: "nonlabtemplatename", + ID: "nonlabtemplateinputname", + Type: "text", + Value: name, + }, + models.CustomCheckboxv1Prm{ + Text: "Template Fisik", + Name: "nonlabtemplatefisik", + ID: "nonlabtemplateinputname", + Value: fisik, + }, + models.CustomTextFieldv2Prm{ + Placeholder: "Kode", + Name: "nltdetailkode", + ID: "nltdetailinputkode", + Type: "text", + }, + models.CustomTextFieldv2Prm{ + Placeholder: "Nama Detail", + Name: "nltdetailname", + ID: "nltdetailinputkode", + Type: "text", + }, + dev_mdnonlabtemplateview.BtnSimpanNama( + "/dev/md/nonlabtemplate/simpanama", + "#"+dialogAddBodyID, + "outerHTML", + true, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + ), + dev_mdnonlabtemplateview.BtnAddDetail( + "/dev/md/nonlabtemplate/adddetail", + "#"+dialogAddBodyID, + "outerHTML", + "#"+dialogAddID, + "#tableID, #paginationID, #searchID, #tableDetailID, #detailEditID, #detailDeleteID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #"+searchID+", #currpage"+paginationID, + ), + dev_mdnonlabtemplateview.TableDetail(respDel, + tableDetailID, + "/dev/md/nonlabtemplate/pilihdetail", + "#"+detailEditID, + "outerHTML", + "#detailEditID, #detailDeleteID", + "/dev/md/nonlabtemplate/deletedetail", + "#"+detailDeleteID, + "outerHTML", + "#detailEditID, #detailDeleteID", + ), + dev_mdnonlabtemplateview.JSShowModal(""), + ) + toast := customtoastv2.CustomToastV2Show("Success", "Success delete detail", "success") + + return utils.ViewMulti(c, []templ.Component{toast, nf}) +} diff --git a/handlers/routes.go b/handlers/routes.go index c7d02ff..7e33a4c 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -290,6 +290,7 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.POST("/md/nonlabtemplate/simpanama", devMDNonlabTemplateHandlers.HandleSimpanNama) dev.POST("/md/nonlabtemplate/closeaddform", devMDNonlabTemplateHandlers.HandleCloseFormAdd) dev.POST("/md/nonlabtemplate/adddetail", devMDNonlabTemplateHandlers.HandleAddDetail) + dev.POST("/md/nonlabtemplate/deletedetail", devMDNonlabTemplateHandlers.HandleDeleteDetail) // 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 4a7cd53..fc765b4 100644 --- a/services/dev/md.nonlabtemplate.services.go +++ b/services/dev/md.nonlabtemplate.services.go @@ -128,7 +128,7 @@ func (nlt *MDNonlabTemplateServices) DeleteDataNonlabTemplate(id string) (models _, err := dlt.RowsAffected() if err != nil { defer logger.Sync() - logger.Error("Error delete sample station", zap.String("id", id)) + logger.Error("Error delete nonlab template", zap.String("id", id)) return ret, fmt.Errorf("query failed delete non lab template") } @@ -247,7 +247,7 @@ func (nlt *MDNonlabTemplateServices) GetIDNonlabTemplate(name string) (int, erro return ret, nil } -func (nlt *MDNonlabTemplateServices) GetDetailByIDNonlabTemplate(id string) (models.NonlabTemplateDetail, error) { +func (nlt *MDNonlabTemplateServices) GetDetailByID(id string) (models.NonlabTemplateDetail, error) { logger, _ := zap.NewProduction() var ret models.NonlabTemplateDetail @@ -262,7 +262,7 @@ func (nlt *MDNonlabTemplateServices) GetDetailByIDNonlabTemplate(id string) (mod NonlabTemplateDetaiM_LangID, NonlabTemplateDetailIsActive FROM nonlab_template_detail - WHERE NonlabTemplateDetailNonlabTemplateID = ? + WHERE NonlabTemplateDetailID = ? AND NonlabTemplateDetailIsActive = 'Y' ` err := dbx.Handlex.Get(&ret, q, id) @@ -309,9 +309,9 @@ func (nlt *MDNonlabTemplateServices) ListDetailByIDNonlabTemplate(id string) ([] return ret, nil } -func (nlt *MDNonlabTemplateServices) AddDetailNonlabTemplate(idnonlab string, kode string, name string, flagActive string) (models.NonlabTemplateDetail, error) { +func (nlt *MDNonlabTemplateServices) AddDetailNonlabTemplate(idnonlab string, kode string, name string, flagActive string) ([]models.NonlabTemplateDetail, error) { logger, _ := zap.NewProduction() - var ret models.NonlabTemplateDetail + var ret []models.NonlabTemplateDetail var count int prmKode := "%" + kode + "%" @@ -351,8 +351,80 @@ func (nlt *MDNonlabTemplateServices) AddDetailNonlabTemplate(idnonlab string, ko logger.Error("error insert data", zap.Any("kode", prmKode), zap.Any("nama", prmName)) return ret, fmt.Errorf("query failed to insert data: %v", err) } + logger.Info("Success Insert data", zap.Any("id", insertedID)) - s := strconv.Itoa(int(insertedID)) - - return nlt.GetDetailByIDNonlabTemplate(s) + return nlt.ListDetailByIDNonlabTemplate(idnonlab) +} + +func (nlt *MDNonlabTemplateServices) DeleteDetailNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error) { + logger, _ := zap.NewProduction() + var temp models.NonlabTemplateDetail + var ret []models.NonlabTemplateDetail + + temp, err := nlt.GetDetailByID(id) + if err != nil { + defer logger.Sync() + logger.Error("Error get current detail nonlab template", zap.Any("id", id)) + return ret, fmt.Errorf("query failed get current detail nonlab template") + } + + q := ` + UPDATE nonlab_template_detail + SET + NonlabTemplateDetailIsActive = 'N', + NonlabTemplateDetailLastUpdated = NOW() + WHERE NonlabTemplateDetailID = ? + AND NonlabTemplateDetailNonlabTemplateID = ? + ` + dlt := dbx.Handlex.MustExec(q, id, temp.NonlabTemplateDetailNonlabTemplateID) + _, err = dlt.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error delete detail nonlab template", zap.Any("id", id)) + return ret, fmt.Errorf("query failed delete detail nonlab template") + } + + s := strconv.Itoa(int(temp.NonlabTemplateDetailNonlabTemplateID)) + + return nlt.ListDetailByIDNonlabTemplate(s) +} + +func (nlt *MDNonlabTemplateServices) PilihDetailNonlabTemplate(id string) ([]models.NonlabTemplateDetail, error) { + logger, _ := zap.NewProduction() + var cek models.NonlabTemplateDetail + var ret []models.NonlabTemplateDetail + var flag string + + cek, err := nlt.GetDetailByID(id) + if err != nil { + defer logger.Sync() + logger.Error("Error cek current detail nonlab template", zap.Any("ID", id)) + return ret, fmt.Errorf("query failed cek current detail nonlab template") + } + + if cek.NonlabTemplateDetailFlagActive == "Y" { + flag = "N" + } else { + flag = "Y" + } + + q := ` + UPDATE nonlab_template_detail + SET + NonlabTemplateDetailFlagActive = ?, + NonlabTemplateDetailLastUpdated = NOW() + WHERE NonlabTemplateDetailID = ? + AND NonlabTemplateDetailNonlabTemplateID = ? + ` + updt := dbx.Handlex.MustExec(q, flag, id, cek.NonlabTemplateDetailNonlabTemplateID) + _, err = updt.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error update detail nonlab template", zap.Any("id", id), zap.Any("flag", flag)) + return ret, fmt.Errorf("query failed update detail nonlab template") + } + + s := strconv.Itoa(int(cek.NonlabTemplateDetailNonlabTemplateID)) + + return nlt.ListDetailByIDNonlabTemplate(s) } diff --git a/views/dev/mdnonlabtemplate/mdnonlabtemplate.templ b/views/dev/mdnonlabtemplate/mdnonlabtemplate.templ index f4f6ebb..ae9e381 100644 --- a/views/dev/mdnonlabtemplate/mdnonlabtemplate.templ +++ b/views/dev/mdnonlabtemplate/mdnonlabtemplate.templ @@ -14,6 +14,9 @@ templ MdNonlabTemplateScreen( dialogEditBodyID string, dialogDeleteID string, dialogDeleteBodyID string, + tableDetailID string, + detailEditID string, + detailDeleteID string, breadcrumb templ.Component, filtercomponent templ.Component, tablecontent templ.Component, @@ -59,6 +62,18 @@ templ MdNonlabTemplateScreen( Name: "dialogDeleteBodyID", Type: "hidden", Value: dialogDeleteBodyID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableDetailID", + Name: "tableDetailID", + Type: "hidden", + Value: tableDetailID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "detailEditID", + Name: "detailEditID", + Type: "hidden", + Value: detailEditID}) + @customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "detailDeleteID", + Name: "detailDeleteID", + Type: "hidden", + Value: detailDeleteID})