diff --git a/src/invite-user/invite-user.module.ts b/src/invite-user/invite-user.module.ts index e77f875..402ebb1 100644 --- a/src/invite-user/invite-user.module.ts +++ b/src/invite-user/invite-user.module.ts @@ -9,6 +9,7 @@ import { InviteUserRepository, InviteUserSpaceRepository, } from '@app/common/modules/Invite-user/repositiories'; +import { EmailService } from '@app/common/util/email.service'; @Module({ imports: [ConfigModule, InviteUserRepositoryModule], @@ -17,6 +18,7 @@ import { InviteUserService, InviteUserRepository, UserRepository, + EmailService, InviteUserSpaceRepository, ], exports: [InviteUserService], diff --git a/src/invite-user/services/invite-user.service.ts b/src/invite-user/services/invite-user.service.ts index 2180d0b..b49ed0b 100644 --- a/src/invite-user/services/invite-user.service.ts +++ b/src/invite-user/services/invite-user.service.ts @@ -4,7 +4,7 @@ import { BaseResponseDto } from '@app/common/dto/base.response.dto'; import { UserStatusEnum } from '@app/common/constants/user-status.enum'; import { SuccessResponseDto } from '@app/common/dto/success.response.dto'; import { generateRandomString } from '@app/common/helper/randomString'; -import { IsNull, Not } from 'typeorm'; +import { In, IsNull, Not } from 'typeorm'; import { DataSource } from 'typeorm'; import { UserEntity } from '@app/common/modules/user/entities'; import { RoleType } from '@app/common/constants/role.type.enum'; @@ -14,12 +14,15 @@ import { } from '@app/common/modules/Invite-user/repositiories'; import { CheckEmailDto } from '../dtos/check-email.dto'; import { UserRepository } from '@app/common/modules/user/repositories'; +import { EmailService } from '@app/common/util/email.service'; +import { SpaceEntity } from '@app/common/modules/space'; @Injectable() export class InviteUserService { constructor( private readonly inviteUserRepository: InviteUserRepository, private readonly userRepository: UserRepository, + private readonly emailService: EmailService, private readonly inviteUserSpaceRepository: InviteUserSpaceRepository, private readonly dataSource: DataSource, ) {} @@ -75,7 +78,16 @@ export class InviteUserService { }); const invitedUser = await queryRunner.manager.save(inviteUser); + const spaceRepo = queryRunner.manager.getRepository(SpaceEntity); + const spaces = await spaceRepo.find({ + where: { + uuid: In(spaceUuids), + }, + }); + const spaceNames = spaces.map((space) => space.spaceName); + + const spaceNamesString = spaceNames.join(', '); const spacePromises = spaceUuids.map(async (spaceUuid) => { const inviteUserSpace = this.inviteUserSpaceRepository.create({ inviteUser: { uuid: invitedUser.uuid }, @@ -85,6 +97,12 @@ export class InviteUserService { }); await Promise.all(spacePromises); + await this.emailService.sendEmailWithInvitationTemplate(email, { + name: firstName + ' ' + lastName, + invitationCode, + role: roleType, + spacesList: spaceNamesString, + }); await queryRunner.commitTransaction();