feature edit master kelainan

This commit is contained in:
Hanan Askarim
2024-05-24 14:37:58 +07:00
parent 904279a048
commit 2c62f8fbf7
10 changed files with 546 additions and 38 deletions

View File

@@ -25,6 +25,7 @@ type MasterKelainanService interface {
GetListMasterKelainan(search string, currentPage int, rowPerPage int) ([]models.Kelainan, int, error)
GetKelainanByID(id string) (models.Kelainan, error)
AddKelainan(name string) (models.Kelainan, error)
EditKelainan(id string, name string) (models.Kelainan, error)
}
func NewMasterKelainanHandler(us MasterKelainanService) *MasterKelainanHandler {
@@ -85,8 +86,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error
searchID := utils.GenerateRandomID("searchid")
dialogAddID := utils.GenerateRandomID("dialogaddID")
dialogAddBodyID := utils.GenerateRandomID("dialogaddbodyID")
// dialogEditID := utils.GenerateRandomID("dialogEditID")
// dialogEditBodyID := utils.GenerateRandomID("dialogEditBodyID")
dialogEditID := utils.GenerateRandomID("dialogEditID")
dialogEditBodyID := utils.GenerateRandomID("dialogEditBodyID")
// dialogdeleteID := utils.GenerateRandomID("dialogdeleteID")
// dialogdeleteBodyID := utils.GenerateRandomID("dialogdeleteBodyID")
@@ -159,7 +160,11 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error
// component table listing kelainan
contentKelainanComponent := masterkelainan.TableKelainan(
dataKelainan, tableID)
dataKelainan, tableID,
"/dev/kelainan/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID")
// filter kelainan component
kelainanFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV2(searchID,
@@ -181,13 +186,55 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error
"outerHTML", "", "",
)
// modal edit form
dialogEditBodyComponent := masterkelainan.BodyFormKelainan(
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanname",
Placeholder: "Nama Grup Kelainan",
Type: "text", ID: "kelainaninputname"},
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanid",
Placeholder: "Nama Grup Kelainan",
Type: "hidden", ID: "kelainaninputid"},
dialogEditBodyID, masterkelainan.JsHideModal(""))
modalActioEditComponent := masterkelainan.ActionFormKelainan(
"/dev/kelainan/closeeditform",
"#"+dialogEditBodyID,
"outerHTML",
"#"+dialogEditID)
btnCloaseModalEdit := masterkelainan.BtnCloseFormKelainan(
"/dev/kelainan/closeeditform",
"#"+dialogEditBodyID,
"outerHTML",
"#"+dialogEditID)
modalEditFormComponent := masterkelainan.KelainanForm(
models.KelainanFormComponent{
IDComponent: "formkelainan",
Link: "/dev/kelainan/edit",
HxTarget: "#" + dialogEditBodyID,
HxSwap: "outerHTML",
HxInclude: "#tableID, #paginationID, #searchID, #dialogEditBodyID, #dialogEditID, #" + searchID + ", #currpage" + paginationID,
ModalID: dialogEditID,
ModalTitle: "New - Grup Kelainan",
DialogBody: dialogEditBodyComponent,
DialogAction: modalActioEditComponent,
ButtonCLose: btnCloaseModalEdit,
},
)
// content, css, js
content := masterkelainan.ContentMasterKelainan(
tableID, paginationID, searchID, dialogAddID, dialogAddBodyID,
dialogEditID,
dialogEditBodyID,
breadcrumbComponent,
contentKelainanComponent,
kelainanFilterComponent,
kelainanPaginationComponent,
modaladdcomponent)
modaladdcomponent,
modalEditFormComponent)
css := masterkelainan.CssKelainan()
js := masterkelainan.JsMdKelainan()
@@ -209,7 +256,7 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanSearch(c echo.Context)
searchID := c.QueryParam("searchID")
tableID := c.QueryParam("tableID")
paginationID := c.QueryParam("paginationID")
// dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
// dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
logger, _ := zap.NewProduction()
@@ -224,7 +271,11 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanSearch(c echo.Context)
}
contentKelainanComponent := masterkelainan.TableKelainan(
dataKelainan, tableID)
dataKelainan, tableID,
"/dev/kelainan/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID")
kelainanPaginationComponent := pagination.PaginationV2(totalpage,
1,
@@ -246,7 +297,7 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanPagination(c echo.Cont
tableID := c.QueryParam("tableID")
searchID := c.QueryParam("searchID")
paginationID := c.QueryParam("paginationID")
// dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
// dialogDeleteBodyID := c.QueryParam("dialogDeleteBodyID")
page, err := strconv.Atoi(pageparam)
if err != nil {
@@ -269,7 +320,11 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainanPagination(c echo.Cont
}
contentKelainanComponent := masterkelainan.TableKelainan(
dataKelainan, tableID)
dataKelainan, tableID,
"/dev/kelainan/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID")
kelainanPaginationComponent := pagination.PaginationV2(totalpage,
page,
@@ -295,7 +350,7 @@ func (lh *MasterKelainanHandler) AddKelainan(c echo.Context) error {
currPagePrm := c.FormValue("currpage" + paginationID)
dialogAddBodyID := c.FormValue("dialogAddBodyID")
dialogAddID := c.FormValue("dialogAddID")
// dialogEditBodyID := c.FormValue("dialogEditBodyID")
dialogEditBodyID := c.FormValue("dialogEditBodyID")
// dialogDeleteBodyID := c.FormValue("dialogDeleteBodyID")
currPage, err := strconv.Atoi(currPagePrm)
@@ -398,7 +453,11 @@ func (lh *MasterKelainanHandler) AddKelainan(c echo.Context) error {
// New table listing
contentKelainanComponent := masterkelainan.TableKelainan(
dataKelainanList, tableID)
dataKelainanList, tableID,
"",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID")
// New pagination
kelainanPaginationComponent := pagination.PaginationV2(totalpage,
@@ -432,3 +491,197 @@ func (lh *MasterKelainanHandler) HandleCloseFormAdd(c echo.Context) error {
dialogAddBodyID, masterkelainan.JsHideModal(""))
return utils.View(c, newForm)
}
func (lh *MasterKelainanHandler) HandleOpenEditForm(c echo.Context) error {
id := c.QueryParam("id")
dialogEditID := c.QueryParam("dialogEditID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dataKelainan, err := lh.MasterKelainanService.GetKelainanByID(id)
if err != nil {
newForm := masterkelainan.BodyFormKelainan(
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanname",
Placeholder: "Nama Grup Kelainan",
Type: "text",
ID: "kelainaninputname"},
models.CustomTextFieldv2Prm{Label: "Nama Grup Kelainan",
Name: "kelainanid",
Placeholder: "Nama Grup Kelainan",
Type: "hidden",
ID: "kelainaninputid"},
dialogEditBodyID, masterkelainan.JsHideModal(""))
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get kelainan grup error", "danger"), newForm})
}
newForm := masterkelainan.BodyFormKelainan(
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanname",
Placeholder: "Nama Grup Kelainan",
Value: dataKelainan.Mcu_KelainanGroupName,
Type: "text",
ID: "kelainaninputname"},
models.CustomTextFieldv2Prm{Label: "Nama Grup Kelainan",
Name: "kelainanid",
Placeholder: "Nama Grup Kelainan",
Value: strconv.Itoa(dataKelainan.Mcu_KelainanGroupID),
Type: "hidden",
ID: "kelainaninputid"},
dialogEditBodyID, masterkelainan.JsShowModal("#"+dialogEditID))
return utils.View(c, newForm)
}
func (lh *MasterKelainanHandler) HandleCloseFormEdit(c echo.Context) error {
dialogEditBodyID := c.FormValue("dialogEditBodyID")
newForm := masterkelainan.BodyFormKelainan(
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanname",
Placeholder: "Nama Grup Kelainan",
Type: "text",
ID: "kelainaninputname"},
models.CustomTextFieldv2Prm{Label: "Nama Grup Kelainan",
Name: "kelainanid",
Placeholder: "Nama Grup Kelainan",
Type: "hidden",
ID: "kelainaninputid"},
dialogEditBodyID, masterkelainan.JsHideModal(""))
return utils.View(c, newForm)
}
func (lh *MasterKelainanHandler) HandleEditKelainan(c echo.Context) error {
logger, _ := zap.NewProduction()
defer logger.Sync()
//prm form editkelainan
name := c.FormValue("kelainanname")
id := c.FormValue("kelainanid")
tableID := c.FormValue("tableID")
paginationID := c.FormValue("paginationID")
searchID := c.FormValue("searchID")
search := c.FormValue("search")
currPagePrm := c.FormValue("currpage" + paginationID)
dialogEditID := c.FormValue("dialogEditID")
dialogEditBodyID := c.FormValue("dialogEditBodyID")
currPage, err := strconv.Atoi(currPagePrm)
if err != nil {
return err
}
logger.Info("EDIT KELAINAN",
zap.Any("nama", name),
zap.Any("tableid", tableID),
zap.Any("search", search),
zap.Any("currpage", currPage),
)
// form validation
nameValidation := ""
if strings.TrimSpace(name) == "" {
nameValidation = "Nama grup kelainan tidak boleh kosong"
}
if nameValidation != "" {
newForm := masterkelainan.BodyFormKelainan(
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanname",
Placeholder: "Nama Grup Kelainan",
Type: "text",
Value: name,
ID: "kelainaninputname",
ErrorMsg: nameValidation},
models.CustomTextFieldv2Prm{Label: "Nama Grup Kelainan",
Name: "kelainanid",
Placeholder: "Nama Grup Kelainan",
Type: "hidden",
ID: "kelainaninputid"},
dialogEditBodyID, masterkelainan.JsHideModal(""))
return utils.ViewMulti(c, []templ.Component{
customtoastv2.CustomToastV2Show("Warning", nameValidation, "warning"), newForm})
}
// edit kelainan service
dataKelainan, err := lh.MasterKelainanService.EditKelainan(id, name)
if err != nil {
logger.Info("Error",
zap.Any("Error", err),
zap.Any("name", name),
)
newForm := masterkelainan.BodyFormKelainan(
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanname",
Placeholder: "Nama Grup Kelainan",
Type: "text",
Value: name,
ID: "kelainaninputname",
},
models.CustomTextFieldv2Prm{Label: "Nama Grup Kelainan",
Name: "kelainanid",
Placeholder: "Nama Grup Kelainan",
Type: "hidden",
ID: "kelainaninputid"},
dialogEditBodyID, masterkelainan.JsHideModal(""))
return utils.ViewMulti(c, []templ.Component{
customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), newForm})
}
logger.Info("EDIT KELAINAN",
zap.Any("reutn", dataKelainan),
zap.Any("name", name),
)
// get list kelainan for table
dataKelainanList, totalPage, err := lh.MasterKelainanService.GetListMasterKelainan(search, currPage, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET KELAINAN",
zap.Any("error", err),
)
fmt.Println(dataKelainan)
return err
}
// Table component
tableComponent := masterkelainan.TableKelainan(dataKelainanList,
tableID,
"/dev/kelainan/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID")
// pagination component
kelainanPaginationComponent := pagination.PaginationV2(
totalPage,
currPage,
"/dev/kelainanpagination",
paginationID,
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID",
"#"+paginationID,
"outerHTML", "", "true",
)
newForm := masterkelainan.BodyFormKelainan(
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanname",
Placeholder: "Nama Grup Kelainan",
ErrorMsg: nameValidation,
Type: "text"},
models.CustomTextFieldv2Prm{
Label: "Nama Grup Kelainan",
Name: "kelainanid",
Placeholder: "Nama Grup Kelainan",
Type: "hidden", ID: "kelainaninputid"},
dialogEditBodyID, masterkelainan.JsHideModal("#"+dialogEditID))
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil edit Kelainan Grup "+name, "success")
retval := []templ.Component{toastSuccess, tableComponent, kelainanPaginationComponent, newForm}
return utils.ViewMulti(c, retval)
}

View File

@@ -220,4 +220,7 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
dev.GET("/kelainanpagination", devKLhandlers.HandlerShowMasterKelainanPagination)
dev.POST("/kelainan/closeaddform", devKLhandlers.HandleCloseFormAdd)
dev.POST("/kelainan/add", devKLhandlers.AddKelainan)
dev.GET("/kelainan/openedit", devKLhandlers.HandleOpenEditForm)
dev.POST("/kelainan/closeeditform", devKLhandlers.HandleCloseFormEdit)
dev.POST("/kelainan/edit", devKLhandlers.HandleEditKelainan)
}