From e16f83e0702abd40b9606eafa73b3c57d5882123 Mon Sep 17 00:00:00 2001
From: kaw67872 <kawtar.laariche@iais.fraunhofer.de>
Date: Mon, 13 May 2024 09:41:40 +0200
Subject: [PATCH] #19: add get, add and delete with team functions

---
 src/app/core/config/api-config.ts             |  2 +
 .../core/services/private-catalogs.service.ts | 42 +++++++++++++++++++
 .../shared/models/public-solution.model.ts    |  1 +
 src/app/shared/models/user-details.ts         |  1 +
 4 files changed, 46 insertions(+)

diff --git a/src/app/core/config/api-config.ts b/src/app/core/config/api-config.ts
index 011b916..b2da3f1 100644
--- a/src/app/core/config/api-config.ts
+++ b/src/app/core/config/api-config.ts
@@ -53,4 +53,6 @@ export const apiConfig = {
   urlCreateRating: '/api/solution/createRating',
   urlThread: '/api/thread',
   urlComment: '/api/comments',
+  urlGetActiveUsers: '/api/users/activeUserDetails',
+  urlShareWithTeam: '/api/solution/userAccess',
 };
diff --git a/src/app/core/services/private-catalogs.service.ts b/src/app/core/services/private-catalogs.service.ts
index 8e7fa21..2b38f8f 100644
--- a/src/app/core/services/private-catalogs.service.ts
+++ b/src/app/core/services/private-catalogs.service.ts
@@ -7,6 +7,7 @@ import {
   CommentModel,
   PublicSolution,
   ThreadModel,
+  UserDetails,
 } from 'src/app/shared/models';
 import { CreateRatingRequestPayload } from 'src/app/shared/models/request-payloads';
 
@@ -335,4 +336,45 @@ export class PrivateCatalogsService {
       }),
     );
   }
+
+  getAllActiveUsers(activeStatus: boolean): Observable<UserDetails[]> {
+    const url = `${apiConfig.apiBackendURL}${apiConfig.urlGetActiveUsers}/${activeStatus}`;
+    return this._httpSharedService.get(url, undefined).pipe(
+      map((res) => res.response_body),
+      catchError((error) => {
+        throw error;
+      }),
+    );
+  }
+
+  getShareWithTeam(solutionId: string): Observable<UserDetails[]> {
+    const url = `${apiConfig.apiBackendURL}${apiConfig.urlShareWithTeam}/${solutionId}`;
+    return this._httpSharedService.get(url, undefined).pipe(
+      map((res) => res.response_body.userList),
+      catchError((error) => {
+        throw error;
+      }),
+    );
+  }
+
+  insertMultipleShare(userIds: string[], solutionId: string) {
+    const reqObj = {
+      request_body: userIds,
+    };
+    const url = `${apiConfig.apiBackendURL}${apiConfig.urlShareWithTeam}/${solutionId}/add`;
+    return this._httpSharedService.post(url, undefined, reqObj).pipe(
+      catchError((error) => {
+        throw error;
+      }),
+    );
+  }
+
+  deleteShareWithTeam(userId: string, solutionId: string) {
+    const url = `${apiConfig.apiBackendURL}${apiConfig.urlShareWithTeam}/${solutionId}/delete/${userId}`;
+    return this._httpSharedService.delete(url, undefined).pipe(
+      catchError((error) => {
+        throw error;
+      }),
+    );
+  }
 }
diff --git a/src/app/shared/models/public-solution.model.ts b/src/app/shared/models/public-solution.model.ts
index 0902f23..c8c74f5 100644
--- a/src/app/shared/models/public-solution.model.ts
+++ b/src/app/shared/models/public-solution.model.ts
@@ -69,6 +69,7 @@ export interface Catalog {
 export interface Revision {
   revisionId: string;
   version: string;
+  onBoarded?: string;
 }
 
 export interface AllUserRating {
diff --git a/src/app/shared/models/user-details.ts b/src/app/shared/models/user-details.ts
index a9b685a..94202b6 100644
--- a/src/app/shared/models/user-details.ts
+++ b/src/app/shared/models/user-details.ts
@@ -9,4 +9,5 @@ export interface UserDetails {
   lastLogin?: string;
   created?: string;
   modified?: string;
+  picture?: string;
 }
-- 
GitLab