From ca7a50baccb0bfa87c4ddedc8ea3e4184c66bbc8 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Wed, 13 May 2020 10:59:16 +0200 Subject: [PATCH] [bug] admin's members list shows the same members multiple times --- CHANGELOG.md | 1 + app/services/members/list_service.rb | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e064b0d4c..5b1fabfd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Prevent admins from leaving their dedicated group - Fix a bug: when an admin logs on the subscription page, his view is broken +- Fix a bug: admin's members list shows the same members multiple times ## v4.4.1 2020 May 12 diff --git a/app/services/members/list_service.rb b/app/services/members/list_service.rb index 7b7c8d429..4f2f6c8ab 100644 --- a/app/services/members/list_service.rb +++ b/app/services/members/list_service.rb @@ -16,7 +16,7 @@ class Members::ListService SELECT MAX("created_at") AS "s2_created_at", "statistic_profile_id" AS "s2_statistic_profile_id" FROM "subscriptions" GROUP BY "statistic_profile_id" - ) As s2 + ) AS s2 ON "s1"."statistic_profile_id" = "s2"."s2_statistic_profile_id" WHERE "s1"."expiration_date" > now()::date ) AS "subscriptions" ON "subscriptions"."statistic_profile_id" = "statistic_profiles"."id" ' \ @@ -78,7 +78,7 @@ class Members::ListService direction = (params[:order_by][0] == '-' ? 'DESC' : 'ASC') order_key = (params[:order_by][0] == '-' ? params[:order_by][1, params[:order_by].size] : params[:order_by]) limit = params[:size] - offset = (params[:page]&.to_i || 1) - 1 + offset = ((params[:page]&.to_i || 1) - 1) * (params[:size]&.to_i || 1) order_key = case order_key when 'last_name' @@ -97,7 +97,7 @@ class Members::ListService 'users.id' end - "#{order_key} #{direction} LIMIT #{limit} OFFSET #{offset}" + "#{order_key} #{direction}, users.id ASC LIMIT #{limit} OFFSET #{offset}" end end end