adding a random reference number in user table

This commit is contained in:
2025-11-29 13:48:55 +05:30
parent 6b2b211990
commit 7bec950096
3 changed files with 44 additions and 1 deletions

View File

@@ -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")

View File

@@ -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 },
});
}

View File

@@ -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
},
});