diff --git a/handlers/dev/md.groupresult.handlers.go b/handlers/dev/md.groupresult.handlers.go new file mode 100644 index 0000000..68319aa --- /dev/null +++ b/handlers/dev/md.groupresult.handlers.go @@ -0,0 +1,1456 @@ +package dev_handlers + +import ( + breadcrumadmin "cpone/component/breadcrumbadmin" + customtextfieldsearch "cpone/component/customtextfieldsearch" + navbarmenu "cpone/component/navbar" + "cpone/component/pagination" + sidebaruserprofile "cpone/component/sidebar_user_profile" + customtoastv2 "cpone/component/toastbootstrap" + "cpone/models" + "cpone/services" + "cpone/utils" + dev_mdgroupresultview "cpone/views/dev/mdgroupresult" + "fmt" + "strconv" + "strings" + + "github.com/a-h/templ" + "github.com/labstack/echo/v4" + "go.uber.org/zap" +) + +type MdGroupResultServices interface { + GetListMdGroupResult(search string, currentPage int, rowPerPage int) ([]models.GroupResult, int, error) + GetMdGroupResultByID(id string) (models.GroupResult, error) + AddMdGroupResult(groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error) + EditMdGroupResult(id string, groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error) + DeleteMdGroupResult(id string) (models.GroupResult, error) + GetMdGroupResultBreadcrumb(title string) (models.BreadCrumbV1, error) + GetMdGroupResultResumeMcu() ([]models.GroupResultResumeMcu, error) +} + +func NewMdGroupResultHandler(us MdGroupResultServices) *MdGroupResultHandler { + return &MdGroupResultHandler{ + MdGroupResultServices: us, + } +} + +type MdGroupResultHandler struct { + MdGroupResultServices MdGroupResultServices +} + +// INITIAL +func (lh *MdGroupResultHandler) HandleShowMdGroupResultScreen(c echo.Context) error { + logger, _ := zap.NewProduction() + //get sidebarmenu + tableID := utils.GenerateRandomID("tablebody") + paginationID := utils.GenerateRandomID("paginationid") + searchID := utils.GenerateRandomID("searchid") + dialogAddID := utils.GenerateRandomID("dialogaddID") + dialogAddBodyID := utils.GenerateRandomID("dialogaddbodyID") + dialogEditID := utils.GenerateRandomID("dialogEditID") + dialogEditBodyID := utils.GenerateRandomID("dialogEditbodyID") + dialogDeleteID := utils.GenerateRandomID("dialogDeleteID") + dialogDeleteBodyID := utils.GenerateRandomID("dialogDeletebodyID") + dataMenu, err := services.GetMenu() + fmt.Println(dataMenu) + fmt.Println(err) + if err != nil { + fmt.Println(dataMenu) + return err + } + + //get user login + dataUser, err := services.GetUserLogin() + fmt.Println(dataUser) + fmt.Println(err) + if err != nil { + fmt.Println(dataUser) + return err + } + defer logger.Sync() + logger.Info("LOAD USER DEV", + zap.Any("data", dataUser), + ) + + title := "Master Group Result" + + dataBreadCrumb, err := lh.MdGroupResultServices.GetMdGroupResultBreadcrumb(title) + fmt.Println(dataBreadCrumb) + fmt.Println(err) + if err != nil { + defer logger.Sync() + logger.Info("ERROR BREADCRUMB DEV", + zap.Any("error", err), + ) + fmt.Println(dataBreadCrumb) + return err + } + + defer logger.Sync() + logger.Info("LOAD BREADCRUMB DEV", + zap.Any("data", dataBreadCrumb), + ) + //Breadcrumb component + breadcrumbComponent := breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb) + // navbar menu + navbarmenuComponent := navbarmenu.NavbarMenu(dataMenu) + + // navbar user + navbaruserComponent := navbarmenu.Navbar(dataUser) + + // sidebar + sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser) + + //Table component + dataGroupResult, totalPage, err := lh.MdGroupResultServices.GetListMdGroupResult("", 1, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET GROUP RESULT", + zap.Any("error", err), + ) + fmt.Println(dataGroupResult) + return err + } + + tableComponent := dev_mdgroupresultview.TableGroupResult(dataGroupResult, + tableID, + "/dev/md/groupresultv2/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/groupresultv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + ) + + //filter user group component + usergroupFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV3(searchID, + "search", + "Cari Group Result Name / Result Resume MCU", + "text", + "/dev/md/groupresultv2/filter", + "input changed delay:500ms, search", + "#"+paginationID, "#loadingcontent", "", "outerHTML", "#tableID, #paginationID, #searchID,#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + dev_mdgroupresultview.BeforeRequestContentMdGroupResult(), + dev_mdgroupresultview.AfterRequestContentMdGroupResult()) + //Pagination + userGroupPaginationComponent := pagination.PaginationV3( + totalPage, + 1, + "/dev/md/groupresultv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "#"+paginationID, + "outerHTML", "", "", + dev_mdgroupresultview.BeforeRequestContentMdGroupResult(), + dev_mdgroupresultview.AfterRequestContentMdGroupResult(), + ) + + // listItem + dataResultMcu, err := lh.MdGroupResultServices.GetMdGroupResultResumeMcu() + fmt.Println(dataResultMcu) + fmt.Println(err) + if err != nil { + defer logger.Sync() + logger.Info("ERROR BREADCRUMB DEV", + zap.Any("error", err), + ) + fmt.Println(dataResultMcu) + return err + } + + defer logger.Sync() + logger.Info("LOAD BREADCRUMB DEV", + zap.Any("data", dataBreadCrumb), + ) + + // Component Dropdown MCU + listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, 0) + + //modal add form + dialogAddBodyCmp := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: "N", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: "N", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogAddBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + + modalActioAddCmp := dev_mdgroupresultview.ActionFormGroupResult( + "/dev/md/groupresultv2/closeaddform", + "#"+dialogAddBodyID, + "outerHTML", + "#"+dialogAddID) + btnCloaseModalAdd := dev_mdgroupresultview.BtnCloseFormGroupResult( + "/dev/md/groupresultv2/closeaddform", + "#"+dialogAddBodyID, + "outerHTML", + "#"+dialogAddID) + + // add + modalAddFormComponent := dev_mdgroupresultview.GroupResultForm( + models.GroupResultFormComponent{ + IDComponent: "formgroupresult", + Link: "/dev/md/groupresultv2/add", + HxTarget: "#" + dialogAddBodyID, + HxSwap: "outerHTML", + HxInclude: "#tableID, #paginationID, #searchID, #dialogAddBodyID, #dialogAddID, #dialogDeleteBodyID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID, + ModalID: dialogAddID, + ModalTitle: "New-Group Result", + DialogBody: dialogAddBodyCmp, + DialogAction: modalActioAddCmp, + ButtonCLose: btnCloaseModalAdd, + }, + ) + + //modal edit form + dialogEditBodyCmp := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: "N", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: "N", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogEditBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + modalActioEditCmp := dev_mdgroupresultview.ActionFormGroupResult( + "/dev/md/groupresultv2/closeeditform", + "#"+dialogEditBodyID, + "outerHTML", + "#"+dialogEditID) + btnCloaseModalEdit := dev_mdgroupresultview.BtnCloseFormGroupResult( + "/dev/md/groupresultv2/closeeditform", + "#"+dialogEditBodyID, + "outerHTML", + "#"+dialogEditID) + + modalEditFormComponent := dev_mdgroupresultview.GroupResultForm( + models.GroupResultFormComponent{ + IDComponent: "formgroupresult", + Link: "/dev/md/groupresultv2/edit", + HxTarget: "#" + dialogEditBodyID, + HxSwap: "outerHTML", + HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogEditBodyID, #dialogEditID, #" + searchID + ", #currpage" + paginationID, + ModalID: dialogEditID, + ModalTitle: "New-Group Result", + DialogBody: dialogEditBodyCmp, + DialogAction: modalActioEditCmp, + ButtonCLose: btnCloaseModalEdit, + }, + ) + //modal delete form + dialogDeleteBodyCmp := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: "N", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: "N", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogDeleteBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + modalActioDeleteCmp := dev_mdgroupresultview.ActionFormGroupResultDelete( + "/dev/md/groupresultv2/closedeleteform", + "#"+dialogDeleteBodyID, + "outerHTML", + "#"+dialogDeleteID) + btnCloaseModalDelete := dev_mdgroupresultview.BtnCloseFormGroupResult( + "/dev/md/groupresultv2/closedeleteform", + "#"+dialogDeleteBodyID, + "outerHTML", + "#"+dialogDeleteID) + modalDeleteFormComponent := dev_mdgroupresultview.GroupResultForm( + models.GroupResultFormComponent{ + IDComponent: "formgroupresult", + Link: "/dev/md/groupresultv2/delete", + HxTarget: "#" + dialogDeleteBodyID, + HxSwap: "outerHTML", + HxInclude: "#tableID, #paginationID, #searchID, #dialogDeleteBodyID, #dialogDeleteID, #dialogEditBodyID, #" + searchID + ", #currpage" + paginationID, + ModalID: dialogDeleteID, + ModalTitle: "New-Group Result", + DialogBody: dialogDeleteBodyCmp, + DialogAction: modalActioDeleteCmp, + ButtonCLose: btnCloaseModalDelete, + }, + ) + + //content js & css + content := dev_mdgroupresultview.MdGroupResultScreen( + tableID, + paginationID, + searchID, + dialogAddID, + dialogAddBodyID, + dialogEditID, + dialogEditBodyID, + dialogDeleteID, + dialogDeleteBodyID, + breadcrumbComponent, + tableComponent, + usergroupFilterComponent, + userGroupPaginationComponent, + modalAddFormComponent, + modalEditFormComponent, + modalDeleteFormComponent) + css := dev_mdgroupresultview.CssMdGroupResult() + js := dev_mdgroupresultview.JsMdGroupResult() + + view := dev_mdgroupresultview.ShowMdGroupResultScreen(title, + content, + css, + js, + navbarmenuComponent, + navbaruserComponent, + sidebaruserprofileComponent) + return utils.View(c, view) +} + +// SEARCHING +func (lh *MdGroupResultHandler) HandleFilterMdGroupResult(c echo.Context) error { + search := c.QueryParam("search") + searchID := c.QueryParam("searchID") + tableID := c.QueryParam("tableID") + paginationID := c.QueryParam("paginationID") + dialogEditBodyID := c.QueryParam("dialogEditBodyID") + dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID") + var retval []templ.Component + logger, _ := zap.NewProduction() + + dataGroupResult, totalpage, err := lh.MdGroupResultServices.GetListMdGroupResult(search, 1, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET GROUP RESULT", + zap.Any("error", err), + ) + fmt.Println(dataGroupResult) + return err + } + tableComponent := dev_mdgroupresultview.TableGroupResult(dataGroupResult, + tableID, + "/dev/md/groupresultv2/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/groupresultv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") + userGroupPaginationComponent := pagination.PaginationV3( + totalpage, + 1, + "/dev/md/groupresultv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "#"+paginationID, + "outerHTML", "", "", + dev_mdgroupresultview.BeforeRequestContentMdGroupResult(), + dev_mdgroupresultview.AfterRequestContentMdGroupResult(), + ) + retval = append(retval, tableComponent) + retval = append(retval, userGroupPaginationComponent) + return utils.ViewMulti(c, retval) +} + +// PAGINATION +func (lh *MdGroupResultHandler) HandleChangePageMdGroupResult(c echo.Context) error { + search := c.QueryParam("search") + pageparam := c.QueryParam("page") + tableID := c.QueryParam("tableID") + searchID := c.QueryParam("searchID") + paginationID := c.QueryParam("paginationID") + dialogEditBodyID := c.QueryParam("dialogEditBodyID") + dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID") + var retval []templ.Component + logger, _ := zap.NewProduction() + page, err := strconv.Atoi(pageparam) + if err != nil { + defer logger.Sync() + logger.Info("ERROR CONVERT PAGE PARAM", + zap.Any("page", page), + zap.Any("error ", err), + ) + return err + } + dataGroupResult, totalpage, err := lh.MdGroupResultServices.GetListMdGroupResult(search, page, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + fmt.Println(dataGroupResult) + return err + } + tableComponent := dev_mdgroupresultview.TableGroupResult(dataGroupResult, + tableID, + "/dev/md/groupresultv2/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/groupresultv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + ) + userGroupPaginationComponent := pagination.PaginationV3( + totalpage, + page, + "/dev/md/groupresultv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "#"+paginationID, + "outerHTML", "", "", + dev_mdgroupresultview.BeforeRequestContentMdGroupResult(), + dev_mdgroupresultview.AfterRequestContentMdGroupResult(), + ) + retval = append(retval, tableComponent) + retval = append(retval, userGroupPaginationComponent) + return utils.ViewMulti(c, retval) +} + +// CLOSE FORM +func (lh *MdGroupResultHandler) HandleCloseFormAdd(c echo.Context) error { + logger, _ := zap.NewProduction() + // listItem + dataResultMcu, err := lh.MdGroupResultServices.GetMdGroupResultResumeMcu() + fmt.Println(dataResultMcu) + fmt.Println(err) + if err != nil { + defer logger.Sync() + logger.Info("ERROR RESULT RESUME MCU DEV", + zap.Any("error", err), + ) + fmt.Println(dataResultMcu) + return err + } + + // Component Dropdown MCU + listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, 0) + + dialogAddBodyID := c.FormValue("dialogAddBodyID") + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: "N", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: "N", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogAddBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.View(c, newForm) +} + +// PROSES ADD DATA +func (lh *MdGroupResultHandler) HandleAddGroupResult(c echo.Context) error { + + logger, _ := zap.NewProduction() + defer logger.Sync() + + //prm form addusergroup + // DARI FORM ADD NYA + groupresultname := c.FormValue("groupresultname") + groupresultflagpertest := c.FormValue("groupresultflagpertest") + groupresultflagnonlab := c.FormValue("groupresultflagnonlab") + groupresultresumemcu := c.FormValue("groupresultresumemcu") + + // setting flag test dan flagnonlab + var flagPerTest string = "N" + var flagNonLab string = "N" + // var mcuResumeSelectedValue int = 0 + + 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") + dialogAddID := c.FormValue("dialogAddID") + dialogEditBodyID := c.FormValue("dialogEditBodyID") + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") + + currPage, err := strconv.Atoi(currPagePrm) + if err != nil { + return err + } + logger.Info("ADD USER GROUP PARAM", + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + zap.Any("tableid", tableID), + zap.Any("search", search), + zap.Any("currpage", currPage), + ) + + // listItem + dataResultMcu, err := lh.MdGroupResultServices.GetMdGroupResultResumeMcu() + fmt.Println(dataResultMcu) + fmt.Println(err) + if err != nil { + defer logger.Sync() + logger.Info("ERROR BREADCRUMB DEV", + zap.Any("error", err), + ) + fmt.Println(dataResultMcu) + return err + } + // Component Dropdown MCU + listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, 0) + + // check dropdown result mcu + var idSelectedGroupResultResumeMcu int + idSelectedGroupResultResumeMcu, err = strconv.Atoi(groupresultresumemcu) + if err != nil { + // Tangani kesalahan konversi + fmt.Println("Error converting string to int:", err) + // return + test := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogAddBodyID, dev_mdgroupresultview.JsHideModalGroupResult(""), + ) + coba := utils.ViewMulti(c, []templ.Component{ + customtoastv2.CustomToastV2Show("Error", "Error converting string to int", "danger"), + test}) + return coba + } + + var groupresultresumemcuNew string + for _, x := range dataResultMcu { + if x.ID == idSelectedGroupResultResumeMcu { + groupresultresumemcuNew = x.Text + // mcuResumeSelectedValue = x.ID + } + } + + // check group result flag per test + if groupresultflagpertest == "on" { + flagPerTest = "Y" + } + + // check group result flag non lab + if groupresultflagnonlab == "on" { + flagNonLab = "Y" + } + + formValidation := "" + nameValidation := "" + + if strings.TrimSpace(groupresultname) == "" { + formValidation = "Group Result Name tidak boleh kosong" + nameValidation = "Group Result Name tidak boleh kosong" + } + + if formValidation != "" || nameValidation != "" { + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Value: groupresultname, + ErrorMsg: "Group Result Name Kosong", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: groupresultflagpertest, + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: groupresultflagnonlab, + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogAddBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm}) + } + //Add user group service + dataGroupResultAdd, err := lh.MdGroupResultServices.AddMdGroupResult(groupresultname, flagPerTest, flagNonLab, groupresultresumemcuNew) + + if err != nil { + logger.Info("Error", + zap.Any("Error", err), + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + ) + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Value: groupresultname, + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: groupresultflagpertest, + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: groupresultflagnonlab, + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogAddBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.ViewMulti(c, []templ.Component{ + customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), + newForm}) + + } + logger.Info("ADD USER GROUP", + zap.Any("return", dataGroupResultAdd), + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + ) + //get list user group for table + dataUserGroupList, totalPage, err := lh.MdGroupResultServices.GetListMdGroupResult(search, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET GROUP RESULT", + zap.Any("error", err), + ) + fmt.Println(dataUserGroupList) + return err + } + //table component + tableComponent := dev_mdgroupresultview.TableGroupResult(dataUserGroupList, + tableID, + "/dev/md/groupresultv2/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/groupresultv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") + + //pagination component + //Pagination + userGroupPaginationComponent := pagination.PaginationV3( + totalPage, + currPage, + "/dev/md/groupresultv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "#"+paginationID, + "outerHTML", "", "true", + dev_mdgroupresultview.BeforeRequestContentMdGroupResult(), + dev_mdgroupresultview.AfterRequestContentMdGroupResult(), + ) + + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogAddBodyID, dev_mdgroupresultview.JsHideModalGroupResult("#"+dialogAddID)) + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Success add group result "+groupresultname, "success") + + return utils.ViewMulti(c, []templ.Component{ + toastSuccess, + tableComponent, + userGroupPaginationComponent, + newForm}) +} + +// SHOW EDIT +func (lh *MdGroupResultHandler) HandleOpenEditForm(c echo.Context) error { + logger, _ := zap.NewProduction() + defer logger.Sync() + + id := c.QueryParam("id") + dialogEditID := c.QueryParam("dialogEditID") + dialogEditBodyID := c.QueryParam("dialogEditBodyID") + + // listItem + dataResultMcu, err := lh.MdGroupResultServices.GetMdGroupResultResumeMcu() + fmt.Println(dataResultMcu) + fmt.Println(err) + if err != nil { + defer logger.Sync() + logger.Info("ERROR BREADCRUMB DEV", + zap.Any("error", err), + ) + fmt.Println(dataResultMcu) + return err + } + // Component Dropdown MCU default + listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, 0) + + // get data by id + dataGroupList, err := lh.MdGroupResultServices.GetMdGroupResultByID(id) + if err != nil { + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogEditBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get group result error", "danger"), newForm}) + } + + // Component Dropdown MCU + var idSelectedGroupResultResumeMcu int = 0 + for _, x := range dataResultMcu { + if x.Text == dataGroupList.Group_ResultResumeMcu { + idSelectedGroupResultResumeMcu = x.ID + } + } + + listItemResultMcuComponentPopulate := dev_mdgroupresultview.ItemDropdown(dataResultMcu, idSelectedGroupResultResumeMcu) + + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + Value: strconv.Itoa(dataGroupList.Group_ResultID), + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname", + Value: dataGroupList.Group_ResultName, + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: dataGroupList.Group_ResultFlagPerTest, + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: dataGroupList.Group_ResultFlagNonLab, + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponentPopulate, + dialogEditBodyID, dev_mdgroupresultview.JsShowModalGroupResult("#"+dialogEditID)) + return utils.View(c, newForm) +} + +// CLOSE EDIT FORM +func (lh *MdGroupResultHandler) HandleCloseFormEdit(c echo.Context) error { + dialogEditBodyID := c.FormValue("dialogEditBodyID") + + logger, _ := zap.NewProduction() + // listItem + dataResultMcu, err := lh.MdGroupResultServices.GetMdGroupResultResumeMcu() + fmt.Println(dataResultMcu) + fmt.Println(err) + if err != nil { + defer logger.Sync() + logger.Info("ERROR RESULT RESUME MCU DEV", + zap.Any("error", err), + ) + fmt.Println(dataResultMcu) + return err + } + + // Component Dropdown MCU + listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, 0) + + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: "N", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: "N", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogEditBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.View(c, newForm) +} + +// PROSES EDIT DATA +func (lh *MdGroupResultHandler) HandleEditGroupResult(c echo.Context) error { + + logger, _ := zap.NewProduction() + defer logger.Sync() + + //prm form addusergroup + // DARI FORM ADD NYA + groupresultname := c.FormValue("groupresultname") + groupresultflagpertest := c.FormValue("groupresultflagpertest") + groupresultflagnonlab := c.FormValue("groupresultflagnonlab") + groupresultresumemcu := c.FormValue("groupresultresumemcu") + + // setting flag test dan flagnonlab + var flagPerTest string = "N" + var flagNonLab string = "N" + + id := c.FormValue("groupresultid") + 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") + dialogEditID := c.FormValue("dialogEditID") + dialogEditBodyID := c.FormValue("dialogEditBodyID") + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") + + currPage, err := strconv.Atoi(currPagePrm) + if err != nil { + return err + } + logger.Info("ADD USER GROUP PARAM", + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + zap.Any("tableid", tableID), + zap.Any("search", search), + zap.Any("currpage", currPage), + ) + + // listItem + dataResultMcu, err := lh.MdGroupResultServices.GetMdGroupResultResumeMcu() + fmt.Println(dataResultMcu) + fmt.Println(err) + if err != nil { + defer logger.Sync() + logger.Info("ERROR BREADCRUMB DEV", + zap.Any("error", err), + ) + fmt.Println(dataResultMcu) + return err + } + + // Component Dropdown MCU + listItemResultMcuComponentInitial := dev_mdgroupresultview.ItemDropdown(dataResultMcu, 0) + + // check dropdown result mcu + var idSelectedGroupResultResumeMcu int + idSelectedGroupResultResumeMcu, err = strconv.Atoi(groupresultresumemcu) + if err != nil { + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponentInitial, + dialogEditBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", "Error converting string to int", "error"), newForm}) + + } + + var groupresultresumemcuNew string + for _, x := range dataResultMcu { + if x.ID == idSelectedGroupResultResumeMcu { + groupresultresumemcuNew = x.Text + } + } + + // check group result flag per test + if groupresultflagpertest == "on" { + flagPerTest = "Y" + } + + // check group result flag non lab + if groupresultflagnonlab == "on" { + flagNonLab = "Y" + } + + formValidation := "" + nameValidation := "" + + if strings.TrimSpace(groupresultname) == "" { + formValidation = "Group Result Name tidak boleh kosong" + nameValidation = "Group Result Name tidak boleh kosong" + } + + if formValidation != "" || nameValidation != "" { + listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, idSelectedGroupResultResumeMcu) + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + // Value: id, + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + ErrorMsg: "Group Result Name Kosong", + Value: groupresultname, + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: groupresultflagpertest, + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: groupresultflagnonlab, + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogEditBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm}) + } + + //edit user group service + dataGroupList, err := lh.MdGroupResultServices.EditMdGroupResult(id, groupresultname, flagPerTest, flagNonLab, groupresultresumemcuNew) + if err != nil { + listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, idSelectedGroupResultResumeMcu) + logger.Info("Error", + zap.Any("Error", err), + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + ) + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + Value: id, + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Value: groupresultname, + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: groupresultflagpertest, + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: groupresultflagnonlab, + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogEditBodyID, dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.ViewMulti(c, []templ.Component{ + customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), + newForm}) + + } + logger.Info("ADD USER GROUP", + zap.Any("return", dataGroupList), + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + ) + //get list user group for table + dataUserGroupList, totalPage, err := lh.MdGroupResultServices.GetListMdGroupResult(search, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + fmt.Println(dataGroupList) + return err + } + //table component + tableComponent := dev_mdgroupresultview.TableGroupResult(dataUserGroupList, + tableID, + "/dev/md/groupresultv2/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/groupresultv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") + + //pagination component + //Pagination + userGroupPaginationComponent := pagination.PaginationV3( + totalPage, + currPage, + "/dev/md/groupresultv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "#"+paginationID, + "outerHTML", "", "true", + dev_mdgroupresultview.BeforeRequestContentMdGroupResult(), + dev_mdgroupresultview.AfterRequestContentMdGroupResult(), + ) + + listItemResultMcuComponent := dev_mdgroupresultview.ItemDropdown(dataResultMcu, idSelectedGroupResultResumeMcu) + + var retVal []templ.Component + newForm := dev_mdgroupresultview.BodyFormGroupResult( + models.CustomTextFieldv2Prm{ + Label: "Group Result name", + Name: "groupresultid", + Placeholder: "Group Result name", + Type: "hidden", + ID: "groupresultid", + Value: id, + }, + models.CustomTextFieldv2Prm{ + Label: "Group Result Name", + Name: "groupresultname", + Placeholder: "Group Result Name", + Value: groupresultname, + Type: "text", ID: "groupresultname"}, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Per Test (Dicentang Maka Ya)", + Name: "groupresultflagpertest", + ID: "groupresultflagpertest", + Value: groupresultflagpertest, + }, + models.CustomCheckboxv1Prm{ + Label: "Group Result Flag Non Lab (Dicentang Maka Ya)", + Name: "groupresultflagnonlab", + ID: "groupresultflagnonlab", + Value: groupresultflagnonlab, + }, + models.CustomDropdownv1Prm{ + Label: "Group Result Resume MCU", + Name: "groupresultresumemcu", + ID: "groupresultresumemcu", + }, + listItemResultMcuComponent, + dialogEditBodyID, dev_mdgroupresultview.JsHideModalGroupResult("#"+dialogEditID)) + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil edit Group Result "+groupresultname, "success") + retVal = append(retVal, toastSuccess) + retVal = append(retVal, tableComponent) + retVal = append(retVal, userGroupPaginationComponent) + retVal = append(retVal, newForm) + return utils.ViewMulti(c, retVal) +} + +// SHOW DELETE FORM +func (lh *MdGroupResultHandler) HandleOpenDeleteForm(c echo.Context) error { + id := c.QueryParam("id") + dialogDeleteID := c.QueryParam("dialogDeleteID") + dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID") + + dataGroupList, err := lh.MdGroupResultServices.GetMdGroupResultByID(id) + + var flagPerTest string = "N" + var flagNonLab string = "N" + + if dataGroupList.Group_ResultFlagPerTest == "on" { + flagPerTest = "Y" + } + + if dataGroupList.Group_ResultFlagNonLab == "on" { + flagNonLab = "Y" + } + + if err != nil { + newForm := dev_mdgroupresultview.DeleteConfirmationBodyGroupResult( + models.CustomTextFieldv2Prm{Type: "hidden", Value: "0", Name: "groupresultid"}, + dialogDeleteBodyID, "Apakah anda yakin menghapus group result berikut ?", + []string{"GROUP RESULT NAME", "RESULT FLAG PER TEST", "RESULT FLAG NON LAB", "RESULT RESUME MCU"}, + []string{"", "", "", ""}, + dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get group result error", "danger"), newForm}) + } + newForm := dev_mdgroupresultview.DeleteConfirmationBodyGroupResult( + models.CustomTextFieldv2Prm{Type: "hidden", Value: strconv.Itoa(dataGroupList.Group_ResultID), Name: "groupresultid"}, + dialogDeleteBodyID, "Apakah anda yakin menghapus group result berikut ?", + []string{"GROUP RESULT NAME", "RESULT FLAG PER TEST", "RESULT FLAG NON LAB", "RESULT RESUME MCU"}, + []string{dataGroupList.Group_ResultName, flagPerTest, flagNonLab, dataGroupList.Group_ResultResumeMcu}, + dev_mdgroupresultview.JsShowModalGroupResult("#"+dialogDeleteID)) + return utils.View(c, newForm) +} + +// CLOSE DELETE FORM +func (lh *MdGroupResultHandler) HandleCloseFormDelete(c echo.Context) error { + dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID") + newForm := dev_mdgroupresultview.DeleteConfirmationBodyGroupResult( + models.CustomTextFieldv2Prm{Type: "hidden", Value: "0", Name: "groupresultid"}, + dialogDeleteBodyID, "Apakah anda yakin menghapus group result berikut ?", + []string{"GROUP RESULT NAME", "RESULT FLAG PER TEST", "RESULT FLAG NON LAB", "RESULT RESUME MCU"}, + []string{"", "", "", ""}, + dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.View(c, newForm) +} + +// PROSES DELETE +func (lh *MdGroupResultHandler) HandleDeleteUserGroup(c echo.Context) error { + + logger, _ := zap.NewProduction() + defer logger.Sync() + + //prm form addusergroup + + id := c.FormValue("groupresultid") + 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 USER GROUP PARAM", + + zap.Any("tableid", tableID), + zap.Any("search", search), + zap.Any("currpage", currPage), + ) + + //edit user group service + dataUserGroup, err := lh.MdGroupResultServices.DeleteMdGroupResult(id) + if err != nil { + logger.Info("Error", + zap.Any("Error", err), + ) + newForm := dev_mdgroupresultview.DeleteConfirmationBodyGroupResult( + models.CustomTextFieldv2Prm{Name: "groupresultid", Type: "hidden", Value: ""}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus group result berikut ?", + []string{"GROUP RESULT NAME", "RESULT FLAG PER TEST", "RESULT FLAG NON LAB", "RESULT RESUME MCU"}, + []string{"", "", "", ""}, + dev_mdgroupresultview.JsHideModalGroupResult("")) + return utils.ViewMulti(c, []templ.Component{ + customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), + newForm}) + + } + logger.Info("ADD USER GROUP", + zap.Any("return", dataUserGroup), + ) + //get list user group for table + dataUserGroupList, totalPage, err := lh.MdGroupResultServices.GetListMdGroupResult(search, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + fmt.Println(dataUserGroup) + return err + } + if len(dataUserGroupList) == 0 && totalPage > 1 { + currPage = currPage - 1 + dataUserGroupList, _, err = lh.MdGroupResultServices.GetListMdGroupResult(search, currPage, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET USER GROUP", + zap.Any("error", err), + ) + return err + } + } + //table component + tableComponent := dev_mdgroupresultview.TableGroupResult(dataUserGroupList, + tableID, + "/dev/md/groupresultv2/openedit", + "#"+dialogEditBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "/dev/md/groupresultv2/opendelete", + "#"+dialogDeleteBodyID, + "outerHTML", + "#dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID") + + //pagination component + //Pagination + userGroupPaginationComponent := pagination.PaginationV3( + totalPage, + currPage, + "/dev/md/groupresultv2/changepage", + paginationID, + "#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID, #dialogDeleteBodyID, #dialogDeleteID", + "#"+paginationID, + "outerHTML", "", "true", + dev_mdgroupresultview.BeforeRequestContentMdGroupResult(), + dev_mdgroupresultview.AfterRequestContentMdGroupResult(), + ) + var retVal []templ.Component + newForm := dev_mdgroupresultview.DeleteConfirmationBodyGroupResult( + models.CustomTextFieldv2Prm{Name: "groupresultid", Type: "hidden", Value: ""}, + dialogDeleteBodyID, + "Apakah anda yakin menghapus group result berikut ?", + []string{"GROUP RESULT NAME", "RESULT FLAG PER TEST", "RESULT FLAG NON LAB", "RESULT RESUME MCU"}, + []string{"", "", "", ""}, + dev_mdgroupresultview.JsHideModalGroupResult("#"+dialogDeleteID)) + toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil delete group result ", "success") + retVal = append(retVal, toastSuccess) + retVal = append(retVal, tableComponent) + retVal = append(retVal, userGroupPaginationComponent) + retVal = append(retVal, newForm) + return utils.ViewMulti(c, retVal) +} diff --git a/handlers/routes.go b/handlers/routes.go index 0d83ec4..d1b13b1 100644 --- a/handlers/routes.go +++ b/handlers/routes.go @@ -276,4 +276,19 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) { dev.GET("/md/natunit/opendelete", devMdNatUnitHandlers.HandlerOpenDeleteForm) dev.POST("/md/natunit/closedeleteform", devMdNatUnitHandlers.HandlerCloseFormDelete) dev.POST("/md/natunit/delete", devMdNatUnitHandlers.HandlerDeleteNatUnit) + + // group result v2 + devMdGRServices := dev_services.NewServicesMdGroupResult(appStore) + devMdGRhandlers := dev_handlers.NewMdGroupResultHandler(devMdGRServices) + dev.GET("/md/groupresultv2", devMdGRhandlers.HandleShowMdGroupResultScreen) + dev.GET("/md/groupresultv2/filter", devMdGRhandlers.HandleFilterMdGroupResult) + dev.GET("/md/groupresultv2/changepage", devMdGRhandlers.HandleChangePageMdGroupResult) + dev.POST("/md/groupresultv2/closeaddform", devMdGRhandlers.HandleCloseFormAdd) + dev.POST("/md/groupresultv2/add", devMdGRhandlers.HandleAddGroupResult) + dev.GET("/md/groupresultv2/openedit", devMdGRhandlers.HandleOpenEditForm) + dev.POST("/md/groupresultv2/closeeditform", devMdGRhandlers.HandleCloseFormEdit) + dev.POST("/md/groupresultv2/edit", devMdGRhandlers.HandleEditGroupResult) + dev.GET("/md/groupresultv2/opendelete", devMdGRhandlers.HandleOpenDeleteForm) + dev.POST("/md/groupresultv2/closedeleteform", devMdGRhandlers.HandleCloseFormDelete) + dev.POST("/md/groupresultv2/delete", devMdGRhandlers.HandleDeleteUserGroup) } diff --git a/services/dev/md.groupresult.services.go b/services/dev/md.groupresult.services.go new file mode 100644 index 0000000..3ad8ecd --- /dev/null +++ b/services/dev/md.groupresult.services.go @@ -0,0 +1,878 @@ +package dev_services + +import ( + "cpone/db" + "cpone/models" + "fmt" + "math" + "strconv" + "strings" + + dbx "cpone/package/database" + + "go.uber.org/zap" +) + +func NewServicesMdGroupResult(uStore db.AppStore) *ServicesMdGroupResult { + + return &ServicesMdGroupResult{ + MdGroupResultStore: uStore, + } +} + +type ServicesMdGroupResult struct { + MdGroupResultStore db.AppStore +} + +func (su *ServicesMdGroupResult) GetMasterMenus() ([]MasterMenu, error) { + + // dummyBreadcrumb := []Breadcrumb{ + // { + // Name: "Dashboard", + // Url: "/client/dashboard", + // }, + // { + // Name: "Front Office", + // Url: "/client/usermanagement", + // }, + // } + + dummyMenu := []MasterMenu{ + // 1. Dashboard + { + ID: "1", + ParentMenuID: "0", + ParentMenuName: "Dashboard", + ParentUrl: "/client/md/dashboard", + ParentIcon: "", + Children: []ChildrenMenu{ + { + ChildrenParentID: "1", + ChildrenMenuID: "1", + ChildrenMenuName: "Master User", + ChildrenMenuURL: "/client/md/user", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "Y", + // }, + // }, + }, + }, + }, + + // 2. Front Office + { + ID: "2", + ParentMenuID: "1", + ParentMenuName: "Front Office", + ParentUrl: "#", + ParentIcon: "", + Children: []ChildrenMenu{ + { + ChildrenParentID: "1", + ChildrenMenuID: "1", + ChildrenMenuName: "Registrasi", + ChildrenMenuURL: "/fo/registrasi", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User", + // IsActive: "Y", + // }, + // }, + }, + }, + }, + + // 3. Station + { + ID: "3", + ParentMenuID: "2", + ParentMenuName: "Station", + ParentUrl: "#", + ParentIcon: "", + Children: []ChildrenMenu{ + { + ChildrenParentID: "2", + ChildrenMenuID: "1", + ChildrenMenuName: "Sample Station", + ChildrenMenuURL: "/station/sample", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User", + // IsActive: "Y", + // }, + // }, + }, + }, + }, + + // 4. Management MCU + { + ID: "4", + ParentMenuID: "3", + ParentMenuName: "Management MCU", + ParentUrl: "#", + ParentIcon: "", + Children: []ChildrenMenu{ + { + ChildrenParentID: "3", + ChildrenMenuID: "1", + ChildrenMenuName: "Setup MCU", + ChildrenMenuURL: "/mcu/setup", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User", + // IsActive: "Y", + // }, + // }, + }, + { + ChildrenParentID: "3", + ChildrenMenuID: "2", + ChildrenMenuName: "Pre-Registrasi", + ChildrenMenuURL: "/mcu/preregister", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User", + // IsActive: "Y", + // }, + // }, + }, + }, + }, + + // 5. Master Data + { + ID: "5", + ParentMenuID: "4", + ParentMenuName: "Master Data", + ParentUrl: "#", + ParentIcon: "", + Children: []ChildrenMenu{ + // * Master User + { + ChildrenParentID: "4", + ChildrenMenuID: "1", + ChildrenMenuName: "Master User", + ChildrenMenuURL: "/client/md/user", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User", + // IsActive: "Y", + // }, + // }, + }, + + // * Master User Group + { + ChildrenParentID: "4", + ChildrenMenuID: "2", + ChildrenMenuName: "Master User Group", + ChildrenMenuURL: "/client/md/usergroup", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Master Corporate + { + ChildrenParentID: "4", + ChildrenMenuID: "3", + ChildrenMenuName: "Corporate", + ChildrenMenuURL: "/client/md/corp", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Test + { + ChildrenParentID: "4", + ChildrenMenuID: "4", + ChildrenMenuName: "Test", + ChildrenMenuURL: "/client/md/test", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Bahan + { + ChildrenParentID: "4", + ChildrenMenuID: "5", + ChildrenMenuName: "Bahan", + ChildrenMenuURL: "/client/md/bahan", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Sample Type + { + ChildrenParentID: "4", + ChildrenMenuID: "6", + ChildrenMenuName: "Sample Type", + ChildrenMenuURL: "/client/sample/type", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Sample Station + { + ChildrenParentID: "4", + ChildrenMenuID: "7", + ChildrenMenuName: "Sample Station", + ChildrenMenuURL: "/station/sample", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Result Non Lab + { + ChildrenParentID: "4", + ChildrenMenuID: "8", + ChildrenMenuName: "Result Non Lab", + ChildrenMenuURL: "/client/md/resultnonlab", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Template Fisik + { + ChildrenParentID: "4", + ChildrenMenuID: "9", + ChildrenMenuName: "Template Fisik", + ChildrenMenuURL: "/client/md/template-fisik", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Pasien + { + ChildrenParentID: "4", + ChildrenMenuID: "10", + ChildrenMenuName: "Pasien", + ChildrenMenuURL: "/client/md/pasien", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Dokter + { + ChildrenParentID: "4", + ChildrenMenuID: "11", + ChildrenMenuName: "Dokter", + ChildrenMenuURL: "/client/md/dokter", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Paket + { + ChildrenParentID: "4", + ChildrenMenuID: "12", + ChildrenMenuName: "Paket", + ChildrenMenuURL: "/client/md/paket", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + + // * Harga Single + { + ChildrenParentID: "4", + ChildrenMenuID: "13", + ChildrenMenuName: "Harga Single", + ChildrenMenuURL: "/client/md/hargasingle", + // Breadcrumb: []Breadcrumb{ + // { + // IDBreadcrumb: "1", + // Title: "Dashboard", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "2", + // Title: "Master", + // IsActive: "N", + // }, + // { + // IDBreadcrumb: "3", + // Title: "User Group", + // IsActive: "Y", + // }, + // }, + }, + }, + }, + } + + return dummyMenu, nil +} + +func (ug *ServicesMdGroupResult) GetUserGroup() ([]models.UserGroup, error) { + data := []models.UserGroup{ + {UserGroupID: 1, UserGroupKode: "A", UserGroupName: "UG1"}, + {UserGroupID: 2, UserGroupKode: "B", UserGroupName: "UG2"}, + {UserGroupID: 3, UserGroupKode: "C", UserGroupName: "UG3"}, + } + return data, nil +} + +func (su *ServicesMdGroupResult) GetMdGroupResultBreadcrumb(title string) (models.BreadCrumbV1, error) { + var ret models.BreadCrumbV1 + + dummyBreadcrumb := []models.BreadCrumbV1{ + { + Title: "Master User Group", + Item: []models.ItemBreadCrumbV1{ + { + Item: "Dashboard", + Url: "/dev/dashboard", + }, + { + Item: "Master", + Url: "/dev/master", + }, + { + Item: "User Group", + Url: "", + }, + }, + }, + + { + Title: "Master User", + Item: []models.ItemBreadCrumbV1{ + { + Item: "Dashboard", + Url: "/dev/dashboard", + }, + { + Item: "Master", + Url: "/dev/master", + }, + { + Item: "User", + Url: "", + }, + }, + }, + + { + Title: "Master Group Result", + Item: []models.ItemBreadCrumbV1{ + { + Item: "Dashboard", + Url: "/dev/dashboard", + }, + { + Item: "Master", + Url: "/dev/master", + }, + { + Item: "Group Result", + Url: "", + }, + }, + }, + } + + for _, breadcrumb := range dummyBreadcrumb { + // if utils.Contains(breadcrumb.Title, title) { + // ret = breadcrumb + // return ret, nil + // } + if breadcrumb.Title == title { + ret = breadcrumb + return ret, nil + } + } + + return ret, nil +} + +// (LAB, NONLAB, FISIK, DOCTOR) +// hardcore group result resume mcu +func (ug *ServicesMdGroupResult) GetMdGroupResultResumeMcu() ([]models.GroupResultResumeMcu, error) { + data := []models.GroupResultResumeMcu{ + { + ID: 1, + Text: "LAB", + }, + { + ID: 2, + Text: "NONLAB", + }, + { + ID: 3, + Text: "FISIK", + }, + { + ID: 4, + Text: "DOCTOR", + }, + } + return data, nil +} + +// versi 2 +func (su *ServicesMdGroupResult) GetListMdGroupResult(search string, currentPage int, rowPerPage int) ([]models.GroupResult, int, error) { + var groupresultList []models.GroupResult + + logger, _ := zap.NewProduction() + defer logger.Sync() + + var totalData int + offset := (currentPage - 1) * rowPerPage + + prm := "%" + strings.TrimSpace(search) + "%" + querytotal := ` + SELECT COUNT(*) + FROM group_result + WHERE Group_ResultIsActive = 'Y' + AND (Group_ResultName LIKE ? OR Group_ResultResumeMcu LIKE ?) + ` + + logger.Info("QUERY SEARCH INITIAL TOTAL COUNT", + zap.String("query search", querytotal), + ) + + if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil { + return nil, 0, fmt.Errorf("error querying database: %v", err) + } + + query := ` + SELECT + ROW_NUMBER() OVER () AS nomor, + Group_ResultID, + IFNULL(Group_ResultName, '') AS Group_ResultName, + IFNULL(Group_ResultFlagPerTest, '') AS Group_ResultFlagPerTest, + IFNULL(Group_ResultFlagNonLab, '') AS Group_ResultFlagNonLab, + IFNULL(Group_ResultResumeMcu, '') AS Group_ResultResumeMcu, + Group_ResultIsActive + FROM group_result + WHERE Group_ResultIsActive = 'Y' + AND (Group_ResultName LIKE ? OR Group_ResultResumeMcu LIKE ?) + ORDER BY Group_ResultID ASC + LIMIT ? OFFSET ? + ` + + logger.Info("QUERY SEARCH INITIAL", + zap.String("query search", query), + ) + + if err := dbx.Handlex.Select(&groupresultList, query, prm, prm, rowPerPage, offset); err != nil { + return nil, 0, fmt.Errorf("error querying database: %v", err) + } + + totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage))) + + return groupresultList, totalPage, nil +} + +// GET BY ID +func (ug *ServicesMdGroupResult) GetMdGroupResultByID(id string) (models.GroupResult, error) { + logger, _ := zap.NewProduction() + + var data models.GroupResult + err := dbx.Handlex.Get(&data, `SELECT + Group_ResultID, + Group_ResultName, + CASE + WHEN Group_ResultFlagPerTest = 'Y' THEN 'on' + ELSE Group_ResultFlagPerTest + END AS Group_ResultFlagPerTest, + CASE + WHEN Group_ResultFlagNonLab = 'Y' THEN 'on' + ELSE Group_ResultFlagNonLab + END AS Group_ResultFlagNonLab, + Group_ResultResumeMcu, + Group_ResultIsActive + FROM group_result + WHERE Group_ResultID = ?`, id) + + if err != nil { + defer logger.Sync() + logger.Error("Error get data gr by id vs", + zap.String("ID", id), + zap.Error(err), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} + +// ADD DATA +func (ug *ServicesMdGroupResult) AddMdGroupResult(groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error) { + logger, _ := zap.NewProduction() + var data models.GroupResult + var datacek []models.GroupResult + // var groupresultflagpertestConvert string = "" + // var groupresultflagnonlabConvert string = "" + // var groupresultresumemcuConvert string = "" + + prm := "%" + strings.TrimSpace(groupresultname) + "%" + qryCek := `SELECT Group_ResultName FROM group_result WHERE Group_ResultName LIKE ? AND Group_ResultIsActive = 'Y'` + err := dbx.Handlex.Select(&datacek, qryCek, prm) + + if err != nil { + defer logger.Sync() + logger.Error("Error cek data by groupresultname", + zap.String("groupresultname", groupresultname), + zap.Any("datacek", datacek), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + if len(datacek) > 0 { + defer logger.Sync() + logger.Error("Group Result Name already taken by another data", + zap.String("groupresultname", groupresultname), + ) + return data, fmt.Errorf("group result name sudah dipakai") + } + qry := `INSERT INTO group_result + ( + Group_ResultName, + Group_ResultFlagPerTest, + Group_ResultFlagNonLab, + Group_ResultResumeMcu + ) + VALUES ( + ?, + ?, + ?, + ? + );` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, groupresultname, groupresultflagpertest, groupresultflagnonlab, groupresultresumemcu) + insertedID, err := rst.LastInsertId() + if err != nil { + defer logger.Sync() + logger.Error("Error Insert group result", + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + s := strconv.Itoa(int(insertedID)) + data, err = ug.GetMdGroupResultByID(s) + if err != nil { + defer logger.Sync() + logger.Error("Error get usergroup by id", + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} + +// EDIT DATA +func (ug *ServicesMdGroupResult) EditMdGroupResult(id string, groupresultname string, groupresultflagpertest string, groupresultflagnonlab string, groupresultresumemcu string) (models.GroupResult, error) { + logger, _ := zap.NewProduction() + var data models.GroupResult + var datacek []models.GroupResult + + prm := "%" + strings.TrimSpace(groupresultname) + "%" + qryCek := `SELECT Group_ResultName FROM group_result WHERE Group_ResultName LIKE ? AND Group_ResultIsActive = 'Y' AND Group_ResultID <> ?` + err := dbx.Handlex.Select(&datacek, qryCek, prm, id) + + if err != nil { + defer logger.Sync() + logger.Error("Error cek data by code", + zap.String("groupresultname", groupresultname), + zap.Any("datacek", datacek), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + if len(datacek) > 0 { + defer logger.Sync() + logger.Error("Code already taken by another data", + zap.String("groupresultname", groupresultname), + ) + return data, fmt.Errorf("group result name sudah dipakai") + } + + qry := `UPDATE group_result + SET Group_ResultName = ?, + Group_ResultFlagPerTest = ?, + Group_ResultFlagNonLab = ?, + Group_ResultResumeMcu = ? + WHERE Group_ResultID = ?` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, groupresultname, groupresultflagpertest, groupresultflagnonlab, groupresultresumemcu, id) + _, err = rst.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error Update group result", + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + + data, err = ug.GetMdGroupResultByID(id) + if err != nil { + defer logger.Sync() + logger.Error("Error get group result by id", + zap.Any("groupresultname", groupresultname), + zap.Any("groupresultflagpertest", groupresultflagpertest), + zap.Any("groupresultflagnonlab", groupresultflagnonlab), + zap.Any("groupresultresumemcu", groupresultresumemcu), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} + +// DELETE DATA +func (ug *ServicesMdGroupResult) DeleteMdGroupResult(id string) (models.GroupResult, error) { + logger, _ := zap.NewProduction() + var data models.GroupResult + qry := `UPDATE group_result + SET Group_ResultIsActive = 'N' + WHERE Group_ResultID = ?;` + // time.Sleep(5 * time.Second) + rst := dbx.Handlex.MustExec(qry, id) + _, err := rst.RowsAffected() + if err != nil { + defer logger.Sync() + logger.Error("Error delete group result", + zap.String("id", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + + data, err = ug.GetMdGroupResultByID(id) + if err != nil { + defer logger.Sync() + logger.Error("Error get group result by id", + zap.String("id", id), + ) + return data, fmt.Errorf("QUERY_FAILED") + } + return data, nil +} diff --git a/views/dev/mdgroupresult/mdgroupresult.templ b/views/dev/mdgroupresult/mdgroupresult.templ new file mode 100644 index 0000000..2e0620c --- /dev/null +++ b/views/dev/mdgroupresult/mdgroupresult.templ @@ -0,0 +1,237 @@ +package dev_mdgroupresultview + +import ( + "cpone/layout" + "cpone/component/customtextfield" + "cpone/models" + "strconv" +) + +templ MdGroupResultScreen( + tableID string, + paginationID string, + searchID string, + dialogAddID string, + dialogAddBodyID string, + dialogEditID string, + dialogEditBodyID string, + dialogDeleteID string, + dialogDeleteBodyID string, + breadcrumb templ.Component, + tablecontent templ.Component, + filterComponent templ.Component, + paginationComponent templ.Component, + modalAddForm templ.Component, + modalEditForm templ.Component, + modalDeleteForm templ.Component) { +
{ message }
+") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var25 string + templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(message) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\dev\mdgroupresult\mdgroupresultformmodal.templ`, Line: 159, Col: 14} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("