Merge branch 'mayank' of http://git.wdipl.com/Mayank.Mishra/MinglarBackendNestJS into paritosh
This commit is contained in:
53
src/modules/minglaradmin/handlers/getAllOnboardingHosts.ts
Normal file
53
src/modules/minglaradmin/handlers/getAllOnboardingHosts.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import { verifyOnlyMinglarAdminToken } from '@/common/middlewares/jwt/authForOnlyMinglarAdmin';
|
||||
import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda';
|
||||
import { PrismaService } from '../../../common/database/prisma.service';
|
||||
import { safeHandler } from '../../../common/utils/handlers/safeHandler';
|
||||
import ApiError from '../../../common/utils/helper/ApiError';
|
||||
import { MinglarService } from '../services/minglar.service';
|
||||
|
||||
const prismaService = new PrismaService();
|
||||
const minglarService = new MinglarService(prismaService);
|
||||
|
||||
/**
|
||||
* Get all host applications handler
|
||||
* Returns host details with status, submission date, and account manager info
|
||||
*/
|
||||
export const handler = safeHandler(async (
|
||||
event: APIGatewayProxyEvent,
|
||||
context?: Context
|
||||
): Promise<APIGatewayProxyResult> => {
|
||||
// Verify authentication token
|
||||
const token = event.headers['x-auth-token'] || event.headers['X-Auth-Token'];
|
||||
if (!token) {
|
||||
throw new ApiError(401, 'This is a protected route. Please provide a valid token.');
|
||||
}
|
||||
|
||||
// Verify token and get user info
|
||||
const userInfo = await verifyOnlyMinglarAdminToken(token);
|
||||
|
||||
// Get user details including role
|
||||
const user = await prismaService.user.findUnique({
|
||||
where: { id: userInfo.id },
|
||||
select: { id: true, roleXid: true }
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
throw new ApiError(404, 'User not found');
|
||||
}
|
||||
|
||||
// Get all host applications from service based on user role
|
||||
const hostApplications = await minglarService.getAllOnboardingHostApplications();
|
||||
|
||||
return {
|
||||
statusCode: 200,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
success: true,
|
||||
message: 'Host applications retrieved successfully',
|
||||
data: hostApplications,
|
||||
}),
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,53 @@
|
||||
import { verifyOnlyMinglarAdminToken } from '@/common/middlewares/jwt/authForOnlyMinglarAdmin';
|
||||
import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda';
|
||||
import { PrismaService } from '../../../common/database/prisma.service';
|
||||
import { safeHandler } from '../../../common/utils/handlers/safeHandler';
|
||||
import ApiError from '../../../common/utils/helper/ApiError';
|
||||
import { MinglarService } from '../services/minglar.service';
|
||||
|
||||
const prismaService = new PrismaService();
|
||||
const minglarService = new MinglarService(prismaService);
|
||||
|
||||
/**
|
||||
* Get all host applications handler
|
||||
* Returns host details with status, submission date, and account manager info
|
||||
*/
|
||||
export const handler = safeHandler(async (
|
||||
event: APIGatewayProxyEvent,
|
||||
context?: Context
|
||||
): Promise<APIGatewayProxyResult> => {
|
||||
// Verify authentication token
|
||||
const token = event.headers['x-auth-token'] || event.headers['X-Auth-Token'];
|
||||
if (!token) {
|
||||
throw new ApiError(401, 'This is a protected route. Please provide a valid token.');
|
||||
}
|
||||
|
||||
// Verify token and get user info
|
||||
const userInfo = await verifyOnlyMinglarAdminToken(token);
|
||||
|
||||
// Get user details including role
|
||||
const user = await prismaService.user.findUnique({
|
||||
where: { id: userInfo.id },
|
||||
select: { id: true, roleXid: true }
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
throw new ApiError(404, 'User not found');
|
||||
}
|
||||
|
||||
// Get all host applications from service based on user role
|
||||
const hostApplications = await minglarService.getAllOnboardingHostApplications_New();
|
||||
|
||||
return {
|
||||
statusCode: 200,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
success: true,
|
||||
message: 'Host applications retrieved successfully',
|
||||
data: hostApplications,
|
||||
}),
|
||||
};
|
||||
});
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ROLE, USER_STATUS } from '@/common/utils/constants/common.constant';
|
||||
import { ROLE, ROLE_NAME, USER_STATUS } from '@/common/utils/constants/common.constant';
|
||||
import {
|
||||
HOST_STATUS_DISPLAY,
|
||||
HOST_STATUS_INTERNAL,
|
||||
@@ -19,7 +19,7 @@ import { sendAMEmailForHostAssign } from './AMEmail.service';
|
||||
|
||||
@Injectable()
|
||||
export class MinglarService {
|
||||
constructor(private prisma: PrismaService) {}
|
||||
constructor(private prisma: PrismaService) { }
|
||||
|
||||
async createPassword(user_xid: number, password: string): Promise<boolean> {
|
||||
// Find user by id
|
||||
@@ -597,7 +597,7 @@ export class MinglarService {
|
||||
userStatus &&
|
||||
userStatus.trim().toLowerCase() === MINGLAR_STATUS_DISPLAY.NEW.toLowerCase()
|
||||
) {
|
||||
filters.adminStatusDisplay = MINGLAR_STATUS_DISPLAY.NEW;
|
||||
filters.adminStatusInternal = MINGLAR_STATUS_INTERNAL.ADMIN_TO_REVIEW;
|
||||
}
|
||||
|
||||
/** -----------------------------------
|
||||
@@ -670,6 +670,85 @@ export class MinglarService {
|
||||
}));
|
||||
}
|
||||
|
||||
async getAllOnboardingHostApplications() {
|
||||
return await this.prisma.hostHeader.findMany({
|
||||
where: { isActive: true },
|
||||
select: {
|
||||
id: true,
|
||||
hostRefNumber: true,
|
||||
companyName: true,
|
||||
adminStatusDisplay: true,
|
||||
assignedOn: true,
|
||||
accountManagerXid: true,
|
||||
createdAt: true,
|
||||
user: {
|
||||
select: {
|
||||
id: true,
|
||||
firstName: true,
|
||||
lastName: true,
|
||||
}
|
||||
},
|
||||
accountManager: {
|
||||
select: {
|
||||
id: true,
|
||||
firstName: true,
|
||||
lastName: true,
|
||||
profileImage: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
async getAllOnboardingHostApplications_New() {
|
||||
return await this.prisma.hostHeader.findMany({
|
||||
where: { isActive: true, adminStatusInternal: MINGLAR_STATUS_INTERNAL.ADMIN_TO_REVIEW },
|
||||
select: {
|
||||
id: true,
|
||||
hostRefNumber: true,
|
||||
companyName: true,
|
||||
adminStatusDisplay: true,
|
||||
assignedOn: true,
|
||||
accountManagerXid: true,
|
||||
createdAt: true,
|
||||
cities: {
|
||||
select: {
|
||||
id: true,
|
||||
cityName: true
|
||||
}
|
||||
},
|
||||
countries: {
|
||||
select: {
|
||||
id: true,
|
||||
countryName: true,
|
||||
}
|
||||
},
|
||||
states: {
|
||||
select: {
|
||||
id: true,
|
||||
stateName: true
|
||||
}
|
||||
},
|
||||
user: {
|
||||
select: {
|
||||
id: true,
|
||||
firstName: true,
|
||||
lastName: true,
|
||||
}
|
||||
},
|
||||
accountManager: {
|
||||
select: {
|
||||
id: true,
|
||||
firstName: true,
|
||||
lastName: true,
|
||||
profileImage: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
async getAllCoadminAndAM() {
|
||||
// 1. Fetch all required users (Admin, Co-Admin, AM)
|
||||
@@ -770,7 +849,7 @@ export class MinglarService {
|
||||
|
||||
if (
|
||||
hostDetails.adminStatusInternal !==
|
||||
MINGLAR_STATUS_INTERNAL.AM_NOT_ASSIGNED &&
|
||||
MINGLAR_STATUS_INTERNAL.AM_NOT_ASSIGNED &&
|
||||
hostDetails.adminStatusDisplay !== MINGLAR_STATUS_DISPLAY.AM_NOT_ASSIGNED
|
||||
) {
|
||||
throw new ApiError(400, 'Invalid host status');
|
||||
@@ -861,7 +940,7 @@ export class MinglarService {
|
||||
) {
|
||||
// Check if host exists
|
||||
const ActivityHeader = await this.prisma.activityPQQheader.findUnique({
|
||||
where: { id: activity_pqq_header_xid , isActive:true},
|
||||
where: { id: activity_pqq_header_xid, isActive: true },
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
@@ -934,41 +1013,65 @@ export class MinglarService {
|
||||
}
|
||||
|
||||
async acceptHostApplication(host_xid: number, user_xid: number) {
|
||||
return await this.prisma.hostHeader.update({
|
||||
where: {
|
||||
id: host_xid,
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_SUBMITTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.UNDER_REVIEW,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.AM_TO_REVIEW,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.TO_REVIEW,
|
||||
},
|
||||
data: {
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.APPROVED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.APPROVED,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.AM_APPROVED,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.APPROVED,
|
||||
stepper: STEPPER.COMPANY_DETAILS_APPROVED,
|
||||
},
|
||||
});
|
||||
return await this.prisma.$transaction(async (tx) => {
|
||||
await this.prisma.hostHeader.update({
|
||||
where: {
|
||||
id: host_xid,
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_SUBMITTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.UNDER_REVIEW,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.AM_TO_REVIEW,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.TO_REVIEW,
|
||||
},
|
||||
data: {
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.APPROVED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.APPROVED,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.AM_APPROVED,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.APPROVED,
|
||||
stepper: STEPPER.COMPANY_DETAILS_APPROVED,
|
||||
},
|
||||
});
|
||||
|
||||
await this.prisma.hostTrack.create({
|
||||
data: {
|
||||
hostXid: host_xid,
|
||||
updatedByRole: ROLE_NAME.ACCOUNT_MANAGER,
|
||||
updatedByXid: user_xid,
|
||||
trackStatus: MINGLAR_STATUS_INTERNAL.AM_APPROVED,
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
async acceptHostApplicationMinglarAdmin(host_xid: number, user_xid: number) {
|
||||
return await this.prisma.hostHeader.update({
|
||||
where: {
|
||||
id: host_xid,
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_SUBMITTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.UNDER_REVIEW,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.ADMIN_TO_REVIEW,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.NEW,
|
||||
},
|
||||
data: {
|
||||
isApproved: true,
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_SUBMITTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.UNDER_REVIEW,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.AM_NOT_ASSIGNED,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.AM_NOT_ASSIGNED,
|
||||
},
|
||||
});
|
||||
return await this.prisma.$transaction(async (tx) => {
|
||||
await tx.hostHeader.update({
|
||||
where: {
|
||||
id: host_xid,
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_SUBMITTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.UNDER_REVIEW,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.ADMIN_TO_REVIEW,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.NEW,
|
||||
},
|
||||
data: {
|
||||
isApproved: true,
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_SUBMITTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.UNDER_REVIEW,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.AM_NOT_ASSIGNED,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.AM_NOT_ASSIGNED,
|
||||
},
|
||||
});
|
||||
|
||||
await this.prisma.hostTrack.create({
|
||||
data: {
|
||||
hostXid: host_xid,
|
||||
updatedByRole: ROLE_NAME.MINGLAR_ADMIN,
|
||||
updatedByXid: user_xid,
|
||||
trackStatus: MINGLAR_STATUS_INTERNAL.AM_NOT_ASSIGNED,
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
async rejectHostApplication(host_xid: number, user_xid: number) {
|
||||
@@ -994,6 +1097,15 @@ export class MinglarService {
|
||||
},
|
||||
});
|
||||
|
||||
await this.prisma.hostTrack.create({
|
||||
data: {
|
||||
hostXid: hostDetails.id,
|
||||
updatedByRole: ROLE_NAME.MINGLAR_ADMIN,
|
||||
updatedByXid: user_xid,
|
||||
trackStatus: MINGLAR_STATUS_INTERNAL.ADMIN_REJECTED,
|
||||
}
|
||||
})
|
||||
|
||||
await tx.user.update({
|
||||
where: { id: hostDetails.userXid },
|
||||
data: {
|
||||
@@ -1004,25 +1116,36 @@ export class MinglarService {
|
||||
}
|
||||
|
||||
async rejectHostApplicationAM(host_xid: number, user_xid: number) {
|
||||
const hostDetails = await this.prisma.hostHeader.findFirst({
|
||||
where: { id: host_xid },
|
||||
select: { id: true, userXid: true },
|
||||
});
|
||||
if (!hostDetails) {
|
||||
throw new Error('Host not found');
|
||||
}
|
||||
await this.prisma.hostHeader.update({
|
||||
where: {
|
||||
id: host_xid,
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_SUBMITTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.UNDER_REVIEW,
|
||||
},
|
||||
data: {
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.REJECTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.REJECTED,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.ADMIN_REJECTED,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.REJECTED,
|
||||
},
|
||||
});
|
||||
return await this.prisma.$transaction(async (tx) => {
|
||||
const hostDetails = await this.prisma.hostHeader.findFirst({
|
||||
where: { id: host_xid },
|
||||
select: { id: true, userXid: true },
|
||||
});
|
||||
if (!hostDetails) {
|
||||
throw new Error('Host not found');
|
||||
}
|
||||
await this.prisma.hostHeader.update({
|
||||
where: {
|
||||
id: host_xid,
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_SUBMITTED,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.UNDER_REVIEW,
|
||||
},
|
||||
data: {
|
||||
hostStatusInternal: HOST_STATUS_INTERNAL.HOST_TO_UPDATE,
|
||||
hostStatusDisplay: HOST_STATUS_DISPLAY.ENHANCING,
|
||||
adminStatusInternal: MINGLAR_STATUS_INTERNAL.AM_REJECTED,
|
||||
adminStatusDisplay: MINGLAR_STATUS_DISPLAY.ENHANCING,
|
||||
},
|
||||
});
|
||||
|
||||
await this.prisma.hostTrack.create({
|
||||
data: {
|
||||
hostXid: hostDetails.id,
|
||||
updatedByRole: ROLE_NAME.ACCOUNT_MANAGER,
|
||||
updatedByXid: user_xid,
|
||||
trackStatus: MINGLAR_STATUS_INTERNAL.AM_REJECTED,
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user