Add EmailService and send invitation email in InviteUserService

This commit is contained in:
faris Aljohari
2024-12-28 19:41:30 -06:00
parent d56b26d3ea
commit e3ebcff78a
2 changed files with 21 additions and 1 deletions

View File

@ -9,6 +9,7 @@ import {
InviteUserRepository, InviteUserRepository,
InviteUserSpaceRepository, InviteUserSpaceRepository,
} from '@app/common/modules/Invite-user/repositiories'; } from '@app/common/modules/Invite-user/repositiories';
import { EmailService } from '@app/common/util/email.service';
@Module({ @Module({
imports: [ConfigModule, InviteUserRepositoryModule], imports: [ConfigModule, InviteUserRepositoryModule],
@ -17,6 +18,7 @@ import {
InviteUserService, InviteUserService,
InviteUserRepository, InviteUserRepository,
UserRepository, UserRepository,
EmailService,
InviteUserSpaceRepository, InviteUserSpaceRepository,
], ],
exports: [InviteUserService], exports: [InviteUserService],

View File

@ -4,7 +4,7 @@ import { BaseResponseDto } from '@app/common/dto/base.response.dto';
import { UserStatusEnum } from '@app/common/constants/user-status.enum'; import { UserStatusEnum } from '@app/common/constants/user-status.enum';
import { SuccessResponseDto } from '@app/common/dto/success.response.dto'; import { SuccessResponseDto } from '@app/common/dto/success.response.dto';
import { generateRandomString } from '@app/common/helper/randomString'; import { generateRandomString } from '@app/common/helper/randomString';
import { IsNull, Not } from 'typeorm'; import { In, IsNull, Not } from 'typeorm';
import { DataSource } from 'typeorm'; import { DataSource } from 'typeorm';
import { UserEntity } from '@app/common/modules/user/entities'; import { UserEntity } from '@app/common/modules/user/entities';
import { RoleType } from '@app/common/constants/role.type.enum'; import { RoleType } from '@app/common/constants/role.type.enum';
@ -14,12 +14,15 @@ import {
} from '@app/common/modules/Invite-user/repositiories'; } from '@app/common/modules/Invite-user/repositiories';
import { CheckEmailDto } from '../dtos/check-email.dto'; import { CheckEmailDto } from '../dtos/check-email.dto';
import { UserRepository } from '@app/common/modules/user/repositories'; import { UserRepository } from '@app/common/modules/user/repositories';
import { EmailService } from '@app/common/util/email.service';
import { SpaceEntity } from '@app/common/modules/space';
@Injectable() @Injectable()
export class InviteUserService { export class InviteUserService {
constructor( constructor(
private readonly inviteUserRepository: InviteUserRepository, private readonly inviteUserRepository: InviteUserRepository,
private readonly userRepository: UserRepository, private readonly userRepository: UserRepository,
private readonly emailService: EmailService,
private readonly inviteUserSpaceRepository: InviteUserSpaceRepository, private readonly inviteUserSpaceRepository: InviteUserSpaceRepository,
private readonly dataSource: DataSource, private readonly dataSource: DataSource,
) {} ) {}
@ -75,7 +78,16 @@ export class InviteUserService {
}); });
const invitedUser = await queryRunner.manager.save(inviteUser); 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 spacePromises = spaceUuids.map(async (spaceUuid) => {
const inviteUserSpace = this.inviteUserSpaceRepository.create({ const inviteUserSpace = this.inviteUserSpaceRepository.create({
inviteUser: { uuid: invitedUser.uuid }, inviteUser: { uuid: invitedUser.uuid },
@ -85,6 +97,12 @@ export class InviteUserService {
}); });
await Promise.all(spacePromises); await Promise.all(spacePromises);
await this.emailService.sendEmailWithInvitationTemplate(email, {
name: firstName + ' ' + lastName,
invitationCode,
role: roleType,
spacesList: spaceNamesString,
});
await queryRunner.commitTransaction(); await queryRunner.commitTransaction();