added search
This commit is contained in:
@@ -391,16 +391,54 @@ export class HostService {
|
||||
where: { userXid: user_xid, isActive: true }
|
||||
})
|
||||
|
||||
const whereClause = {
|
||||
const whereClause: any = {
|
||||
isActive: true,
|
||||
hostXid: hostDetails.id,
|
||||
};
|
||||
if (!hostDetails) {
|
||||
return {
|
||||
data: [],
|
||||
total: 0,
|
||||
page: paginationOptions?.page || 1,
|
||||
limit: paginationOptions?.limit || 10
|
||||
};
|
||||
}
|
||||
|
||||
// 🔍 SEARCH (fixed)
|
||||
if (search?.trim()) {
|
||||
const term = search.trim();
|
||||
|
||||
whereClause.OR = [
|
||||
{ activityRefNumber: { contains: term, mode: 'insensitive' } },
|
||||
{ activityTitle: { contains: term, mode: 'insensitive' } },
|
||||
{
|
||||
activityType: {
|
||||
activityTypeName: { contains: term, mode: 'insensitive' }
|
||||
}
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
const [hostAllActivities, totalCount] = await Promise.all([
|
||||
this.prisma.activities.findMany({
|
||||
where: whereClause,
|
||||
include: {
|
||||
ActivitiesMedia: true,
|
||||
select: {
|
||||
id: true,
|
||||
activityRefNumber: true,
|
||||
activityTitle: true,
|
||||
totalScore: true,
|
||||
activityInternalStatus: true,
|
||||
activityDisplayStatus: true,
|
||||
amInternalStatus: true,
|
||||
amDisplayStatus: true,
|
||||
createdAt: true,
|
||||
checkInAddress: true,
|
||||
frequency: {
|
||||
select: {
|
||||
id: true,
|
||||
frequencyName: true
|
||||
}
|
||||
},
|
||||
ActivityAmDetails: {
|
||||
select: {
|
||||
accountManager: {
|
||||
@@ -415,7 +453,18 @@ export class HostService {
|
||||
},
|
||||
},
|
||||
},
|
||||
activityType: true,
|
||||
activityType: {
|
||||
select: {
|
||||
id: true,
|
||||
activityTypeName: true,
|
||||
interests: {
|
||||
select: {
|
||||
id: true,
|
||||
interestName: true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
skip: paginationOptions?.skip || 0,
|
||||
take: paginationOptions?.limit || 10,
|
||||
@@ -425,26 +474,6 @@ export class HostService {
|
||||
]);
|
||||
|
||||
for (const activity of hostAllActivities) {
|
||||
|
||||
/** 1️⃣ Process Activity Media */
|
||||
const processedMedia = [];
|
||||
|
||||
for (const media of activity.ActivitiesMedia || []) {
|
||||
|
||||
const key = media.mediaFileName?.startsWith("http")
|
||||
? media.mediaFileName.split(".com/")[1]
|
||||
: media.mediaFileName;
|
||||
|
||||
const presignedUrl = key ? await getPresignedUrl(bucket, key) : null;
|
||||
|
||||
processedMedia.push({
|
||||
...media,
|
||||
presignedUrl,
|
||||
});
|
||||
}
|
||||
|
||||
activity.ActivitiesMedia = processedMedia;
|
||||
|
||||
/** 2️⃣ Process AM Profile Image */
|
||||
const am = activity.ActivityAmDetails?.[0]?.accountManager;
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { getPresignedUrl } from '@/common/middlewares/aws/getPreSignedUrl';
|
||||
import {
|
||||
ROLE,
|
||||
ROLE_NAME,
|
||||
@@ -19,6 +20,8 @@ import {
|
||||
MINGLAR_STATUS_DISPLAY,
|
||||
MINGLAR_STATUS_INTERNAL,
|
||||
} from '@/common/utils/constants/minglar.constant';
|
||||
import { PaginationOptions } from '@/common/utils/pagination/pagination.types';
|
||||
import config from '@/config/config';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { User } from '@prisma/client';
|
||||
import * as bcrypt from 'bcryptjs';
|
||||
@@ -26,10 +29,6 @@ import { PrismaService } from '../../../common/database/prisma.service';
|
||||
import ApiError from '../../../common/utils/helper/ApiError';
|
||||
import { CreateMinglarDto, UpdateMinglarDto } from '../dto/minglar.dto';
|
||||
import { sendAMEmailForHostAssign } from './AMEmail.service';
|
||||
import { getPresignedUrl } from '@/common/middlewares/aws/getPreSignedUrl';
|
||||
import config from '@/config/config';
|
||||
import { PaginationOptions } from '@/common/utils/pagination/pagination.types';
|
||||
import { ROLES_KEY } from '@/common/decorators/roles.decorator';
|
||||
|
||||
const bucket = config.aws.bucketName;
|
||||
|
||||
@@ -259,23 +258,39 @@ export class MinglarService {
|
||||
}
|
||||
|
||||
async getAllHostActivityForMinglar(search?: string, hostXid?: number, paginationOptions?: { page: number; limit: number; skip: number }) {
|
||||
const whereClause = {
|
||||
const whereClause: any = {
|
||||
isActive: true,
|
||||
...(hostXid ? { hostXid } : {}), // Add only if provided
|
||||
...(hostXid ? { hostXid } : {}),
|
||||
};
|
||||
|
||||
// 🔥 FIXED SEARCH CONDITION
|
||||
if (search?.trim()) {
|
||||
const term = search.trim();
|
||||
|
||||
whereClause.OR = [
|
||||
{ activityRefNumber: { contains: term, mode: 'insensitive' } },
|
||||
{ activityTitle: { contains: term, mode: 'insensitive' } },
|
||||
{
|
||||
activityType: {
|
||||
activityTypeName: { contains: term, mode: 'insensitive' }
|
||||
}
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
const [hostActivities, totalCount] = await Promise.all([
|
||||
this.prisma.activities.findMany({
|
||||
where: whereClause,
|
||||
include: {
|
||||
ActivitiesMedia: {
|
||||
select: {
|
||||
id: true,
|
||||
mediaFileName: true,
|
||||
mediaType: true,
|
||||
displayOrder: true,
|
||||
},
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
activityRefNumber: true,
|
||||
activityTitle: true,
|
||||
totalScore: true,
|
||||
activityInternalStatus: true,
|
||||
activityDisplayStatus: true,
|
||||
amInternalStatus: true,
|
||||
amDisplayStatus: true,
|
||||
createdAt: true,
|
||||
ActivityAmDetails: {
|
||||
select: {
|
||||
accountManager: {
|
||||
@@ -290,7 +305,18 @@ export class MinglarService {
|
||||
},
|
||||
},
|
||||
},
|
||||
activityType: true,
|
||||
activityType: {
|
||||
select: {
|
||||
id: true,
|
||||
activityTypeName: true,
|
||||
interests: {
|
||||
select: {
|
||||
id: true,
|
||||
interestName: true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
skip: paginationOptions?.skip || 0,
|
||||
take: paginationOptions?.limit || 10,
|
||||
@@ -301,26 +327,6 @@ export class MinglarService {
|
||||
|
||||
// Process each activity
|
||||
for (const activity of hostActivities) {
|
||||
|
||||
/** 1️⃣ Process Activity Media */
|
||||
const processedMedia = [];
|
||||
|
||||
for (const media of activity.ActivitiesMedia || []) {
|
||||
|
||||
const key = media.mediaFileName?.startsWith("http")
|
||||
? media.mediaFileName.split(".com/")[1]
|
||||
: media.mediaFileName;
|
||||
|
||||
const presignedUrl = key ? await getPresignedUrl(bucket, key) : null;
|
||||
|
||||
processedMedia.push({
|
||||
...media,
|
||||
presignedUrl,
|
||||
});
|
||||
}
|
||||
|
||||
activity.ActivitiesMedia = processedMedia;
|
||||
|
||||
/** 2️⃣ Process AM Profile Image */
|
||||
const am = activity.ActivityAmDetails?.[0]?.accountManager;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user