diff --git a/apps/api-gateway/src/ecosystem/ecosystem.controller.ts b/apps/api-gateway/src/ecosystem/ecosystem.controller.ts index 27dba8a27..e4b9c241e 100644 --- a/apps/api-gateway/src/ecosystem/ecosystem.controller.ts +++ b/apps/api-gateway/src/ecosystem/ecosystem.controller.ts @@ -88,7 +88,27 @@ export class EcosystemController { return res.status(HttpStatus.OK).json(finalResponse); } - @Get('/users/invitations') + @Get('/:ecosystemId/:orgId/dashboard') + @ApiOperation({ summary: 'Get ecosystem dashboard details', description: 'Get ecosystem dashboard details' }) + @ApiResponse({ status: 200, description: 'Success', type: ApiResponseDto }) + @UseGuards(AuthGuard('jwt'), OrgRolesGuard, EcosystemRolesGuard) + @Roles(OrgRoles.OWNER, OrgRoles.ADMIN) + @EcosystemsRoles(EcosystemRoles.ECOSYSTEM_OWNER, EcosystemRoles.ECOSYSTEM_LEAD, EcosystemRoles.ECOSYSTEM_MEMBER) + @ApiBearerAuth() + + async getEcosystemDashboardDetails(@Param('ecosystemId') ecosystemId: string, @Param('orgId') orgId: string, @Res() res: Response): Promise { + + const getEcosystemDetails = await this.ecosystemService.getEcosystemDashboardDetails(ecosystemId, orgId); + const finalResponse: IResponseType = { + statusCode: HttpStatus.OK, + message: ResponseMessages.ecosystem.success.getEcosystemDashboard, + data: getEcosystemDetails.response + }; + return res.status(HttpStatus.OK).json(finalResponse); + + } + + @Get('/:orgId/users/invitations') @ApiOperation({ summary: 'Get received ecosystem invitations', description: 'Get received ecosystem invitations' }) @ApiResponse({ status: 200, description: 'Success', type: ApiResponseDto }) @UseGuards(AuthGuard('jwt'), OrgRolesGuard) diff --git a/apps/ecosystem/src/ecosystem.repository.ts b/apps/ecosystem/src/ecosystem.repository.ts index 940f27a3e..593b33633 100644 --- a/apps/ecosystem/src/ecosystem.repository.ts +++ b/apps/ecosystem/src/ecosystem.repository.ts @@ -216,7 +216,7 @@ export class EcosystemRepository { * @returns Get ecosystem dashboard card count */ - async getEcosystemDashboardDetails(ecosystemId: string): Promise { + async getEcosystemDashboardDetails(ecosystemId: string): Promise<{membersCount: number; endorsementsCount: number}> { try { const membersCount = await this.getEcosystemMembersCount(ecosystemId); const endorsementsCount = await this.getEcosystemEndorsementsCount(ecosystemId); @@ -513,7 +513,7 @@ export class EcosystemRepository { async fetchEcosystemOrg( - payload: { ecosystemId: string, orgId: string } + payload: object ): Promise { return this.prisma.ecosystem_orgs.findFirst({ @@ -521,7 +521,9 @@ export class EcosystemRepository { ...payload }, select: { - ecosystemRole: true + ecosystem: true, + ecosystemRole: true, + orgName: true } }); diff --git a/apps/ecosystem/src/ecosystem.service.ts b/apps/ecosystem/src/ecosystem.service.ts index 92b525acb..a2bde60dc 100644 --- a/apps/ecosystem/src/ecosystem.service.ts +++ b/apps/ecosystem/src/ecosystem.service.ts @@ -87,7 +87,30 @@ export class EcosystemService { */ async getEcosystemDashboardDetails(ecosystemId: string): Promise { try { - return await this.ecosystemRepository.getEcosystemDashboardDetails(ecosystemId); + const endorseMemberCount = await this.ecosystemRepository.getEcosystemDashboardDetails(ecosystemId); + + const query = { + ecosystemId, + ecosystemRole: { + name: EcosystemRoles.ECOSYSTEM_LEAD + } + }; + + const ecosystemDetails = await this.ecosystemRepository.fetchEcosystemOrg( + query + ); + + const dashboardDetails = { + ecosystem: ecosystemDetails['ecosystem'], + membersCount: endorseMemberCount.membersCount, + endorsementsCount: endorseMemberCount.endorsementsCount, + ecosystemLead:{ + role: ecosystemDetails['ecosystemRole']['name'], + orgName: ecosystemDetails['orgName'] + } + }; + + return dashboardDetails; } catch (error) { this.logger.error(`In ecosystem dashboard details : ${JSON.stringify(error)}`); throw new RpcException(error.response ? error.response : error);