md nonlab template listing data + filter + pagination

This commit is contained in:
2024-05-27 11:34:33 +07:00
parent 54a0d67ebb
commit 72f3ddbaf1
6 changed files with 425 additions and 17 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 (mdnlt *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 (mdnlt *MDNonLabTemplateServices) GetMDNonLabTemplateData(search string, currentPage int, rowPerPage int) ([]models.MDNonLabTemplate, int, error) {
var ret []models.MDNonLabTemplate
var totalData int
offset := (currentPage - 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
}