diff --git a/modules/user/controller/user_controller.go b/modules/user/controller/user_controller.go index b142669..2ec2e4c 100644 --- a/modules/user/controller/user_controller.go +++ b/modules/user/controller/user_controller.go @@ -114,6 +114,7 @@ func (c *userController) GetAllUser(ctx *gin.Context) { var filter = &query.UserFilter{ ClientID: ctx.Query("client_id"), Name: ctx.Query("name"), + GroupID: ctx.Query("group_id"), Includes: []string{"Roles"}, } filter.BindPagination(ctx) diff --git a/modules/user/query/user_query.go b/modules/user/query/user_query.go index 3ff61ac..9866e84 100644 --- a/modules/user/query/user_query.go +++ b/modules/user/query/user_query.go @@ -26,6 +26,7 @@ type UserFilter struct { pagination.BaseFilter Name string `form:"name"` // tambahkan ini ClientID string `form:"client_id"` // tambahkan ini + GroupID string `form:"group_id"` // tambahkan ini Includes []string `form:"includes"` // tambahkan ini } @@ -38,6 +39,12 @@ func (f *UserFilter) ApplyFilters(query *gorm.DB) *gorm.DB { query = query.Where("client_id = ?", f.ClientID) } + if f.GroupID != "" { + query = query.Joins("JOIN m_maintenance_group_role_users ON m_maintenance_group_role_users.user_id = m_users.id"). + Joins("JOIN m_maintenance_group_roles ON m_maintenance_group_roles.id = m_maintenance_group_role_users.maintenance_group_role_id"). + Where("m_maintenance_group_roles.maintenance_group_id = ?", f.GroupID) + } + // add preload clients query = query.Model(&M_User{}).Preload("Client", func(db *gorm.DB) *gorm.DB { return db.Select("id", "name")