search inputan + dropdown serta pagination

This commit is contained in:
sindhu
2024-05-18 21:23:07 +07:00
parent c4f5fa4545
commit 4db28f1a24
10 changed files with 139 additions and 348 deletions

View File

@@ -589,7 +589,7 @@ func (su *ServicesMasterMenuUser) GetListBreadCrumb(title string) (models.BreadC
}
// try
func (su *ServicesMasterMenuUser) GetListMasterUser() ([]models.MasterUser, error) {
func (su *ServicesMasterMenuUser) GetListMasterUser(searchDropdown string) ([]models.MasterUser, error) {
var userList []models.MasterUser
query := `
@@ -618,9 +618,14 @@ func (su *ServicesMasterMenuUser) GetListMasterUser() ([]models.MasterUser, erro
ON M_UserM_UserGroupID = M_UserGroupID
AND M_UserIsActive = 'Y'
AND M_UserGroupIsActive = 'Y'
ORDER BY M_UserGroupID ASC
`
if searchDropdown != "0" && searchDropdown != "" {
query += fmt.Sprintf("AND M_UserGroupID = '%s'", searchDropdown)
}
query += " ORDER BY M_UserID ASC"
if err := dbx.Handlex.Select(&userList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
@@ -628,7 +633,7 @@ func (su *ServicesMasterMenuUser) GetListMasterUser() ([]models.MasterUser, erro
return userList, nil
}
func (su *ServicesMasterMenuUser) GetListMasterUserFilteredBySearch(search string) ([]models.MasterUser, error) {
func (su *ServicesMasterMenuUser) GetListMasterUserFilteredBySearch(search string, searchDropdown string) ([]models.MasterUser, error) {
var userList []models.MasterUser
query := `
@@ -661,13 +666,13 @@ func (su *ServicesMasterMenuUser) GetListMasterUserFilteredBySearch(search strin
`
// check jika parameter search nya tidak kosong
if search != "" {
query += fmt.Sprintf(" AND (M_UserFullName LIKE '%%%s%%' OR M_UserEmail LIKE '%%%s%%')", search, search)
if search != "" || (searchDropdown != "0" && searchDropdown != "") {
query += fmt.Sprintf(" AND (M_UserFullName LIKE '%%%s%%' OR M_UserEmail LIKE '%%%s%%') AND M_UserGroupID = '%s'", search, search, searchDropdown)
} else {
search = "%%"
}
query += fmt.Sprintf(" ORDER BY M_UserGroupID ASC")
query += " ORDER BY M_UserID ASC"
logger, _ := zap.NewProduction()
defer logger.Sync()
@@ -682,66 +687,7 @@ func (su *ServicesMasterMenuUser) GetListMasterUserFilteredBySearch(search strin
return userList, nil
}
func (su *ServicesMasterMenuUser) GetListMasterUserBySearch(search string) ([]models.MasterUser, error) {
var userList []models.MasterUser
query := `
SELECT
ROW_NUMBER() OVER () AS nomor,
M_UserID,
IFNULL(M_UserEmail, '') AS M_UserEmail,
IFNULL(M_UserFullName, '') AS M_UserFullName,
IFNULL(M_UserLastAccess, '') AS M_UserLastAccess,
IFNULL(M_UserIsLoggedIn, '') AS M_UserIsLoggedIn,
IFNULL(M_UserActiveToken, '') AS M_UserActiveToken,
IFNULL(M_UserExpiredToken, '') AS M_UserExpiredToken,
IFNULL(M_UserIsActive, '') AS M_UserIsActive,
IFNULL(M_UserCreated, '') AS M_UserCreated,
IFNULL(M_UserCreatedUserID, '') AS M_UserCreatedUserID,
IFNULL(M_UserLastUpdated, '') AS M_UserLastUpdated,
IFNULL(M_UserLastUpdatedUserID, '') AS M_UserLastUpdatedUserID,
IFNULL(M_UserDeletedUserID, '') AS M_UserDeletedUserID,
IFNULL(M_UserDeleted, '') AS M_UserDeleted,
IFNULL(M_UserGroupCode, '') AS M_UserGroupCode,
IFNULL(M_UserGroupName, '') AS M_UserGroupName,
IFNULL(M_UserM_UserGroupID, '') AS M_UserM_UserGroupID,
IFNULL(M_UserGroupID, '') AS M_UserGroupID
FROM
m_user
JOIN m_usergroup
ON M_UserM_UserGroupID = M_UserGroupID
AND M_UserIsActive = 'Y'
AND M_UserGroupIsActive = 'Y'
`
// fmt.Errorf(search)
rowPerPage := 2
offset := 0
// check jika parameter search nya tidak kosong
if search != "" {
query += fmt.Sprintf(" AND (M_UserFullName LIKE '%%%s%%' OR M_UserEmail 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(&userList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)
}
return userList, nil
}
func (su *ServicesMasterMenuUser) GetListMasterUserPagination(search string, currentPage int, rowPerPage int) ([]models.MasterUser, error) {
func (su *ServicesMasterMenuUser) GetListMasterUserPagination(search string, searchDropdown string, currentPage int, rowPerPage int) ([]models.MasterUser, error) {
var userList []models.MasterUser
query := `
@@ -779,13 +725,13 @@ func (su *ServicesMasterMenuUser) GetListMasterUserPagination(search string, cur
offset := (currentPage - 1) * rowPerPage
// offset := currentPage
if search != "" {
query += fmt.Sprintf(" AND (M_UserEmail LIKE '%%%s%%' OR M_UserFullName LIKE '%%%s%%')", search, search)
if search != "" || (searchDropdown != "0" && searchDropdown != "") {
query += fmt.Sprintf(" AND (M_UserEmail LIKE '%%%s%%' OR M_UserFullName LIKE '%%%s%%') AND M_UserGroupID = '%s'", search, search, searchDropdown)
} else {
search = "%%"
}
query += fmt.Sprintf(" ORDER BY M_UserGroupID ASC LIMIT %d OFFSET %d", rowPerPage, offset)
query += fmt.Sprintf(" ORDER BY M_UserID ASC LIMIT %d OFFSET %d", rowPerPage, offset)
logger, _ := zap.NewProduction()
defer logger.Sync()
@@ -814,8 +760,8 @@ func (su *ServicesMasterMenuUser) GetListMasterUserGroupSearch() ([]models.UserG
M_UserGroupIsActive
FROM m_usergroup
WHERE M_UserGroupIsActive = 'Y'
order by M_UserGroupID ASC
`
query += " order by M_UserGroupID ASC"
if err := dbx.Handlex.Select(&userGroupList, query); err != nil {
return nil, fmt.Errorf("error querying database: %v", err)