add listing, pagination, filter
This commit is contained in:
84
services/dev/md.nonlabtemplate.services.go
Normal file
84
services/dev/md.nonlabtemplate.services.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user