public bool TestItemClass(ClassBTA itemClass, AbstractClassAbstractionComparisonObject comparisonData)
        {
            var confPrice  = LevelAction(x => itemClass.ConfPrices[x], comparisonData, comparisonData.PriceTreatment);
            var fullPrice  = LevelAction(x => itemClass.FullPrices[x], comparisonData, comparisonData.PriceTreatment);
            var validCount = LevelAction(x => itemClass.ValidItems[x], comparisonData, comparisonData.ValidityTreatment);

            if (confPrice.Item2 == false || fullPrice.Item2 == false || validCount.Item2 == false)
            {
                LoggingFacade.LogDebug($"No results found for:{ itemClass.ClassName }");
                return(false);
            }

            if (confPrice.Item1 < comparisonData.MinimumConfPrice)
            {
                return(false);
            }

            if (fullPrice.Item1 < comparisonData.MinimumFullPrice)
            {
                return(false);
            }

            if ((float)(validCount.Item1) / (float)itemClass.BaseTypes.Count < comparisonData.MinimumValidityRating)
            {
                return(false);
            }

            return(true);
        }
        internal ClassBTA AddNewClass(string itemClass)
        {
            var bta = new ClassBTA(itemClass);

            this.Classes.Add(itemClass, bta);
            return(bta);
        }
 /// <summary>
 /// Test if a itemclass is fitting for the strategy.
 /// </summary>
 /// <param name="itemClass"></param>
 /// <returns></returns>
 public bool Execute(ClassBTA itemClass)
 {
     return(this.Strategy.TestItemClass(itemClass, this));
 }