add feature edit

This commit is contained in:
Hanan Askarim
2024-05-27 14:58:10 +07:00
parent 04460bac00
commit a3005c3b6a
7 changed files with 710 additions and 18 deletions

View File

@@ -11,7 +11,6 @@ import (
"cpone/services"
"cpone/utils"
dev_mdnatunitview "cpone/views/dev/mdnatunit"
dev_mdusergroupview "cpone/views/dev/mdusergroup"
"fmt"
"strconv"
"strings"
@@ -25,6 +24,8 @@ type MdNatUnitServices interface {
GetListMdNatUnit(search string, currentPage int, rowPerPage int) ([]models.NatUnit, int, error)
GetMdNatUnitBreadCrumb(title string) (models.BreadCrumbV1, error)
AddMdNatUnit(code string, name string) (models.NatUnit, error)
GetMdNatUnitByID(id string) (models.NatUnit, error)
EditMdNatUnit(id string, code string, name string) (models.NatUnit, error)
}
func NeWMdNatUnitHandler(nu MdNatUnitServices) *MdNatUnitHandler {
@@ -45,6 +46,8 @@ func (nh *MdNatUnitHandler) HandleShowMdNatUnitScreen(c echo.Context) error {
searchID := utils.GenerateRandomID("searchid")
dialogAddID := utils.GenerateRandomID("dialogaddID")
dialogAddBodyID := utils.GenerateRandomID("dialogaddbodyID")
dialogEditID := utils.GenerateRandomID("dialogEditID")
dialogEditBodyID := utils.GenerateRandomID("dialogEditbodyID")
dataMenu, err := services.GetMenu()
fmt.Println(dataMenu)
fmt.Println(err)
@@ -108,9 +111,13 @@ func (nh *MdNatUnitHandler) HandleShowMdNatUnitScreen(c echo.Context) error {
tableComponent := dev_mdnatunitview.TableNatUnit(dataNatUnit,
tableID,
"/dev/md/natunit/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID",
)
//filter user group component
//filter nat unit component
natUnitFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV3(searchID,
"search",
"Cari Kode/Nama",
@@ -183,6 +190,55 @@ func (nh *MdNatUnitHandler) HandleShowMdNatUnitScreen(c echo.Context) error {
},
)
// modal edit form
dialogEditBodyCmp := dev_mdnatunitview.BodyFormNatUnit(
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitcode",
Placeholder: "Kode Unit",
Type: "text", ID: "natunitinputname"},
models.CustomTextFieldv2Prm{
Label: "Nama Unit",
Name: "natunitname",
Placeholder: "Nama Unit",
Type: "text", ID: "natunitinputname"},
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitid",
Placeholder: "Kode Unit",
Type: "hidden", ID: "natunitinputid"},
dialogEditBodyID, dev_mdnatunitview.JsHideModal(""),
)
modalActionEditCmp := dev_mdnatunitview.ActionFormNatUnit(
"/dev/md/natunit/closeeditform",
"#"+dialogEditBodyID,
"outerHTML",
"#"+dialogEditID,
)
btnCloseModalEdit := dev_mdnatunitview.BtnCloseFormNatUnit(
"/dev/md/natunit/closeeditform",
"#"+dialogEditBodyID,
"outerHTML",
"#"+dialogEditID,
)
modalEditFormComponent := dev_mdnatunitview.NatUnitForm(
models.NatUnitFormComponent{
IDComponent: "formnatunit",
Link: "dev/md/natunit/edit",
HxTarget: "#" + dialogEditBodyID,
HxSwap: "outerHTML",
HxInclude: "#tableID, #paginationID, #searchID, #dialogEditBodyID, #dialogEditID, #" + searchID + ", #currpage" + paginationID,
ModalID: dialogEditID,
ModalTitle: "New - Unit",
DialogBody: dialogEditBodyCmp,
DialogAction: modalActionEditCmp,
ButtonCLose: btnCloseModalEdit,
},
)
// content, css, js
content := dev_mdnatunitview.MdNatUnitScreen(
tableID,
@@ -190,11 +246,14 @@ func (nh *MdNatUnitHandler) HandleShowMdNatUnitScreen(c echo.Context) error {
searchID,
dialogAddID,
dialogAddBodyID,
dialogEditID,
dialogEditBodyID,
breadcrumbComponent,
tableComponent,
natUnitFilterComponent,
natUnitPaginationComponent,
modalAddFormComponent,
modalEditFormComponent,
)
css := dev_mdnatunitview.CssMdNatUnit()
js := dev_mdnatunitview.JsMdNatUnit()
@@ -217,6 +276,7 @@ func (nh *MdNatUnitHandler) HandleFilterMdNatUnit(c echo.Context) error {
searchID := c.QueryParam("searchID")
tableID := c.QueryParam("tableID")
paginationID := c.QueryParam("paginationID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
var retval []templ.Component
logger, _ := zap.NewProduction()
@@ -230,7 +290,11 @@ func (nh *MdNatUnitHandler) HandleFilterMdNatUnit(c echo.Context) error {
return err
}
tableComponent := dev_mdnatunitview.TableNatUnit(dataNatUnit,
tableID)
tableID,
"/dev/md/natunit/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID")
natUnitPaginationComponent := pagination.PaginationV3(
totalpage,
1,
@@ -253,6 +317,7 @@ func (nh *MdNatUnitHandler) HandlerChangePageMdNatUnit(c echo.Context) error {
tableID := c.QueryParam("tableID")
searchID := c.QueryParam("searchID")
paginationID := c.QueryParam("paginationID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
var retval []templ.Component
logger, _ := zap.NewProduction()
@@ -276,7 +341,12 @@ func (nh *MdNatUnitHandler) HandlerChangePageMdNatUnit(c echo.Context) error {
return err
}
tableComponent := dev_mdnatunitview.TableNatUnit(dataNatUnit,
tableID)
tableID,
"/dev/md/natunit/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID",
)
natUnitPaginationComponent := pagination.PaginationV3(
totalpage,
page,
@@ -311,7 +381,7 @@ func (nh *MdNatUnitHandler) HandlerCloseFormAdd(c echo.Context) error {
Name: "natunitid",
Placeholder: "Kode Unit",
Type: "hidden", ID: "natunitinputid"},
dialogAddBodyID, dev_mdusergroupview.JsHideModal(""))
dialogAddBodyID, dev_mdnatunitview.JsHideModal(""))
return utils.View(c, newForm)
}
@@ -329,6 +399,7 @@ func (nh *MdNatUnitHandler) HandlerAddNatUnit(c echo.Context) error {
currPagePrm := c.FormValue("currpage" + paginationID)
dialogAddBodyID := c.FormValue("dialogAddBodyID")
dialogAddID := c.FormValue("dialogAddID")
dialogEditBodyID := c.FormValue("dialogEditBodyID")
currPage, err := strconv.Atoi(currPagePrm)
if err != nil {
@@ -441,6 +512,10 @@ func (nh *MdNatUnitHandler) HandlerAddNatUnit(c echo.Context) error {
tableComponent := dev_mdnatunitview.TableNatUnit(
dataNatUnitList,
tableID,
"/dev/md/natunit/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID",
)
// pagination component
@@ -484,3 +559,255 @@ func (nh *MdNatUnitHandler) HandlerAddNatUnit(c echo.Context) error {
newForm,
})
}
func (nh *MdNatUnitHandler) HandlerOpenEditForm(c echo.Context) error {
id := c.QueryParam("id")
dialogEditID := c.QueryParam("dialogEditID")
dialogEditBodyID := c.QueryParam("dialogEditBodyID")
dataNatUnit, err := nh.MdNatUnitServices.GetMdNatUnitByID(id)
if err != nil {
newForm := dev_mdnatunitview.BodyFormNatUnit(
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitcode",
Placeholder: "Kode Unit",
Type: "text", ID: "natunitinputname"},
models.CustomTextFieldv2Prm{
Label: "Nama Unit",
Name: "natunitname",
Placeholder: "Nama Unit",
Type: "text", ID: "natunitinputname"},
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitid",
Placeholder: "Kode Unit",
Type: "hidden", ID: "natunitinputid"},
dialogEditBodyID, dev_mdnatunitview.JsHideModal(""))
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Error", "Get unit error", "danger"), newForm})
}
newForm := dev_mdnatunitview.BodyFormNatUnit(
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitcode",
Placeholder: "Kode Unit",
Value: dataNatUnit.Nat_UnitCode,
Type: "text",
ID: "natunitinputname"},
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitname",
Placeholder: "Kode Unit",
Value: dataNatUnit.Nat_UnitName,
Type: "text",
ID: "natunitinputname"},
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitid",
Placeholder: "Kode Unit",
Value: strconv.Itoa(dataNatUnit.Nat_UnitID),
Type: "hidden",
ID: "natunitinputid"},
dialogEditBodyID, dev_mdnatunitview.JsShowModal("#"+dialogEditID))
return utils.View(c, newForm)
}
func (nh *MdNatUnitHandler) HandlerCloseFormEdit(c echo.Context) error {
dialogEditBodyID := c.FormValue("dialogEditBodyID")
newForm := dev_mdnatunitview.BodyFormNatUnit(
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitcode",
Placeholder: "Kode Unit",
Type: "text", ID: "natunitinputname"},
models.CustomTextFieldv2Prm{
Label: "Nama Unit",
Name: "natunitname",
Placeholder: "Nama Unit",
Type: "text", ID: "natunitinputname"},
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitid",
Placeholder: "Kode Unit",
Type: "hidden", ID: "natunitinputid"},
dialogEditBodyID, dev_mdnatunitview.JsHideModal(""))
return utils.View(c, newForm)
}
func (nh *MdNatUnitHandler) HandlerEditNatUnit(c echo.Context) error {
logger, _ := zap.NewProduction()
defer logger.Sync()
// prm form addnatunit
code := c.FormValue("natunitcode")
name := c.FormValue("natunitname")
id := c.FormValue("natunitid")
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 NAT UNIT PARAM",
zap.Any("code", code),
zap.Any("nama", name),
zap.Any("tableid", tableID),
zap.Any("search", search),
zap.Any("currpage", currPage),
)
formValidation := ""
codeValidation := ""
nameValidation := ""
if strings.TrimSpace(code) == "" {
formValidation = "Code unit tidak boleh kosong"
codeValidation = "Code unit tidak boleh kosong"
nameValidation = ""
}
if strings.TrimSpace(name) == "" {
formValidation = "Nama unit tidak boleh kosong"
codeValidation = ""
nameValidation = "Nama unit tidak boleh kosong"
}
if strings.TrimSpace(code) == "" && strings.TrimSpace(name) == "" {
formValidation = "Code dan nama unit tidak boleh kosong"
codeValidation = "Code unit tidak boleh kosong"
nameValidation = "Nama unit tidak boleh kosong"
}
if formValidation != "" || codeValidation != "" || nameValidation != "" {
newForm := dev_mdnatunitview.BodyFormNatUnit(
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitcode",
Placeholder: "Kode Unit",
ErrorMsg: codeValidation,
Value: code,
Type: "text"},
models.CustomTextFieldv2Prm{
Label: "Nama Unit",
Name: "natunitname",
Placeholder: "Nama Unit",
ErrorMsg: nameValidation,
Value: name,
Type: "text"},
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitid",
Placeholder: "Kode Unit",
Type: "hidden", ID: "natunitinputid"},
dialogEditBodyID, dev_mdnatunitview.JsHideModal(""))
return utils.ViewMulti(c, []templ.Component{customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm})
}
// edit nat unit service
dataNatUnit, err := nh.MdNatUnitServices.EditMdNatUnit(id, code, name)
if err != nil {
logger.Info("Error",
zap.Any("Error", err),
zap.Any("code", code),
zap.Any("name", name),
)
newForm := dev_mdnatunitview.BodyFormNatUnit(
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitcode",
Placeholder: "Kode Unit",
ErrorMsg: codeValidation,
Value: code,
Type: "text"},
models.CustomTextFieldv2Prm{
Label: "Nama Unit",
Name: "natunitname",
Placeholder: "Nama Unit",
ErrorMsg: nameValidation,
Value: name,
Type: "text"},
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitid",
Placeholder: "Kode Unit",
Type: "hidden", ID: "natunitinputid"},
dialogEditBodyID, dev_mdnatunitview.JsHideModal(""))
return utils.ViewMulti(c, []templ.Component{
customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), newForm})
}
logger.Info("ADD NAT UNIT",
zap.Any("return", dataNatUnit),
zap.Any("code", code),
zap.Any("name", name),
)
// get list nat unit for table
dataNatUnitList, totalPage, err := nh.MdNatUnitServices.GetListMdNatUnit(search, currPage, 5)
if err != nil {
defer logger.Sync()
logger.Info("ERROR GET NAT UNIT",
zap.Any("error", err),
)
fmt.Println(dataNatUnit)
return err
}
// table component
tableComponent := dev_mdnatunitview.TableNatUnit(
dataNatUnitList,
tableID,
"/dev/md/natunit/openedit",
"#"+dialogEditBodyID,
"outerHTML",
"#dialogEditBodyID, #dialogEditID",
)
// pagination component
natUnitPaginationComponent := pagination.PaginationV3(
totalPage,
currPage,
"/dev/md/natunit/changepage",
paginationID,
"#tableID, #searchID, #"+searchID+", #paginationID, #dialogEditBodyID, #dialogEditID",
"#"+paginationID,
"outerHTML", "", "true",
dev_mdnatunitview.BeforeRequestContent(),
dev_mdnatunitview.AfterRequestContent(),
)
var retVal []templ.Component
newForm := dev_mdnatunitview.BodyFormNatUnit(
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitcode",
Placeholder: "Kode Unit",
ErrorMsg: codeValidation,
Type: "text"},
models.CustomTextFieldv2Prm{
Label: "Nama Unit",
Name: "natunitname",
Placeholder: "Nama Unit",
ErrorMsg: nameValidation,
Type: "text"},
models.CustomTextFieldv2Prm{
Label: "Kode Unit",
Name: "natunitid",
Placeholder: "Kode Unit",
Type: "hidden", ID: "natunitinputid"},
dialogEditBodyID, dev_mdnatunitview.JsHideModal("#"+dialogEditID))
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Berhasil edit Unit "+name, "success")
retVal = append(retVal, toastSuccess)
retVal = append(retVal, tableComponent)
retVal = append(retVal, natUnitPaginationComponent)
retVal = append(retVal, newForm)
return utils.ViewMulti(c, retVal)
}

View File

@@ -255,4 +255,7 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
dev.GET("/md/natunit/changepage", devMdNatUnitHandlers.HandlerChangePageMdNatUnit)
dev.POST("/md/natunit/closeaddform", devMdNatUnitHandlers.HandlerCloseFormAdd)
dev.POST("/md/natunit/add", devMdNatUnitHandlers.HandlerAddNatUnit)
dev.GET("/md/natunit/openedit", devMdNatUnitHandlers.HandlerOpenEditForm)
dev.POST("/md/natunit/closeeditform", devMdNatUnitHandlers.HandlerCloseFormEdit)
dev.POST("/md/natunit/edit", devMdNatUnitHandlers.HandlerEditNatUnit)
}