mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-26 08:34:55 +00:00
Add EmailService and send invitation email in InviteUserService
This commit is contained in:
@ -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],
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user