feat: include agent ratings in user profile and resolve field option labels in agent service transformations

This commit is contained in:
pradeepkumar
2026-04-08 04:11:33 +05:30
parent 0dc13cb43a
commit 87b0c17b44

View File

@@ -1075,6 +1075,7 @@ export class AgentsService {
slug: true,
name: true,
fieldType: true,
options: true,
section: {
select: {
id: true,
@@ -1087,15 +1088,30 @@ export class AgentsService {
},
});
// Helper to resolve a raw value to its option label (for SELECT/RADIO/MULTI_SELECT fields)
const resolveLabel = (rawValue: any, options: any): any => {
if (!options || !Array.isArray(options) || options.length === 0) return rawValue;
const lookup = (val: any) => {
const match = (options as any[]).find((o: any) => o.value === val || o.value === String(val));
return match?.label || val;
};
if (Array.isArray(rawValue)) return rawValue.map(lookup);
return lookup(rawValue);
};
// Transform to a more usable format
const transformedValues = fieldValues.map((fv) => ({
fieldSlug: fv.field.slug,
fieldName: fv.field.name,
fieldType: fv.field.fieldType,
sectionSlug: fv.field.section.slug,
sectionName: fv.field.section.name,
value: this.extractValue(fv),
}));
const transformedValues = fieldValues.map((fv) => {
const rawValue = this.extractValue(fv);
const labelValue = resolveLabel(rawValue, fv.field.options);
return {
fieldSlug: fv.field.slug,
fieldName: fv.field.name,
fieldType: fv.field.fieldType,
sectionSlug: fv.field.section.slug,
sectionName: fv.field.section.name,
value: labelValue,
};
});
return {
agentProfileId: profile.id,