diff --git a/pkg/models/users.go b/pkg/models/users.go index 97523b9..079fa9a 100755 --- a/pkg/models/users.go +++ b/pkg/models/users.go @@ -45,9 +45,12 @@ func AllUsersGas(limit, offset int, search string) ([]Users, int64, error) { var total int64 db := app.Http.Database.DB.Model(&Users{}) - // Filtrar por término de búsqueda si se proporciona + // ILIKE y no LIKE: en Postgres LIKE distingue mayúsculas, así que buscar + // "lizandro" no encontraba a "Lizandro". Se agrega el email porque es lo + // que la mayoría escribe cuando busca a una persona. if search != "" { - db = db.Where("name LIKE ? OR nombre_usuario LIKE ?", "%"+search+"%", "%"+search+"%") + patron := "%" + search + "%" + db = db.Where("name ILIKE ? OR nombre_usuario ILIKE ? OR email ILIKE ?", patron, patron, patron) } // Filtrar por tipo_usuario = 'gas' db = db.Where("tipo_usuario = ?", "gas") @@ -72,13 +75,24 @@ func AllUsersSistema(limit, offset int, search string) ([]Users, int64, error) { var total int64 db := app.Http.Database.DB.Model(&Users{}) - // Filtrar por término de búsqueda si se proporciona + // ILIKE y no LIKE: en Postgres LIKE distingue mayúsculas, así que buscar + // "lizandro" no encontraba a "Lizandro". Se agrega el email porque es lo + // que la mayoría escribe cuando busca a una persona. if search != "" { - db = db.Where("name LIKE ? OR nombre_usuario LIKE ?", "%"+search+"%", "%"+search+"%") + patron := "%" + search + "%" + db = db.Where("name ILIKE ? OR nombre_usuario ILIKE ? OR email ILIKE ?", patron, patron, patron) } - // Filtrar por tipo_usuario = 'sistema' o vacío (excluye usuarios 'gas' y otros tipos) - db = db.Where("tipo_usuario = ? OR tipo_usuario = '' OR tipo_usuario IS NULL", "sistema") + // Se excluye 'gas' en vez de exigir 'sistema'. + // + // Antes era una lista blanca ('sistema', '' o NULL) y la pantalla de 'gas' + // es la complementaria, así que un usuario con cualquier otro valor —o con + // uno viejo de antes de que existiera el campo— no aparecía en NINGUNA de + // las dos listas: quedaba invisible en todo el panel aunque pudiera entrar + // y fuera administrador. + // + // Invertirlo garantiza que todo usuario esté en exactamente una de las dos. + db = db.Where("COALESCE(tipo_usuario, '') <> ?", "gas") // Obtener el total de usuarios if err := db.Count(&total).Error; err != nil {