@@ -21,6 +21,7 @@ import (
2121 "github.com/theopenlane/core/internal/ent/generated/assessmentresponse"
2222 "github.com/theopenlane/core/internal/ent/generated/customtypeenum"
2323 "github.com/theopenlane/core/internal/ent/generated/entity"
24+ "github.com/theopenlane/core/internal/ent/generated/entitytype"
2425 "github.com/theopenlane/core/internal/ent/generated/group"
2526 "github.com/theopenlane/core/internal/ent/generated/note"
2627 "github.com/theopenlane/core/internal/ent/generated/orgmembership"
@@ -107,6 +108,7 @@ func handleAssessmentResponse(ctx gala.HandlerContext, payload eventqueue.Mutati
107108 err = transformQuestionnaire (allowCtx , client , questionnaireTransformRequest {
108109 OrganizationID : organizationID ,
109110 TemplateID : assessment .TemplateID ,
111+ TemplateKind : assessment .Edges .Template .Kind ,
110112 AssessmentID : assessment .ID ,
111113 AssessmentResponseID : response .ID ,
112114 DocumentDataID : response .DocumentDataID ,
@@ -172,6 +174,7 @@ func questionnaireTransformFieldChanged(payload eventqueue.MutationGalaPayload)
172174
173175const transformMetadataKey = "questionnaire_transform"
174176const entityTransformFieldNotes = "notes"
177+ const entityTransformFieldEntityTypeID = "entityTypeID"
175178const questionnaireTransformDefinitionID = "questionnaire_transform"
176179
177180type questionnaireValidationError struct {
@@ -188,6 +191,7 @@ func isQuestionnaireValidationError(err error) bool {
188191type questionnaireTransformRequest struct {
189192 OrganizationID string
190193 TemplateID string
194+ TemplateKind enums.TemplateKind
191195 AssessmentID string
192196 AssessmentResponseID string
193197 DocumentDataID string
@@ -235,6 +239,10 @@ func handleEntityTransform(ctx context.Context, client *entgen.Client, req quest
235239 return err
236240 }
237241
242+ if err := setVendorEntityType (ctx , client , req , mapped .Payload ); err != nil {
243+ return err
244+ }
245+
238246 record , err := persistTransformPayload (ctx , client , req , integrationgenerated .IntegrationMappingSchemaEntity , mapped )
239247 if err != nil {
240248 return err
@@ -408,6 +416,30 @@ func resolveEnvironment(ctx context.Context, client *entgen.Client, organization
408416 return nil
409417}
410418
419+ func setVendorEntityType (ctx context.Context , client * entgen.Client , req questionnaireTransformRequest , payload map [string ]any ) error {
420+ if req .TemplateKind != enums .TemplateKindExternalIntake || payload [entityTransformFieldEntityTypeID ] != nil {
421+ return nil
422+ }
423+
424+ id , err := client .EntityType .Query ().
425+ Where (
426+ entitytype .OwnerIDEQ (req .OrganizationID ),
427+ entitytype .NameEqualFold ("vendor" ),
428+ ).
429+ FirstID (ctx )
430+
431+ if entgen .IsNotFound (err ) {
432+ return nil
433+ }
434+
435+ if err != nil {
436+ return fmt .Errorf ("resolve external intake entity type: %w" , err )
437+ }
438+
439+ payload [entityTransformFieldEntityTypeID ] = id
440+ return nil
441+ }
442+
411443func applyTransform (value any , transform enums.TemplateProjectionTransform ) (any , error ) {
412444 if transform == "" {
413445 return value , nil
0 commit comments