feature tambah data kelainan detail
This commit is contained in:
@@ -28,6 +28,7 @@ type MasterKelainanService interface {
|
||||
EditKelainan(id string, name string) (models.Kelainan, error)
|
||||
DeleteKelainan(id string) (models.Kelainan, error)
|
||||
GetListMasterKelainanDetail(id string, searchdetail string, currentPage int, rowPerPage int) ([]models.KelainanDetail, int, error)
|
||||
AddKelainanDetail(name string, nameclassification string, selectedid string) (models.KelainanDetail, error)
|
||||
}
|
||||
|
||||
func NewMasterKelainanHandler(us MasterKelainanService) *MasterKelainanHandler {
|
||||
@@ -54,6 +55,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error
|
||||
tableDetailID := utils.GenerateRandomID("tablebodydetail")
|
||||
paginationDetailID := utils.GenerateRandomID("paginationdetailid")
|
||||
searchDetailID := utils.GenerateRandomID("searchdetailid")
|
||||
dialogDetailAddID := utils.GenerateRandomID("dialogdetailaddid")
|
||||
dialogDetailAddBodyID := utils.GenerateRandomID("dialogdetailaddbodyid")
|
||||
|
||||
// println("cek id param", id)
|
||||
|
||||
@@ -316,6 +319,54 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error
|
||||
"outerHTML", "", "",
|
||||
)
|
||||
|
||||
// component modal add kelainan detail
|
||||
dialogDetailAddBodyCmp := masterkelainan.BodyFormKelainanDetail(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailid",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "hidden", ID: "kelainandetailid"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailname",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "text", ID: "kelainandetailinputname"},
|
||||
models.SwitchclassPrm{
|
||||
Label: "Dengan Klasifikasi",
|
||||
Type: "checkbox",
|
||||
Checked: "true ",
|
||||
Name: "select",
|
||||
ID: "switchname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Klasifikasi",
|
||||
Name: "classificationname",
|
||||
Placeholder: "Nama Klasifikasi",
|
||||
Type: "text", ID: "classificationinputname"},
|
||||
|
||||
dialogDetailAddBodyID, masterkelainan.JsHideModalDetail(""))
|
||||
dialogDetailAddActionCmp := masterkelainan.ActionFormKelainanDetail(
|
||||
"/dev/kelainandetail/closeaddform",
|
||||
"#"+dialogDetailAddBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogDetailAddID)
|
||||
dialogDetailAddCloseCmp := masterkelainan.BtnCloseFormKelainanDetail(
|
||||
"/dev/kelainandetail/closeaddform",
|
||||
"#"+dialogDetailAddBodyID,
|
||||
"outerHTML",
|
||||
"#"+dialogDetailAddID)
|
||||
modaldetailaddcomponent := masterkelainan.KelainanDetailForm(models.KelainanDetailFormComponent{
|
||||
IDComponent: "formkelainandetail",
|
||||
Link: "/dev/kelainandetail/add",
|
||||
HxTarget: "#" + dialogDetailAddBodyID,
|
||||
HxSwap: "outerHTML",
|
||||
HxInclude: "#selectedID, #tableDetailID, #paginationDetailID, #searchDetailID, #dialogDetailAddBodyID, #dialogDetailAddID, #selectedID #" + searchDetailID + ", #currpage" + paginationDetailID,
|
||||
ModalID: dialogDetailAddID,
|
||||
ModalTitle: "New - Kelainan",
|
||||
DialogBody: dialogDetailAddBodyCmp,
|
||||
DialogAction: dialogDetailAddActionCmp,
|
||||
ButtonCLose: dialogDetailAddCloseCmp,
|
||||
})
|
||||
|
||||
// content, css, js
|
||||
content := masterkelainan.ContentMasterKelainan(
|
||||
tableID, paginationID, searchID, dialogAddID, dialogAddBodyID,
|
||||
@@ -326,6 +377,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error
|
||||
tableDetailID,
|
||||
paginationDetailID,
|
||||
searchDetailID,
|
||||
dialogDetailAddID,
|
||||
dialogDetailAddBodyID,
|
||||
breadcrumbComponent,
|
||||
contentKelainanComponent,
|
||||
kelainanFilterComponent,
|
||||
@@ -335,7 +388,8 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error
|
||||
modalDeleteFormComponent,
|
||||
contentKelainanDetailCmp,
|
||||
kelainanDetailFilterCmp,
|
||||
kelainanDetailPaginationCmp)
|
||||
kelainanDetailPaginationCmp,
|
||||
modaldetailaddcomponent)
|
||||
css := masterkelainan.CssKelainan()
|
||||
js := masterkelainan.JsMdKelainan()
|
||||
|
||||
@@ -1111,3 +1165,222 @@ func (lh *MasterKelainanHandler) HandlerShowMdKelainanDetailPagination(c echo.Co
|
||||
|
||||
return utils.ViewMulti(c, retval)
|
||||
}
|
||||
|
||||
func (lh *MasterKelainanHandler) HandlerAddKelainanDetail(c echo.Context) error {
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
selectedID := c.FormValue("selectedID")
|
||||
nameKelainanDetail := c.FormValue("kelainandetailname")
|
||||
nameClassification := c.FormValue("classificationname")
|
||||
// tableID := c.FormValue("tableID")
|
||||
tableDetailID := c.FormValue("tableDetailID")
|
||||
paginationDetailID := c.FormValue("paginationDetailID")
|
||||
searchDetailID := c.FormValue("searchDetailID")
|
||||
searchdetail := c.FormValue("searchdetail")
|
||||
currPagePrmDetail := c.FormValue("currpage" + paginationDetailID)
|
||||
dialogDetailAddBodyID := c.FormValue("dialogDetailAddBodyID")
|
||||
dialogDetailAddID := c.FormValue("dialogDetailAddID")
|
||||
|
||||
currPage, err := strconv.Atoi(currPagePrmDetail)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
logger.Info("ADD KELAINAN DETAIL",
|
||||
zap.Any("nama", nameKelainanDetail),
|
||||
zap.Any("nama klasifikasi", nameClassification),
|
||||
zap.Any("tabelid", tableDetailID),
|
||||
zap.Any("search", searchdetail),
|
||||
zap.Any("currpage", currPage),
|
||||
)
|
||||
|
||||
kelainanGrupID, _ := strconv.Atoi(selectedID)
|
||||
// form validation
|
||||
formValidation := ""
|
||||
nameValidation := ""
|
||||
kelainanGrupValidation := ""
|
||||
if strings.TrimSpace(nameKelainanDetail) == "" {
|
||||
formValidation = "Nama kelainan tidak boleh kosong"
|
||||
nameValidation = "Nama kelainan tidak boleh kosong"
|
||||
kelainanGrupValidation = ""
|
||||
}
|
||||
if strings.TrimSpace(selectedID) == "" || kelainanGrupID == 0 {
|
||||
formValidation = "Pilih kelainan grup dulu"
|
||||
nameValidation = ""
|
||||
kelainanGrupValidation = "Pilih kelainan grup dulu"
|
||||
}
|
||||
if strings.TrimSpace(nameKelainanDetail) == "" && (strings.TrimSpace(selectedID) == "" || kelainanGrupID == 0) {
|
||||
formValidation = "Nama kelainan dan Kelainan Grup tidak boleh kosong"
|
||||
nameValidation = "Nama kelainan tidak boleh kosong"
|
||||
kelainanGrupValidation = "Pilih kelainan grup dulu"
|
||||
}
|
||||
if formValidation != "" || nameValidation != "" || kelainanGrupValidation != "" {
|
||||
newForm := masterkelainan.BodyFormKelainanDetail(
|
||||
models.CustomTextFieldv2Prm{Label: "Nama Kelainan",
|
||||
Name: "kelainandetailid",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "hidden",
|
||||
ID: "kelainandetailid"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailname",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "text",
|
||||
Value: nameKelainanDetail,
|
||||
ID: "kelainandetailinputname",
|
||||
ErrorMsg: nameValidation},
|
||||
models.SwitchclassPrm{
|
||||
Label: "Dengan Klasifikasi",
|
||||
Type: "checkbox",
|
||||
Checked: "true ",
|
||||
Name: "select",
|
||||
ID: "switchname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Klasifikasi",
|
||||
Name: "classificationname",
|
||||
Placeholder: "Nama Klasifikasi",
|
||||
Type: "text",
|
||||
Value: nameClassification, ID: "classificationinputname"},
|
||||
dialogDetailAddBodyID, masterkelainan.JsHideModalDetail(""))
|
||||
|
||||
return utils.ViewMulti(c, []templ.Component{
|
||||
customtoastv2.CustomToastV2Show("Warning", formValidation, "warning"), newForm})
|
||||
}
|
||||
|
||||
// add kelainan detail service
|
||||
dataKelainanDetail, err := lh.MasterKelainanService.AddKelainanDetail(nameKelainanDetail, nameClassification, selectedID)
|
||||
|
||||
if err != nil {
|
||||
logger.Info("Error",
|
||||
zap.Any("Error", err),
|
||||
zap.Any("nama", nameKelainanDetail),
|
||||
zap.Any("nama klasifikasi", nameClassification),
|
||||
zap.Any("selectedid", selectedID),
|
||||
)
|
||||
|
||||
newForm := masterkelainan.BodyFormKelainanDetail(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailid",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "hidden", ID: "kelainandetailid"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailname",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "text", ID: "kelainandetailinputname"},
|
||||
models.SwitchclassPrm{
|
||||
Label: "Dengan Klasifikasi",
|
||||
Type: "checkbox",
|
||||
Checked: "true ",
|
||||
Name: "select",
|
||||
ID: "switchname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Klasifikasi",
|
||||
Name: "classificationname",
|
||||
Placeholder: "Nama Klasifikasi",
|
||||
Type: "text", ID: "classificationinputname"},
|
||||
dialogDetailAddBodyID, masterkelainan.JsHideModalDetail(""))
|
||||
return utils.ViewMulti(c, []templ.Component{
|
||||
customtoastv2.CustomToastV2Show("Error", err.Error(), "danger"), newForm})
|
||||
}
|
||||
logger.Info("ADD KELAINAN DETAIL",
|
||||
zap.Any("return", dataKelainanDetail),
|
||||
zap.Any("name", nameKelainanDetail),
|
||||
zap.Any("name klasifikasi", nameClassification),
|
||||
zap.Any("selectedid", selectedID),
|
||||
)
|
||||
|
||||
// get data table current page
|
||||
dataKelainanDetailList, totalpage, err := lh.MasterKelainanService.GetListMasterKelainanDetail(selectedID, searchdetail, currPage, 5)
|
||||
if err != nil {
|
||||
defer logger.Sync()
|
||||
logger.Info("ERROR GET KELAINAN DETAIL",
|
||||
zap.Any("error", err),
|
||||
)
|
||||
}
|
||||
|
||||
// new add form
|
||||
newForm := masterkelainan.BodyFormKelainanDetail(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailid",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "hidden", ID: "kelainandetailid"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailname",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "text",
|
||||
Value: "",
|
||||
ID: "kelainandetailinputname"},
|
||||
models.SwitchclassPrm{
|
||||
Label: "Dengan Klasifikasi",
|
||||
Type: "checkbox",
|
||||
Checked: "true ",
|
||||
Name: "select",
|
||||
ID: "switchname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Klasifikasi",
|
||||
Name: "classificationname",
|
||||
Placeholder: "Nama Klasifikasi",
|
||||
Type: "text",
|
||||
Value: "",
|
||||
ID: "classificationinputname"},
|
||||
dialogDetailAddBodyID, masterkelainan.JsHideModalDetail("#"+dialogDetailAddID))
|
||||
|
||||
// new table listing
|
||||
contentKelainanDetailComponent := masterkelainan.TableKelainanDetail(
|
||||
dataKelainanDetailList, tableDetailID,
|
||||
)
|
||||
|
||||
// new pagination
|
||||
kelainanDetailPaginationCmp := pagination.PaginationV2(totalpage,
|
||||
currPage,
|
||||
"/dev/kelainandetailpagination",
|
||||
paginationDetailID,
|
||||
"#tableDetailID, #searchDetailID, #"+searchDetailID+", #paginationDetailID",
|
||||
"#"+paginationDetailID, "outerHTML", "", "true")
|
||||
|
||||
toastSuccess := customtoastv2.CustomToastV2Show("Success", "Success add kelainan "+nameKelainanDetail, "success")
|
||||
|
||||
retVal := []templ.Component{toastSuccess, contentKelainanDetailComponent, kelainanDetailPaginationCmp, newForm}
|
||||
|
||||
return utils.ViewMulti(c, retVal)
|
||||
}
|
||||
|
||||
func (lh *MasterKelainanHandler) HandlerCloseFormAddDetail(c echo.Context) error {
|
||||
dialogDetailAddBodyID := c.FormValue("dialogDetailAddBodyID")
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
logger.Info("CEK dialogDetailAddBodyID CLOSE",
|
||||
zap.Any("dialogDetailAddBodyID", dialogDetailAddBodyID),
|
||||
)
|
||||
|
||||
newForm := masterkelainan.BodyFormKelainanDetail(
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailid",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "hidden", ID: "kelainandetailid"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Kelainan",
|
||||
Name: "kelainandetailname",
|
||||
Placeholder: "Nama Kelainan",
|
||||
Type: "text", ID: "kelainandetailinputname"},
|
||||
models.SwitchclassPrm{
|
||||
Label: "Dengan Klasifikasi",
|
||||
Type: "checkbox",
|
||||
Checked: "true ",
|
||||
Name: "select",
|
||||
ID: "switchname"},
|
||||
models.CustomTextFieldv2Prm{
|
||||
Label: "Nama Klasifikasi",
|
||||
Name: "classificationname",
|
||||
Placeholder: "Nama Klasifikasi",
|
||||
Type: "text", ID: "classificationinputname"},
|
||||
dialogDetailAddBodyID, masterkelainan.JsHideModalDetail(""))
|
||||
return utils.View(c, newForm)
|
||||
}
|
||||
|
||||
@@ -229,4 +229,6 @@ func SetupRoutesDev(app *echo.Echo, appStore db.AppStore) {
|
||||
dev.GET("/kelainan/selected", devKLhandlers.HandlerShowMasterKelainanDetail)
|
||||
dev.GET("/searchkelainandetail", devKLhandlers.HandlerShowMdKelainanDetailSearch)
|
||||
dev.GET("/kelainandetailpagination", devKLhandlers.HandlerShowMdKelainanDetailPagination)
|
||||
dev.POST("/kelainandetail/closeaddform", devKLhandlers.HandlerCloseFormAddDetail)
|
||||
dev.POST("/kelainandetail/add", devKLhandlers.HandlerAddKelainanDetail)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user