From 66be448fa26ef6404679cd2c059d5f747c21c434 Mon Sep 17 00:00:00 2001 From: pradeepkumar Date: Tue, 14 Apr 2026 08:47:14 +0530 Subject: [PATCH] feat: include field options and resolve display labels for structured field values in agent service --- src/agents/agents.service.ts | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/agents/agents.service.ts b/src/agents/agents.service.ts index 59d6f6c..720e565 100644 --- a/src/agents/agents.service.ts +++ b/src/agents/agents.service.ts @@ -1031,6 +1031,7 @@ export class AgentsService { slug: true, name: true, fieldType: true, + options: true, section: { select: { id: true, @@ -1043,15 +1044,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); + return { + fieldSlug: fv.field.slug, + fieldName: fv.field.name, + fieldType: fv.field.fieldType, + sectionSlug: fv.field.section.slug, + sectionName: fv.field.section.name, + value: rawValue, + valueLabel: resolveLabel(rawValue, fv.field.options), + }; + }); return { agentProfileId: profile.id,