Skip to content

Commit 3a383d8

Browse files
authored
Merge pull request #1 from Autoadmin-org/backend_development
added email confirmation letter sending when user added in group is not active
2 parents ce4b24c + 0de390e commit 3a383d8

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

backend/src/entities/group/use-cases/add-user-in-group.use.case.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { BaseType } from '../../../common/data-injection.tokens';
66
import { IGlobalDatabaseContext } from '../../../common/application/global-database-context.intarface';
77
import { Messages } from '../../../exceptions/text/messages';
88
import { UserEntity } from '../../user/user.entity';
9-
import { sendInvitationToGroup } from '../../email/send-email';
9+
import { sendEmailConfirmation, sendInvitationToGroup } from '../../email/send-email';
1010
import { AddedUserInGroupDs } from '../application/data-sctructures/added-user-in-group.ds';
1111
import { StripeUtil } from '../../user/utils/stripe-util';
1212
import { Constants } from '../../../helpers/constants/constants';
@@ -34,7 +34,7 @@ export class AddUserInGroupUseCase
3434
protected async implementation(inputData: AddUserInGroupDs): Promise<AddedUserInGroupDs> {
3535
const { email, groupId } = inputData;
3636
const foundGroup = await this._dbContext.groupRepository.findGroupById(groupId);
37-
const foundUser = await this._dbContext.userRepository.findOneUserByEmail(email);
37+
const foundUser = await this._dbContext.userRepository.findUserByEmailWithEmailVerificationAndInvitation(email);
3838

3939
if (foundUser && foundUser.isActive) {
4040
const userAlreadyAdded = !!foundGroup.users.find((u) => u.id === foundUser.id);
@@ -64,6 +64,10 @@ export class AddUserInGroupUseCase
6464
}
6565
const savedGroup = await this._dbContext.groupRepository.saveNewOrUpdatedGroup(foundGroup);
6666
delete savedGroup.connection;
67+
const newEmailVerification = await this._dbContext.emailVerificationRepository.createOrUpdateEmailVerification(
68+
foundUser,
69+
);
70+
await sendEmailConfirmation(foundUser.email, newEmailVerification.verification_string);
6771
await sendInvitationToGroup(foundUser.email, savedInvitation.verification_string);
6872
if (userAlreadyAdded) {
6973
throw new HttpException(

backend/src/entities/user/repository/user.repository.interface.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ export interface IUserRepository {
2121

2222
findOneUserWithEmailVerification(userId: string): Promise<UserEntity>;
2323

24+
findUserByEmailWithEmailVerificationAndInvitation(email: string): Promise<UserEntity>
25+
2426
deleteUserEntity(user: UserEntity): Promise<UserEntity>;
2527

2628
getUsersWithNotNullGCLIDsInTwoWeeks(): Promise<Array<UserEntity>>;

backend/src/entities/user/repository/user.repository.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ export class UserRepository extends Repository<UserEntity> implements IUserRepos
7272
return await usersQb.getOne();
7373
}
7474

75+
public async findUserByEmailWithEmailVerificationAndInvitation(email: string): Promise<UserEntity> {
76+
const usersQb = await getRepository(UserEntity)
77+
.createQueryBuilder('user')
78+
.leftJoinAndSelect('user.email_verification', 'email_verification')
79+
.leftJoinAndSelect('user.user_invitation', 'user_invitation')
80+
.where('user.email = :userEmail', { userEmail: email });
81+
return await usersQb.getOne();
82+
}
83+
7584
public async findAllUsersInConnection(
7685
connectionId: string,
7786
): Promise<Array<Omit<UserEntity, 'connections' | 'groups'>>> {

0 commit comments

Comments
 (0)