diff --git a/apps/api-gateway/src/ecosystem/dtos/get-all-sent-invitations.dto.ts b/apps/api-gateway/src/ecosystem/dtos/get-all-sent-invitations.dto.ts new file mode 100644 index 000000000..23c7fecd6 --- /dev/null +++ b/apps/api-gateway/src/ecosystem/dtos/get-all-sent-invitations.dto.ts @@ -0,0 +1,25 @@ +import { Transform, Type } from 'class-transformer'; +import { toNumber } from '@credebl/common/cast.helper'; + +import { ApiProperty } from '@nestjs/swagger'; +import { IsOptional } from 'class-validator'; + +export class GetAllEcosystemInvitationsDto { + @ApiProperty({ required: false, default: 1 }) + @IsOptional() + @Type(() => Number) + @Transform(({ value }) => toNumber(value)) + pageNumber = 1; + + @ApiProperty({ required: false }) + @IsOptional() + @Type(() => String) + search = ''; + + @ApiProperty({ required: false }) + @IsOptional() + @Type(() => Number) + @Transform(({ value }) => toNumber(value)) + pageSize = 10; + +} diff --git a/apps/api-gateway/src/ecosystem/ecosystem.controller.ts b/apps/api-gateway/src/ecosystem/ecosystem.controller.ts index 1d35115f5..8b5063ad1 100644 --- a/apps/api-gateway/src/ecosystem/ecosystem.controller.ts +++ b/apps/api-gateway/src/ecosystem/ecosystem.controller.ts @@ -158,6 +158,43 @@ export class EcosystemController { } + @Get('/:ecosystemId/invitations') + @ApiOperation({ summary: 'Get all sent invitations', description: 'Get all sent invitations' }) + @ApiResponse({ status: 200, description: 'Success', type: ApiResponseDto }) + @UseGuards(AuthGuard('jwt')) + @ApiBearerAuth() + @ApiQuery({ + name: 'pageNumber', + type: Number, + required: false + }) + @ApiQuery({ + name: 'pageSize', + type: Number, + required: false + }) + @ApiQuery({ + name: 'search', + type: String, + required: false + }) + async getInvitationsByEcosystemId( + @Param('ecosystemId') ecosystemId: string, + @Query() getAllInvitationsDto: GetAllEcosystemInvitationsDto, + @User() user: user, + @Res() res: Response): Promise { + + const getInvitationById = await this.ecosystemService.getInvitationsByEcosystemId(ecosystemId, getAllInvitationsDto, String(user.id)); + + const finalResponse: IResponseType = { + statusCode: HttpStatus.OK, + message: ResponseMessages.organisation.success.getInvitation, + data: getInvitationById.response + }; + return res.status(HttpStatus.OK).json(finalResponse); + + } + /** * @@ -201,4 +238,5 @@ export class EcosystemController { }; return res.status(HttpStatus.CREATED).json(finalResponse); } + } \ No newline at end of file diff --git a/apps/api-gateway/src/ecosystem/ecosystem.service.ts b/apps/api-gateway/src/ecosystem/ecosystem.service.ts index c40e00c7d..ff6a02426 100644 --- a/apps/api-gateway/src/ecosystem/ecosystem.service.ts +++ b/apps/api-gateway/src/ecosystem/ecosystem.service.ts @@ -51,6 +51,16 @@ export class EcosystemService extends BaseService { const payload = { bulkInvitationDto, userId }; return this.sendNats(this.serviceProxy, 'send-ecosystem-invitation', payload); } + + async getInvitationsByEcosystemId( + ecosystemId: string, + getAllInvitationsDto: GetAllEcosystemInvitationsDto, + userId: string + ): Promise<{ response: object }> { + const { pageNumber, pageSize, search } = getAllInvitationsDto; + const payload = { ecosystemId, pageNumber, pageSize, search, userId }; + return this.sendNats(this.serviceProxy, 'get-sent-invitations-ecosystemId', payload); + } } diff --git a/apps/ecosystem/interfaces/invitations.interface.ts b/apps/ecosystem/interfaces/invitations.interface.ts new file mode 100644 index 000000000..932e490ea --- /dev/null +++ b/apps/ecosystem/interfaces/invitations.interface.ts @@ -0,0 +1,9 @@ + + +export interface FetchInvitationsPayload { + ecosystemId: string; + userId: string, + pageNumber: number; + pageSize: number; + search: string +} \ No newline at end of file diff --git a/apps/ecosystem/src/ecosystem.service.ts b/apps/ecosystem/src/ecosystem.service.ts index aabb22798..4c793352b 100644 --- a/apps/ecosystem/src/ecosystem.service.ts +++ b/apps/ecosystem/src/ecosystem.service.ts @@ -220,5 +220,4 @@ export class EcosystemService { return isEmailSent; } - }