diff --git a/handlers/dev/masterkelainan.handlers.go b/handlers/dev/masterkelainan.handlers.go index 374801d..4811c89 100644 --- a/handlers/dev/masterkelainan.handlers.go +++ b/handlers/dev/masterkelainan.handlers.go @@ -2,7 +2,9 @@ package dev_handlers import ( breadcrumadmin "cpone/component/breadcrumbadmin" + "cpone/component/customtextfieldsearch" navbarmenu "cpone/component/navbar" + "cpone/component/pagination" sidebaruserprofile "cpone/component/sidebar_user_profile" "cpone/models" globalservices "cpone/services" @@ -17,6 +19,7 @@ import ( type MasterKelainanService interface { GetListBreadCrumb(title string) (models.BreadCrumbV1, error) + GetListMasterKelainan(search string, currentPage int, rowPerPage int) ([]models.Kelainan, int, error) } func NewMasterKelainanHandler(us MasterKelainanService) *MasterKelainanHandler { @@ -57,6 +60,21 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error return err } + dataKelainan, totalpage, err := lh.MasterKelainanService.GetListMasterKelainan("", 1, 5) + if err != nil { + defer logger.Sync() + logger.Info("ERROR GET KELAINAN", + zap.Any("error", err), + ) + fmt.Println(dataKelainan) + return err + } + + defer logger.Sync() + logger.Info("LOAD KELAINAN", + zap.Any("data", dataKelainan), + ) + tableID := utils.GenerateRandomID("tablebody") paginationID := utils.GenerateRandomID("paginationid") searchID := utils.GenerateRandomID("searchid") @@ -89,11 +107,33 @@ func (lh *MasterKelainanHandler) HandlerShowMasterKelainan(c echo.Context) error // sidebar sidebaruserprofileComponent := sidebaruserprofile.Navbaruserprofile(dataUser) + contentKelainanComponent := masterkelainan.TableKelainan( + dataKelainan, tableID) + + kelainanFilterComponent := customtextfieldsearch.MainCustomTextFieldSearchV2(searchID, + "search", + "Cari Grup Kelainan", + "text", + "/dev/searchkelainan", + "input changed delay:500ms, search", + "#"+paginationID, "", "", "outerHTML", "#tableID, #paginationID") + + kelainanPaginationComponent := pagination.PaginationV2( + totalpage, + 1, + "/dev/kelainanpagination", + paginationID, + "#tableID, #searchID, #paginationID", "#"+paginationID, "outerHTML", "", + ) + si := masterkelainan.ShowKelainan( "Master Kelainan", masterkelainan.ContentMasterKelainan( tableID, paginationID, searchID, breadcrumadmin.MainBreadcrumbAdminV1(dataBreadCrumb), + contentKelainanComponent, + kelainanFilterComponent, + kelainanPaginationComponent, ), masterkelainan.CssKelainan(), diff --git a/models/kelainan.models.go b/models/kelainan.models.go new file mode 100644 index 0000000..67b354a --- /dev/null +++ b/models/kelainan.models.go @@ -0,0 +1,10 @@ +package models + +type Kelainan struct { + Nomor string `db:"nomor"` + Mcu_KelainanGroupID int `db:"Mcu_KelainanGroupID"` + Mcu_KelainanGroupName string `db:"Mcu_KelainanGroupName"` + Mcu_KelainanGroupIsActive string `db:"Mcu_KelainanGroupIsActive"` + Mcu_KelainanGroupCreated string `db:"Mcu_KelainanGroupCreated"` + Mcu_KelainanGroupLastUpdated string `db:"Mcu_KelainanGroupLastUpdated"` +} diff --git a/services/dev/masterkelainan.services.go b/services/dev/masterkelainan.services.go index 062e5e5..ae50d5d 100644 --- a/services/dev/masterkelainan.services.go +++ b/services/dev/masterkelainan.services.go @@ -3,6 +3,10 @@ package dev_services import ( "cpone/db" "cpone/models" + dbx "cpone/package/database" + "fmt" + "math" + "strings" ) func NewServicesMasterKelainan(uStore db.AppStore) *ServicesMasterKelainan { @@ -71,3 +75,42 @@ func (su *ServicesMasterKelainan) GetListBreadCrumb(title string) (models.BreadC return ret, nil } + +func (su *ServicesMasterKelainan) GetListMasterKelainan(search string, currentPage int, rowPerPage int) ([]models.Kelainan, int, error) { + var kelainanList []models.Kelainan + var totalData int + offset := (currentPage - 1) * rowPerPage + prm := "%" + strings.TrimSpace(search) + "%" + + querytotal := ` + SELECT COUNT(*) + FROM mcu_kelainangroup + WHERE Mcu_KelainanGroupIsActive = 'Y' + AND (Mcu_KelainanGroupName LIKE ?) + ` + if err := dbx.Handlex.Get(&totalData, querytotal, prm); err != nil { + return nil, 0, fmt.Errorf("error query database: %v", err) + } + + query := ` + SELECT + ROW_NUMBER() OVER () AS nomor, + Mcu_KelainanGroupID, + Mcu_KelainanGroupName, + Mcu_KelainanGroupIsActive, + Mcu_KelainanGroupCreated, + Mcu_KelainanGroupLastUpdated + FROM mcu_kelainangroup + WHERE Mcu_KelainanGroupIsActive = 'Y' + AND (Mcu_KelainanGroupName LIKE ?) + order by Mcu_KelainanGroupID ASC + LIMIT ? OFFSET ? + ` + + if err := dbx.Handlex.Select(&kelainanList, query, prm, rowPerPage, offset); err != nil { + return nil, 0, fmt.Errorf("error query database: %v", err) + } + totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage))) + + return kelainanList, totalPage, nil +} diff --git a/views/dev/masterkelainan/masterkelainan.templ b/views/dev/masterkelainan/masterkelainan.templ index 7f7d79c..484bc7a 100644 --- a/views/dev/masterkelainan/masterkelainan.templ +++ b/views/dev/masterkelainan/masterkelainan.templ @@ -4,6 +4,8 @@ import ( "cpone/layout" "cpone/models" "cpone/component/customtextfield" + "strconv" + "cpone/component/table" ) templ ContentMasterKelainan( @@ -11,6 +13,9 @@ templ ContentMasterKelainan( paginationID string, searchID string, breadcrumb templ.Component, + tablecontent templ.Component, + filterKelainan templ.Component, + paginationKelainan templ.Component, ) {