add listing, pagination, filter

This commit is contained in:
2024-06-04 13:43:49 +07:00
parent a4319bee07
commit 70d0ce5383
9 changed files with 1479 additions and 12 deletions

View File

@@ -0,0 +1,84 @@
package dev_services
import (
"cpone/db"
"cpone/models"
dbx "cpone/package/database"
"fmt"
"math"
"strings"
)
type MDNonlabTemplateServices struct {
MDNonlabTemplateStore db.AppStore
}
func NewMDNonlabTemplateServices(uStore db.AppStore) *MDNonlabTemplateServices {
return &MDNonlabTemplateServices{
MDNonlabTemplateStore: uStore,
}
}
func (nlt *MDNonlabTemplateServices) GetMDNonLabTemplateBreadcrumb() (models.BreadCrumbV1, error) {
var ret models.BreadCrumbV1
breadcrumb := models.BreadCrumbV1{
Title: "Master Non-lab Template",
Item: []models.ItemBreadCrumbV1{
{
Item: "Dashboard",
Url: "/dev/dashboard",
},
{
Item: "Master",
Url: "/dev/master",
},
{
Item: "Non-lab Template",
Url: "",
},
},
}
ret = breadcrumb
return ret, nil
}
func (nlt *MDNonlabTemplateServices) GetListNonlabTemplate(search string, currPage int, rowPerPage int) ([]models.MDNonlabTemplate, int, error) {
var ret []models.MDNonlabTemplate
var totalData int
offset := (currPage - 1) * rowPerPage
prm := "%" + strings.TrimSpace(search) + "%"
query := `
SELECT COUNT(*)
FROM nonlab_template
WHERE NonlabTemplateIsActive = 'Y'
AND (NonlabTemplateName LIKE ?)
`
if err := dbx.Handlex.Get(&totalData, query, prm); err != nil {
return nil, 0, fmt.Errorf("error querying databases: %v", err)
}
query = `
SELECT
NonlabTemplateID,
NonlabTemplateName,
NonlabTemplateFlagFisik,
NonlabTemplateIsActive,
NonlabTemplateCreated,
NonlabTemplateLastUpdated
FROM nonlab_template
WHERE NonlabTemplateIsActive = 'Y'
AND (NonlabTemplateName LIKE ?)
ORDER BY NonlabTemplateID ASC
LIMIT ? OFFSET ?
`
if err := dbx.Handlex.Select(&ret, query, prm, rowPerPage, offset); err != nil {
return nil, 0, fmt.Errorf("error querying database: %v", err)
}
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
return ret, totalPage, nil
}