From 7577a452f0b5f042c5dbd0c31e9a79ebe5867ea9 Mon Sep 17 00:00:00 2001
From: Shaunak Das <51281688+shaun-ak@users.noreply.github.com>
Date: Sun, 23 Feb 2025 13:20:59 +0530
Subject: [PATCH] Feature/add activities count to GET user endpoint (#4351)

* Add activities count to GET user endpoint

* Update changelog
---
 CHANGELOG.md                                     | 1 +
 apps/api/src/app/user/user.service.ts            | 9 +++++++--
 libs/common/src/lib/interfaces/user.interface.ts | 1 +
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index eac524907..7fd3aaf6b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Added
 
 - Extended the export functionality by the tags
+- Extended the user endpoint `GET api/v1/user` by the activities count
 
 ### Changed
 
diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts
index dcf9d9404..40bc1b2b5 100644
--- a/apps/api/src/app/user/user.service.ts
+++ b/apps/api/src/app/user/user.service.ts
@@ -86,6 +86,9 @@ export class UserService {
         orderBy: { alias: 'asc' },
         where: { GranteeUser: { id } }
       }),
+      this.prismaService.order.count({
+        where: { userId: id }
+      }),
       this.prismaService.order.findFirst({
         orderBy: {
           date: 'asc'
@@ -96,8 +99,9 @@ export class UserService {
     ]);
 
     const access = userData[0];
-    const firstActivity = userData[1];
-    let tags = userData[2];
+    const activitiesCount = userData[1];
+    const firstActivity = userData[2];
+    let tags = userData[3];
 
     let systemMessage: SystemMessage;
 
@@ -117,6 +121,7 @@ export class UserService {
     }
 
     return {
+      activitiesCount,
       id,
       permissions,
       subscription,
diff --git a/libs/common/src/lib/interfaces/user.interface.ts b/libs/common/src/lib/interfaces/user.interface.ts
index 667e59fd8..84f48d1dc 100644
--- a/libs/common/src/lib/interfaces/user.interface.ts
+++ b/libs/common/src/lib/interfaces/user.interface.ts
@@ -10,6 +10,7 @@ import { UserSettings } from './user-settings.interface';
 export interface User {
   access: Pick<Access, 'alias' | 'id' | 'permissions'>[];
   accounts: Account[];
+  activitiesCount: number;
   dateOfFirstActivity: Date;
   id: string;
   permissions: string[];