adding a random reference number in user table
This commit is contained in:
@@ -29,6 +29,7 @@ model User {
|
||||
isEmailVerfied Boolean? @default(false) @map("is_email_verified")
|
||||
isMobileVerfied Boolean? @default(false) @map("is_mobile_verified")
|
||||
isProfileUpdated Boolean? @default(false) @map("is_profile_updated")
|
||||
userRefNumber String? @map("user_ref_number") @db.VarChar(20)
|
||||
isActive Boolean? @default(true) @map("is_active")
|
||||
createdAt DateTime? @default(now()) @map("created_at")
|
||||
updatedAt DateTime? @updatedAt @map("updated_at")
|
||||
|
||||
@@ -12,6 +12,21 @@ import { ROLE } from '../../../../../common/utils/constants/common.constant';
|
||||
const prismaService = new PrismaService();
|
||||
const hostService = new HostService(prismaService);
|
||||
|
||||
export async function generateHostRefNumber(tx: any) {
|
||||
const lastrecord = await tx.user.findFirst({
|
||||
orderBy: {
|
||||
id: 'desc',
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
|
||||
const nextId = lastrecord ? lastrecord.id + 1 : 1;
|
||||
|
||||
return `HS-${String(nextId).padStart(6, '0')}`;;
|
||||
}
|
||||
|
||||
export const handler = safeHandler(async (
|
||||
event: APIGatewayProxyEvent,
|
||||
context?: Context
|
||||
@@ -44,13 +59,15 @@ export const handler = safeHandler(async (
|
||||
|
||||
let newUserLocal;
|
||||
|
||||
const referenceNumber = await generateHostRefNumber(tx);
|
||||
|
||||
if (user && !user.userPassword) {
|
||||
// reuse existing invited user record
|
||||
newUserLocal = user;
|
||||
} else {
|
||||
// create new user record within the transaction
|
||||
newUserLocal = await tx.user.create({
|
||||
data: { emailAddress: email, roleXid: ROLE.HOST },
|
||||
data: { emailAddress: email, roleXid: ROLE.HOST, userRefNumber: referenceNumber },
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +86,28 @@ export class MinglarService {
|
||||
return true;
|
||||
}
|
||||
|
||||
async generateHostRefNumber(tx: any, role_xid: number) {
|
||||
const lastrecord = await tx.user.findFirst({
|
||||
orderBy: {
|
||||
id: 'desc',
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
},
|
||||
});
|
||||
let referenceId = '';
|
||||
|
||||
const nextId = lastrecord ? lastrecord.id + 1 : 1;
|
||||
|
||||
if (role_xid === ROLE.ACCOUNT_MANAGER) {
|
||||
referenceId = `AM-${String(nextId).padStart(6, '0')}`;
|
||||
} else if (role_xid === ROLE.CO_ADMIN) {
|
||||
referenceId = `CA-${String(nextId).padStart(6, '0')}`;
|
||||
}
|
||||
|
||||
return referenceId;
|
||||
}
|
||||
|
||||
async createHost(data: CreateMinglarDto) {
|
||||
return this.prisma.user.create({ data });
|
||||
}
|
||||
@@ -337,12 +359,15 @@ export class MinglarService {
|
||||
throw new ApiError(400, 'User already exists.');
|
||||
}
|
||||
|
||||
const referenceNumber = await this.generateHostRefNumber(tx, roleXid);
|
||||
|
||||
// Create user with INVITED status
|
||||
const user = await tx.user.create({
|
||||
data: {
|
||||
emailAddress: emailAddress,
|
||||
roleXid: roleXid,
|
||||
userStatus: USER_STATUS.INVITED,
|
||||
userRefNumber: referenceNumber
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user