public static IDictionary <int, double> ConversionRateByAlternative(this Experiment experiment) { var participants = experiment.ParticipantsByAlternative(); var converted = experiment.ConvertedByAlternative(); var hash = experiment.EmptyHash <double>(); for (var i = 1; i <= experiment.Alternatives.Count(); i++) { var conversionRate = participants[i] > 0 ? (converted[i] / (double)participants[i]) * 100 : 0; hash[i] = conversionRate; } return(hash); }
public static IEnumerable<AlternativeViewModel> ProjectAlternatives(Experiment experiment, Score score) { var index = 1; foreach (var alternative in experiment.Alternatives) { var value = alternative.ToString(); var vm = new AlternativeViewModel { Name = "Option " + (char)(index + 64), Participants = experiment.ParticipantsByAlternative()[index], Converted = experiment.ConvertedByAlternative()[index], ConversionRate = experiment.ConversionRateByAlternative()[index], Showing = experiment.AlternativeValue.ToString() == value, Choice = score.Choice != null && score.Choice.Index == index, Value = value }; index++; yield return vm; } }
public static IEnumerable <AlternativeViewModel> ProjectAlternatives(Experiment experiment, Score score) { var index = 1; foreach (var alternative in experiment.Alternatives) { var value = alternative.ToString(); var vm = new AlternativeViewModel { Name = "Option " + (char)(index + 64), Participants = experiment.ParticipantsByAlternative()[index], Converted = experiment.ConvertedByAlternative()[index], ConversionRate = experiment.ConversionRateByAlternative()[index], Showing = experiment.AlternativeValue.ToString() == value, Choice = score.Choice != null && score.Choice.Index == index, Value = value }; index++; yield return(vm); } }