Remove invitationCode from unique constraint and update invite user logic

This commit is contained in:
faris Aljohari
2025-01-11 01:39:52 -06:00
parent 35b6f9f478
commit 78617dde83
5 changed files with 83 additions and 47 deletions
+32 -15
View File
@@ -18,7 +18,10 @@ import { PermissionType } from '@app/common/constants/permission-type.enum';
import { InviteSpaceEntity } from '@app/common/modules/space/entities/invite-space.entity';
import { UserService } from './user.service';
import { RoleType } from '@app/common/constants/role.type.enum';
import { InviteUserRepository } from '@app/common/modules/Invite-user/repositiories';
import {
InviteUserRepository,
InviteUserSpaceRepository,
} from '@app/common/modules/Invite-user/repositiories';
import { UserStatusEnum } from '@app/common/constants/user-status.enum';
@Injectable()
@@ -29,6 +32,7 @@ export class UserSpaceService {
private readonly inviteSpaceRepository: InviteSpaceRepository,
private readonly userService: UserService,
private readonly inviteUserRepository: InviteUserRepository,
private readonly inviteUserSpaceRepository: InviteUserSpaceRepository,
private readonly userDevicePermissionService: UserDevicePermissionService,
) {}
@@ -141,23 +145,36 @@ export class UserSpaceService {
) {
try {
const space = await this.getProjectBySpaceUuid(spaceUuid);
const inviteUser = this.inviteUserRepository.create({
firstName: user.firstName,
lastName: user.lastName,
email: user.email,
jobTitle: null,
phoneNumber: null,
roleType: { uuid: user.role.uuid },
status: UserStatusEnum.ACTIVE,
invitationCode: inviteCode,
invitedBy: RoleType.SPACE_OWNER,
project: { uuid: space.community.project.uuid },
const invitedUserData = await this.inviteUserRepository.findOne({
where: {
email: user.email,
project: { uuid: space.community.project.uuid },
},
});
await this.inviteUserRepository.save(inviteUser);
if (!invitedUserData) {
const inviteUser = this.inviteUserRepository.create({
firstName: user.firstName,
lastName: user.lastName,
email: user.email,
jobTitle: null,
phoneNumber: null,
roleType: { uuid: user.role.uuid },
status: UserStatusEnum.ACTIVE,
invitationCode: inviteCode,
invitedBy: RoleType.SPACE_OWNER,
project: { uuid: space.community.project.uuid },
});
const invitedUser = await this.inviteUserRepository.save(inviteUser);
const inviteUserSpace = this.inviteUserSpaceRepository.create({
inviteUser: { uuid: invitedUser.uuid },
space: { uuid: spaceUuid },
});
await this.inviteUserSpaceRepository.save(inviteUserSpace);
}
} catch (err) {
throw new HttpException(
err.message || 'Internal Server Error',
err.message || 'Failed to add user as an active invitation.',
HttpStatus.INTERNAL_SERVER_ERROR,
);
}
+5 -1
View File
@@ -19,7 +19,10 @@ import {
import { UserDevicePermissionService } from 'src/user-device-permission/services';
import { DeviceUserPermissionRepository } from '@app/common/modules/device/repositories';
import { PermissionTypeRepository } from '@app/common/modules/permission/repositories';
import { InviteUserRepository } from '@app/common/modules/Invite-user/repositiories';
import {
InviteUserRepository,
InviteUserSpaceRepository,
} from '@app/common/modules/Invite-user/repositiories';
@Module({
imports: [ConfigModule, CommunityModule],
@@ -38,6 +41,7 @@ import { InviteUserRepository } from '@app/common/modules/Invite-user/repositior
UserSpaceService,
InviteSpaceRepository,
InviteUserRepository,
InviteUserSpaceRepository,
],
exports: [UserService],
})