From dade2017523c6703b2fe52221a2c87e90ee6d74a Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Mon, 9 Dec 2024 17:44:22 +0400 Subject: [PATCH] api endpoints for space user controller base root has been mapped from project --- libs/common/src/constants/controller-route.ts | 2 +- .../controllers/space-user.controller.ts | 10 +---- src/space/services/space-user.service.ts | 41 ++++++++----------- 3 files changed, 20 insertions(+), 33 deletions(-) diff --git a/libs/common/src/constants/controller-route.ts b/libs/common/src/constants/controller-route.ts index 51c9b4e..caf7639 100644 --- a/libs/common/src/constants/controller-route.ts +++ b/libs/common/src/constants/controller-route.ts @@ -193,7 +193,7 @@ export class ControllerRoute { static SPACE_USER = class { public static readonly ROUTE = - '/communities/:communityUuid/spaces/:spaceUuid/user'; + '/projects/:projectUuid/communities/:communityUuid/spaces/:spaceUuid/user'; static ACTIONS = class { public static readonly ASSOCIATE_SPACE_USER_SUMMARY = 'Associate a user to a space'; diff --git a/src/space/controllers/space-user.controller.ts b/src/space/controllers/space-user.controller.ts index 89fa3a0..9efdac8 100644 --- a/src/space/controllers/space-user.controller.ts +++ b/src/space/controllers/space-user.controller.ts @@ -26,10 +26,7 @@ export class SpaceUserController { async associateUserToSpace( @Param() params: UserSpaceParam, ): Promise { - return this.spaceUserService.associateUserToSpace( - params.userUuid, - params.spaceUuid, - ); + return this.spaceUserService.associateUserToSpace(params); } @ApiBearerAuth() @@ -43,9 +40,6 @@ export class SpaceUserController { async disassociateUserFromSpace( @Param() params: UserSpaceParam, ): Promise { - return this.spaceUserService.disassociateUserFromSpace( - params.userUuid, - params.spaceUuid, - ); + return this.spaceUserService.disassociateUserFromSpace(params); } } diff --git a/src/space/services/space-user.service.ts b/src/space/services/space-user.service.ts index d4f2e9d..0e10e1a 100644 --- a/src/space/services/space-user.service.ts +++ b/src/space/services/space-user.service.ts @@ -6,6 +6,8 @@ import { UserSpaceRepository, } from '@app/common/modules/user/repositories'; import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { SpaceService } from './space.service'; +import { UserSpaceParam } from '../dtos'; @Injectable() export class SpaceUserService { @@ -13,11 +15,10 @@ export class SpaceUserService { private readonly spaceRepository: SpaceRepository, private readonly userRepository: UserRepository, private readonly userSpaceRepository: UserSpaceRepository, + private readonly spaceService: SpaceService, ) {} - async associateUserToSpace( - userUuid: string, - spaceUuid: string, - ): Promise { + async associateUserToSpace(params: UserSpaceParam): Promise { + const { communityUuid, spaceUuid, userUuid, projectUuid } = params; // Find the user by ID const user = await this.userRepository.findOne({ where: { uuid: userUuid }, @@ -30,15 +31,11 @@ export class SpaceUserService { } // Find the space by ID - const space = await this.spaceRepository.findOne({ - where: { uuid: spaceUuid }, - }); - if (!space) { - throw new HttpException( - `Space with ID ${spaceUuid} not found`, - HttpStatus.NOT_FOUND, - ); - } + const space = await this.spaceService.validateCommunityAndSpace( + communityUuid, + spaceUuid, + projectUuid, + ); // Check if the association already exists const existingAssociation = await this.userSpaceRepository.findOne({ @@ -61,9 +58,9 @@ export class SpaceUserService { } async disassociateUserFromSpace( - userUuid: string, - spaceUuid: string, + params: UserSpaceParam, ): Promise { + const { userUuid, spaceUuid, communityUuid, projectUuid } = params; // Find the user by ID const user = await this.userRepository.findOne({ where: { uuid: userUuid }, @@ -76,15 +73,11 @@ export class SpaceUserService { } // Find the space by ID - const space = await this.spaceRepository.findOne({ - where: { uuid: spaceUuid }, - }); - if (!space) { - throw new HttpException( - `Space with ID ${spaceUuid} not found`, - HttpStatus.NOT_FOUND, - ); - } + await this.spaceService.validateCommunityAndSpace( + communityUuid, + spaceUuid, + projectUuid, + ); // Find the existing association const existingAssociation = await this.userSpaceRepository.findOne({