From b6edcf03e8001a5cde4a4c6c5794ad40fdecc9b7 Mon Sep 17 00:00:00 2001 From: Craig Williams Date: Mon, 7 Feb 2022 15:21:50 +0000 Subject: [PATCH] Update the member count column to exclude admins rather than include --- locale/en_US/messages.php | 2 +- src/Database/Models/Organisation.php | 37 +++++------------------- templates/tables/organisations.html.twig | 2 +- 3 files changed, 10 insertions(+), 31 deletions(-) diff --git a/locale/en_US/messages.php b/locale/en_US/messages.php index 85e65b2..9a2a0bb 100644 --- a/locale/en_US/messages.php +++ b/locale/en_US/messages.php @@ -32,7 +32,7 @@ return [ 'DELETE_YES' => 'Yes, delete organisation', 'DELETION_SUCCESSFUL' => 'Successfully deleted organisation {{name}}', - 'TOTAL_MEMBER_COUNT' => '# Members (inc admins)', + 'MEMBER_COUNT' => '# Members (excl admins)', 'ADMIN_COUNT' => '# Admins', 'NAME' => [ diff --git a/src/Database/Models/Organisation.php b/src/Database/Models/Organisation.php index 62faa80..12edde1 100644 --- a/src/Database/Models/Organisation.php +++ b/src/Database/Models/Organisation.php @@ -61,8 +61,7 @@ class Organisation extends Model */ protected $appends = [ 'member_count', - 'admin_count', - 'non_admin_count' + 'admin_count' ]; /** @@ -99,28 +98,23 @@ class Organisation extends Model /** * Get a count of members within this organisation (excludes admins). */ - public function getNonAdminCountAttribute() + public function getTotalMemberCountAttribute() { - return $this->members(true)->count(); + return $this->members()->count() + $this->administrators()->count(); } /** * Get a list of members within this organisation. */ - public function members($exclude_admins = false) + public function members() { /** @var \UserFrosting\Sprinkle\Core\Util\ClassMapper $classMapper */ $classMapper = static::$ci->classMapper; - $qry = $this + return $this ->belongsToMany($classMapper->getClassMapping('user'), 'organisation_members', 'organisation_id', 'user_id') + ->where('flag_admin', false) ->withTimestamps(); - - if ($exclude_admins) { - return $qry->where('flag_admin', false); - } else { - return $qry; - } } /** @@ -132,9 +126,7 @@ class Organisation extends Model $classMapper = static::$ci->classMapper; return $this - ->belongsToMany( - $classMapper->getClassMapping('user'), 'organisation_members', 'organisation_id', 'user_id' - ) + ->belongsToMany($classMapper->getClassMapping('user'), 'organisation_members', 'organisation_id', 'user_id') ->where('flag_admin', true) ->withTimestamps(); } @@ -150,6 +142,7 @@ class Organisation extends Model { $memberCountsInner = DB::table('organisation_members') ->selectRaw('organisation_id, COUNT(*) AS member_count') + ->where('flag_admin', false) ->groupBy('organisation_id'); $memberCounts = DB::table('organisations') ->leftJoinSub($memberCountsInner, 'member_counts_inner', function ($join) { @@ -169,26 +162,12 @@ class Organisation extends Model ->select('id AS organisation_id') ->selectRaw('COALESCE(admin_count, 0) AS admin_count'); - $nonAdminCountsInner = DB::table('organisation_members') - ->selectRaw('organisation_id, COUNT(*) AS non_admin_count') - ->where('flag_admin', false) - ->groupBy('organisation_id'); - $nonAdminCounts = DB::table('organisations') - ->leftJoinSub($nonAdminCountsInner, 'non_admin_counts_inner', function ($join) { - $join->on('non_admin_counts_inner.organisation_id', '=', 'organisations.id'); - }) - ->select('id AS organisation_id') - ->selectRaw('COALESCE(non_admin_count, 0) AS non_admin_count'); - return $query ->leftJoinSub($memberCounts, 'member_counts', function ($join) { $join->on('member_counts.organisation_id', '=', 'organisations.id'); }) ->leftJoinSub($adminCounts, 'admin_counts', function ($join) { $join->on('admin_counts.organisation_id', '=', 'organisations.id'); - }) - ->leftJoinSub($nonAdminCounts, 'non_admin_counts', function ($join) { - $join->on('non_admin_counts.organisation_id', '=', 'organisations.id'); }); } } diff --git a/templates/tables/organisations.html.twig b/templates/tables/organisations.html.twig index 122ecea..868b0c2 100644 --- a/templates/tables/organisations.html.twig +++ b/templates/tables/organisations.html.twig @@ -13,7 +13,7 @@ {{translate('ORGANISATION')}} {{translate("DESCRIPTION")}} - {{translate("ORGANISATION.TOTAL_MEMBER_COUNT")}} + {{translate("ORGANISATION.MEMBER_COUNT")}} {{translate("ORGANISATION.ADMIN_COUNT")}} {{translate("ACTIONS")}}