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, ) {
@customtextfield.CustomTextFieldv2(models.CustomTextFieldv2Prm{ID: "tableID", @@ -43,6 +48,10 @@ templ ContentMasterKelainan(
+ @filterKelainan + // table content + @tablecontent + @paginationKelainan
@@ -52,6 +61,50 @@ templ ContentMasterKelainan(
} +templ TableRowV1(data []models.Kelainan) { + if len(data) == 0 { + + Data Tidak Ditemukan + + } + for _, v := range data { + + { v.Nomor } + { v.Mcu_KelainanGroupName } + +
+ + Edit + + Hapus + // @modalcomponent.Modal("dialogEdit"+strconv.Itoa(v.Mcu_KelainanGroupID), + // "Edit - User Group", + // DialogEditBody(v.M_UserGroupCode, v.M_UserGroupName), + // DialogEditAction(), + // BtnCloseNew()) + // @modalcomponent.ModalConfirmation( + // "dialogDelete"+strconv.Itoa(v.Mcu_KelainanGroupID), + // "Konfirmasi", + // "Apakah anda yakin menghapus user group berikut ?", BtnCloseDelete(), + // []string{"Kode", "User Group"}, []string{v.M_UserGroupCode, v.M_UserGroupName}, DialogDeleteAction()) +
+ + + } +} + templ JSku() { ") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -118,9 +223,9 @@ func CssKelainan() templ.Component { defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var3 := templ.GetChildren(ctx) - if templ_7745c5c3_Var3 == nil { - templ_7745c5c3_Var3 = templ.NopComponent + templ_7745c5c3_Var8 := templ.GetChildren(ctx) + if templ_7745c5c3_Var8 == nil { + templ_7745c5c3_Var8 = templ.NopComponent } ctx = templ.ClearChildren(ctx) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") @@ -149,12 +254,12 @@ func ShowKelainan( defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } ctx = templ.InitializeContext(ctx) - templ_7745c5c3_Var4 := templ.GetChildren(ctx) - if templ_7745c5c3_Var4 == nil { - templ_7745c5c3_Var4 = templ.NopComponent + templ_7745c5c3_Var9 := templ.GetChildren(ctx) + if templ_7745c5c3_Var9 == nil { + templ_7745c5c3_Var9 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Var5 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Var10 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) if !templ_7745c5c3_IsBuffer { templ_7745c5c3_Buffer = templ.GetBuffer() @@ -169,7 +274,67 @@ func ShowKelainan( } return templ_7745c5c3_Err }) - templ_7745c5c3_Err = layout.CorporateLayout(title, css, js, navbarmenu, navbaruser, userprofile).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer) + templ_7745c5c3_Err = layout.CorporateLayout(title, css, js, navbarmenu, navbaruser, userprofile).Render(templ.WithChildren(ctx, templ_7745c5c3_Var10), templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} + +func TableKelainan(data []models.Kelainan, tableID string) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var11 := templ.GetChildren(ctx) + if templ_7745c5c3_Var11 == nil { + templ_7745c5c3_Var11 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = tablecomponent.TableV3([]string{"NO", "GRUP KELAINAN", "AKSI"}, + []string{"15%", "65%", "20%"}, + TableRowV1(data)).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err }