user grup listing, search, pagination

This commit is contained in:
sindhu
2024-05-15 13:18:23 +07:00
parent 64ac3a5b7b
commit d9ba1f3ce3
16 changed files with 1152 additions and 81 deletions

View File

@@ -664,30 +664,6 @@ func (su *ServicesMasterMenuUserGroup) GetListBreadCrumb(title string) (models.B
return ret, nil
}
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupBySearch(search *string) ([]models.UserGroupV1, error) {
var userGroupList []models.UserGroupV1
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
AND
order by M_UserGroupID ASC
`
if err := dbx.Handlex.Get(&userGroupList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
return userGroupList, nil
}
func (ug *ServicesMasterMenuUserGroup) GetUserGroupByIDV1(id string) (models.UserGroupV1, error) {
logger, _ := zap.NewProduction()
@@ -812,3 +788,128 @@ func (ug *ServicesMasterMenuUserGroup) DeleteUserGroup(id string) (models.UserGr
}
return data, nil
}
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupFilteredBySearch(search string) ([]models.UserGroupV1, error) {
var userGroupList []models.UserGroupV1
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
`
// check jika parameter search nya tidak kosong
if search != "" {
query += fmt.Sprintf(" AND (M_UserGroupName LIKE '%%%s%%' OR M_UserGroupCode LIKE '%%%s%%')", search, search)
} else {
search = "%%"
}
// query += " ORDER BY M_UserGroupID ASC"
query += fmt.Sprintf(" ORDER BY M_UserGroupID ASC")
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("QUERY SEARCH ONlY FOR COUNT TOTAL PAGES PAGINATION",
zap.String("query search", query),
)
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
return userGroupList, nil
}
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupBySearch(search string) ([]models.UserGroupV1, error) {
var userGroupList []models.UserGroupV1
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
`
// fmt.Errorf(search)
rowPerPage := 2
offset := 0
// check jika parameter search nya tidak kosong
if search != "" {
query += fmt.Sprintf(" AND (M_UserGroupName LIKE '%%%s%%' OR M_UserGroupCode LIKE '%%%s%%')", search, search)
} else {
search = "%%"
}
// query += " ORDER BY M_UserGroupID ASC"
query += fmt.Sprintf(" ORDER BY M_UserGroupID ASC LIMIT %d OFFSET %d", rowPerPage, offset)
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("QUERY SEARCH ONlY AND SETTING LIMIT",
zap.String("query search", query),
)
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
return userGroupList, nil
}
func (su *ServicesMasterMenuUserGroup) GetListMasterUserGroupPagination(search string, currentPage int, rowPerPage int) ([]models.UserGroupV1, error) {
var userGroupList []models.UserGroupV1
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserGroupID,
M_UserGroupCode,
M_UserGroupName,
M_UserGroupCreated,
M_UserGroupLastUpdated,
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
`
// rmaxPerPage := 2
// rpage := (currentPage - 1) * rmaxPerPage
offset := (currentPage - 1) * rowPerPage
// offset := currentPage
if search != "" {
query += fmt.Sprintf(" AND (M_UserGroupName LIKE '%%%s%%' OR M_UserGroupCode LIKE '%%%s%%')", search, search)
} else {
search = "%%"
}
query += fmt.Sprintf(" ORDER BY M_UserGroupID ASC LIMIT %d OFFSET %d", rowPerPage, offset)
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("QUERY SEARCH WITH PAGINATION",
zap.String("query search", query),
)
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
return userGroupList, nil
}