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,
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],

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 { 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();