step 2 : search with pagination
This commit is contained in:
@@ -804,27 +804,71 @@ func (su *ServicesMasterMenuUser) GetListMasterUserGroupSearch() ([]models.UserG
|
||||
}
|
||||
|
||||
// versi 2
|
||||
func (su *ServicesMasterMenuUser) GetListMasterUserV2(search string, currentPage int, rowPerPage int) ([]models.MasterUser, int, error) {
|
||||
func (su *ServicesMasterMenuUser) GetUserGroupData() ([]models.UserGroupV1, error) {
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
var userList []models.UserGroupV1
|
||||
|
||||
queryList := `
|
||||
SELECT *
|
||||
FROM m_usergroup
|
||||
WHERE M_UserGroupIsActive = 'Y'
|
||||
order by M_UserGroupID ASC
|
||||
LIMIT 0, 1
|
||||
`
|
||||
|
||||
logger.Info("QUERY SEARCH INITIAL DATA USERGROUP",
|
||||
zap.String("query search", queryList),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&userList, queryList); err != nil {
|
||||
return nil, fmt.Errorf("error querying database initial USERGROUP: %v", err)
|
||||
}
|
||||
|
||||
return userList, nil
|
||||
}
|
||||
|
||||
func (su *ServicesMasterMenuUser) GetListMasterUserV2(search string, usergroup string, currentPage int, rowPerPage int) ([]models.MasterUser, int, error) {
|
||||
|
||||
logger, _ := zap.NewProduction()
|
||||
defer logger.Sync()
|
||||
|
||||
var userList []models.MasterUser
|
||||
var totalData int
|
||||
offset := (currentPage - 1) * rowPerPage
|
||||
var searchUserGroup string = ""
|
||||
if usergroup != "0" {
|
||||
searchUserGroup = usergroup
|
||||
}
|
||||
|
||||
prm := "%" + strings.TrimSpace(search) + "%"
|
||||
querytotal := `
|
||||
|
||||
// search dropdown dan inputan search
|
||||
if usergroup != "0" {
|
||||
querytotal := `
|
||||
SELECT COUNT(*)
|
||||
FROM m_user
|
||||
JOIN m_usergroup
|
||||
ON M_UserM_UserGroupID = M_UserGroupID
|
||||
AND M_UserIsActive = 'Y'
|
||||
AND M_UserGroupIsActive = 'Y'
|
||||
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
|
||||
AND (M_UserFullName LIKE ? OR M_UserEmail LIKE ?)
|
||||
AND M_UserGroupID = ?
|
||||
JOIN r_reportgroup
|
||||
ON M_UserR_ReportGroupID = R_ReportGroupID
|
||||
AND R_ReportGroupIsActive = 'Y'
|
||||
`
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
query := `
|
||||
|
||||
logger.Info("QUERY SEARCH INITIAL TOTAL COUNT",
|
||||
zap.String("query search", querytotal),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm, searchUserGroup); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
query := `
|
||||
SELECT
|
||||
ROW_NUMBER() OVER () AS nomor,
|
||||
M_UserID,
|
||||
@@ -851,7 +895,8 @@ func (su *ServicesMasterMenuUser) GetListMasterUserV2(search string, currentPage
|
||||
ON M_UserM_UserGroupID = M_UserGroupID
|
||||
AND M_UserIsActive = 'Y'
|
||||
AND M_UserGroupIsActive = 'Y'
|
||||
AND (M_UserGroupCode LIKE ? OR M_UserGroupName LIKE ?)
|
||||
AND (M_UserFullName LIKE ? OR M_UserEmail LIKE ?)
|
||||
AND M_UserGroupID = ?
|
||||
JOIN r_reportgroup
|
||||
ON M_UserR_ReportGroupID = R_ReportGroupID
|
||||
AND R_ReportGroupIsActive = 'Y'
|
||||
@@ -859,9 +904,79 @@ func (su *ServicesMasterMenuUser) GetListMasterUserV2(search string, currentPage
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
|
||||
if err := dbx.Handlex.Select(&userList, query, prm, prm, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
logger.Info("QUERY SEARCH INITIAL",
|
||||
zap.String("query search", query),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&userList, query, prm, prm, searchUserGroup, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
} else {
|
||||
// search hanya inputan search
|
||||
querytotal := `
|
||||
SELECT COUNT(*)
|
||||
FROM m_user
|
||||
JOIN m_usergroup
|
||||
ON M_UserM_UserGroupID = M_UserGroupID
|
||||
AND M_UserIsActive = 'Y'
|
||||
AND M_UserGroupIsActive = 'Y'
|
||||
AND (M_UserFullName LIKE ? OR M_UserEmail LIKE ?)
|
||||
JOIN r_reportgroup
|
||||
ON M_UserR_ReportGroupID = R_ReportGroupID
|
||||
AND R_ReportGroupIsActive = 'Y'
|
||||
`
|
||||
|
||||
logger.Info("QUERY SEARCH INITIAL TOTAL COUNT",
|
||||
zap.String("query search", querytotal),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Get(&totalData, querytotal, prm, prm); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
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,
|
||||
M_UserIsActive
|
||||
FROM m_user
|
||||
JOIN m_usergroup
|
||||
ON M_UserM_UserGroupID = M_UserGroupID
|
||||
AND M_UserIsActive = 'Y'
|
||||
AND M_UserGroupIsActive = 'Y'
|
||||
AND (M_UserFullName LIKE ? OR M_UserEmail LIKE ?)
|
||||
JOIN r_reportgroup
|
||||
ON M_UserR_ReportGroupID = R_ReportGroupID
|
||||
AND R_ReportGroupIsActive = 'Y'
|
||||
order by M_UserID ASC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
|
||||
logger.Info("QUERY SEARCH INITIAL",
|
||||
zap.String("query search", query),
|
||||
)
|
||||
|
||||
if err := dbx.Handlex.Select(&userList, query, prm, prm, rowPerPage, offset); err != nil {
|
||||
return nil, 0, fmt.Errorf("error querying database: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
totalPage := int(math.Ceil(float64(totalData) / float64(rowPerPage)))
|
||||
|
||||
return userList, totalPage, nil
|
||||
|
||||
Reference in New Issue
Block a user