@@ -380,21 +380,45 @@ public virtual bool IsFeatureEnabled(string featureKey, string userId, UserAttri
380380 if ( ! Validator . IsFeatureFlagValid ( Config , featureFlag ) )
381381 return false ;
382382
383+ string experimentKey = null ;
384+ string variationKey = null ;
385+ bool featureEnabled = false ;
383386 var decision = DecisionService . GetVariationForFeature ( featureFlag , userId , userAttributes ) ;
384- if ( decision != null ) {
385- if ( decision . Source == FeatureDecision . DECISION_SOURCE_EXPERIMENT ) {
386- SendImpressionEvent ( decision . Experiment , decision . Variation , userId , userAttributes ) ;
387- } else {
388- Logger . Log ( LogLevel . INFO , $@ "The user ""{ userId } "" is not being experimented on feature ""{ featureKey } "".") ;
387+
388+ if ( decision . Variation != null )
389+ {
390+ var variation = decision . Variation ;
391+ featureEnabled = variation . FeatureEnabled . GetValueOrDefault ( ) ;
392+
393+ if ( decision . Source == FeatureDecision . DECISION_SOURCE_EXPERIMENT )
394+ {
395+ experimentKey = decision . Experiment . Key ;
396+ variationKey = variation . Key ;
397+ SendImpressionEvent ( decision . Experiment , variation , userId , userAttributes ) ;
389398 }
390- if ( decision . Variation . IsFeatureEnabled ) {
391- Logger . Log ( LogLevel . INFO , $@ "Feature flag "" { featureKey } "" is enabled for user "" { userId } ""." ) ;
392- return true ;
399+ else
400+ {
401+ Logger . Log ( LogLevel . INFO , $@ "The user "" { userId } "" is not being experimented on feature "" { featureKey } ""." ) ;
393402 }
394403 }
395404
396- Logger . Log ( LogLevel . INFO , $@ "Feature flag ""{ featureKey } "" is not enabled for user ""{ userId } "".") ;
397- return false ;
405+ if ( featureEnabled == true )
406+ Logger . Log ( LogLevel . INFO , $@ "Feature flag ""{ featureKey } "" is enabled for user ""{ userId } "".") ;
407+ else
408+ Logger . Log ( LogLevel . INFO , $@ "Feature flag ""{ featureKey } "" is not enabled for user ""{ userId } "".") ;
409+
410+ var decisionInfo = new Dictionary < string , object >
411+ {
412+ { "featureKey" , featureKey } ,
413+ { "featureEnabled" , featureEnabled } ,
414+ { "source" , decision . Source } ,
415+ { "sourceExperimentKey" , experimentKey } ,
416+ { "sourceVariationKey" , variationKey } ,
417+ } ;
418+
419+ NotificationCenter . SendNotifications ( NotificationCenter . NotificationType . Decision , DecisionInfoTypes . FEATURE , userId ,
420+ userAttributes ?? new UserAttributes ( ) , decisionInfo ) ;
421+ return featureEnabled ;
398422 }
399423
400424 /// <summary>
@@ -440,7 +464,7 @@ public virtual string GetFeatureVariableValueForType(string featureKey, string v
440464 var variableValue = featureVariable . DefaultValue ;
441465 var decision = DecisionService . GetVariationForFeature ( featureFlag , userId , userAttributes ) ;
442466
443- if ( decision != null )
467+ if ( decision . Variation != null )
444468 {
445469 var variation = decision . Variation ;
446470 var featureVariableUsageInstance = variation . GetFeatureVariableUsageFromId ( featureVariable . Id ) ;
0 commit comments