@@ -380,21 +380,45 @@ public virtual bool IsFeatureEnabled(string featureKey, string userId, UserAttri
380
380
if ( ! Validator . IsFeatureFlagValid ( Config , featureFlag ) )
381
381
return false ;
382
382
383
+ string experimentKey = null ;
384
+ string variationKey = null ;
385
+ bool featureEnabled = false ;
383
386
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 ) ;
389
398
}
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 } ""." ) ;
393
402
}
394
403
}
395
404
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 ;
398
422
}
399
423
400
424
/// <summary>
@@ -440,7 +464,7 @@ public virtual string GetFeatureVariableValueForType(string featureKey, string v
440
464
var variableValue = featureVariable . DefaultValue ;
441
465
var decision = DecisionService . GetVariationForFeature ( featureFlag , userId , userAttributes ) ;
442
466
443
- if ( decision != null )
467
+ if ( decision . Variation != null )
444
468
{
445
469
var variation = decision . Variation ;
446
470
var featureVariableUsageInstance = variation . GetFeatureVariableUsageFromId ( featureVariable . Id ) ;
0 commit comments