예제 #1
0
        private static RuleNode GetQSimpleQSepAndHierSubQTableRuleChain(BaseYesNoAbsPoint point, BulletinScreenModelBase bulletin, FractionLong amountOfStock, bool isQSimpWithPrivDividends = false)
        {
            var additionalMarks = bulletin.AdditionalMarks;
            Func <PackStatus>            packStatus                   = () => bulletin.PackStatus;
            Func <NumberOfChecks>        numberOfChecks               = () => GetNumberOfChecks(point);
            Func <AdditionalChecks>      additionalChecks             = () => BulletinAdditionalMarksToAdditionalChecksEnumConverter.ConvertToAdditionalChecksEnum(bulletin.AdditionalMarks);
            Func <bool>                  trustExists                  = () => bulletin.TrustExists;
            Func <AmountOfStockSubmited> amountOfStockSubmited        = () => AmountOfStockSubmitedCalculator.GetAmountOfStockSubmited(point, amountOfStock);
            Func <bool>                  isQSimpWithPrivDividendsFunc = () => isQSimpWithPrivDividends;

            return(GetQSimpleQSepAndHierSubQTableRuleChain(point, additionalMarks, packStatus, trustExists, amountOfStockSubmited, numberOfChecks, additionalChecks, isQSimpWithPrivDividendsFunc));
        }
예제 #2
0
 private static RuleNode GetQCumulativeTableRule(BulletinScreenModelBase bulletin, QCumulative qCum, FractionLong allowedVotesAmount)
 {
     return(GetQCumulativeTableRule(qCum, bulletin.AdditionalMarks, () => bulletin.PackStatus, () => bulletin.TrustExists, () => AmountOfStockSubmitedCalculator.GetAmountOfStockSubmited(qCum, allowedVotesAmount), () => GetNumberOfChecks(qCum), () => BulletinAdditionalMarksToAdditionalChecksEnumConverter.ConvertToAdditionalChecksEnum(bulletin.AdditionalMarks), () => qCum.AdditionalMarks.YesCheckBoxField.Value ? CumYesIs.Checked : CumYesIs.NotChecked));
 }
예제 #3
0
 private static IEnumerable <RuleNode> GetQCumulativeParallelRules(List <Question> questions, BulletinScreenModelBase bulletin)
 {
     return
         (questions
          .OfType <QCumulative>()
          .Select(qCum =>
     {
         var allowedVotesAmount = qCum.GetTotalPossibleVotesSum();
         var result =
             RuleBuilder
             .RootRule(new QCumulativeMustHaveAtLeastOneSelectionRule(qCum))
             .AddRuleChain(GetQCumulativeTableRule(bulletin, qCum, allowedVotesAmount))
             .AddRule(new QCumulativeFractionDistributionRule(qCum, () => qCum.AllowedVotesAmountFractions.Select(x => x * (int)qCum.PositionsCount).ToList(), () => BulletinAdditionalMarksToAdditionalChecksEnumConverter.ConvertToAdditionalChecksEnum(bulletin.AdditionalMarks), bulletin.IsADRBulletin, () => bulletin.AdditionalMarks.HasInstructions.Value))                             //todo: move calculation somewhere
             .AddRule(new AdrMustHaveExactVotesSpreadedWithMinimalSpredForQCum(qCum, () => allowedVotesAmount, bulletin.IsADRBulletin))
             .AddRule(new QCumulativeWarningRule(qCum, bulletin.AdditionalMarks, () => allowedVotesAmount))
             .GetRoot();
         return result;
     }));
 }