Enhance HostService and MinglarService to include account manager details and process profile images. Updated getAllHostActivity to retrieve account manager information and generate presigned URLs for media and profile images. Refactored media processing logic for improved clarity and consistency.
This commit is contained in:
@@ -102,6 +102,17 @@ export class HostService {
|
||||
documentType: true,
|
||||
},
|
||||
},
|
||||
accountManager: {
|
||||
select: {
|
||||
id: true,
|
||||
firstName: true,
|
||||
lastName: true,
|
||||
emailAddress: true,
|
||||
mobileNumber: true,
|
||||
profileImage: true,
|
||||
userRefNumber: true,
|
||||
}
|
||||
},
|
||||
user: {
|
||||
select: {
|
||||
id: true,
|
||||
@@ -177,6 +188,14 @@ export class HostService {
|
||||
host.logoPath = await getPresignedUrl(bucket, key);
|
||||
}
|
||||
|
||||
if (host.accountManager.profileImage) {
|
||||
const key = host.accountManager.profileImage.startsWith('http')
|
||||
? host.accountManager.profileImage.split('.com/')[1]
|
||||
: host.accountManager.profileImage;
|
||||
|
||||
host.accountManager.profileImage = await getPresignedUrl(bucket, key);
|
||||
}
|
||||
|
||||
if (host.hostParent?.length) {
|
||||
const parent = host.hostParent[0]; // since you allow only 1 parent
|
||||
|
||||
@@ -354,18 +373,76 @@ export class HostService {
|
||||
});
|
||||
}
|
||||
|
||||
async getAllHostActivity(search?: string, hostXid?: number) {
|
||||
return await this.prisma.activities.findMany({
|
||||
async getAllHostActivity(search?: string, user_xid?: number) {
|
||||
const hostDetails = await this.prisma.hostHeader.findFirst({
|
||||
where: { userXid: user_xid, isActive: true }
|
||||
})
|
||||
|
||||
const hostAllActivities = await this.prisma.activities.findMany({
|
||||
where: {
|
||||
isActive: true,
|
||||
hostXid: hostXid,
|
||||
hostXid: hostDetails.id,
|
||||
},
|
||||
include: {
|
||||
ActivitiesMedia: true,
|
||||
ActivityAmDetails: true,
|
||||
ActivityAmDetails: {
|
||||
select: {
|
||||
accountManager: {
|
||||
select: {
|
||||
id: true,
|
||||
firstName: true,
|
||||
lastName: true,
|
||||
profileImage: true,
|
||||
emailAddress: true,
|
||||
roleXid: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
activityType: true,
|
||||
},
|
||||
});
|
||||
|
||||
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;
|
||||
|
||||
if (am?.profileImage) {
|
||||
const key = am.profileImage.startsWith("http")
|
||||
? am.profileImage.split(".com/")[1]
|
||||
: am.profileImage;
|
||||
|
||||
const presignedUrl = await getPresignedUrl(bucket, key);
|
||||
|
||||
activity.ActivityAmDetails[0].accountManager = {
|
||||
...am,
|
||||
profileImage: presignedUrl,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return hostAllActivities;
|
||||
}
|
||||
|
||||
async acceptMinglarAgreement(user_xid: number) {
|
||||
|
||||
@@ -291,26 +291,26 @@ export class MinglarService {
|
||||
// Process each activity
|
||||
for (const activity of hostActivities) {
|
||||
|
||||
/** --------------------------
|
||||
* 1️⃣ Process Activity Media
|
||||
* -------------------------- */
|
||||
if (activity.ActivitiesMedia?.length) {
|
||||
for (const media of activity.ActivitiesMedia) {
|
||||
/** 1️⃣ Process Activity Media */
|
||||
const processedMedia = [];
|
||||
|
||||
if (!media.mediaFileName) continue;
|
||||
for (const media of activity.ActivitiesMedia || []) {
|
||||
|
||||
// Extract S3 key if URL or keep raw key
|
||||
const key = media.mediaFileName.startsWith("http")
|
||||
const key = media.mediaFileName?.startsWith("http")
|
||||
? media.mediaFileName.split(".com/")[1]
|
||||
: media.mediaFileName;
|
||||
|
||||
media.mediaFileName = await getPresignedUrl(bucket, key);
|
||||
}
|
||||
const presignedUrl = key ? await getPresignedUrl(bucket, key) : null;
|
||||
|
||||
processedMedia.push({
|
||||
...media,
|
||||
presignedUrl,
|
||||
});
|
||||
}
|
||||
|
||||
/** --------------------------
|
||||
* 2️⃣ Process AM Profile Image
|
||||
* -------------------------- */
|
||||
activity.ActivitiesMedia = processedMedia;
|
||||
|
||||
/** 2️⃣ Process AM Profile Image */
|
||||
const am = activity.ActivityAmDetails?.[0]?.accountManager;
|
||||
|
||||
if (am?.profileImage) {
|
||||
@@ -318,10 +318,16 @@ export class MinglarService {
|
||||
? am.profileImage.split(".com/")[1]
|
||||
: am.profileImage;
|
||||
|
||||
am.profileImage = await getPresignedUrl(bucket, key);
|
||||
const presignedUrl = await getPresignedUrl(bucket, key);
|
||||
|
||||
activity.ActivityAmDetails[0].accountManager = {
|
||||
...am,
|
||||
profileImage: presignedUrl,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return hostActivities;
|
||||
}
|
||||
|
||||
@@ -1645,9 +1651,9 @@ export class MinglarService {
|
||||
isActive: true
|
||||
},
|
||||
data: {
|
||||
activityInternalStatus: ACTIVITY_INTERNAL_STATUS.PQQ_TO_UPDATE,
|
||||
activityInternalStatus: ACTIVITY_INTERNAL_STATUS.PQ_TO_UPDATE,
|
||||
activityDisplayStatus: ACTIVITY_DISPLAY_STATUS.ENHANCING,
|
||||
amInternalStatus: ACTIVITY_AM_INTERNAL_STATUS.PQQ_REJECTED,
|
||||
amInternalStatus: ACTIVITY_AM_INTERNAL_STATUS.PQ_REJECTED,
|
||||
amDisplayStatus: ACTIVITY_AM_DISPLAY_STATUS.ENHANCING
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user