public string GetErrorTextFor(PackStatus packStatus,
                               AdditionalChecks additionalChecks,
                               AmountOfStockSubmited amountOfStockSubmited,
                               NumberOfChecks numberOfChecks,
                               bool trustExists)
 {
     return(GetValidationResultFor(packStatus,
                                   additionalChecks,
                                   amountOfStockSubmited,
                                   numberOfChecks,
                                   trustExists)
            .ErrorText);
 }
 public bool GetIsFulfilledFor(PackStatus packStatus,
                               AdditionalChecks additionalChecks,
                               AmountOfStockSubmited amountOfStockSubmited,
                               NumberOfChecks numberOfChecks,
                               bool trustExists)
 {
     return(GetValidationResultFor(packStatus,
                                   additionalChecks,
                                   amountOfStockSubmited,
                                   numberOfChecks,
                                   trustExists)
            .IsFullfilled);
 }
        private ValidationResult GetValidationResultFor(PackStatus packStatus,
                                                        AdditionalChecks additionalChecks,
                                                        AmountOfStockSubmited amountOfStockSubmited,
                                                        NumberOfChecks numberOfChecks,
                                                        bool trustExists)
        {
            var ammountOfStockSubmitedIsNoMorethatThereIsOnPack = AmmountOfStockSubmitedIsNoMorethatThereIsOnPack(amountOfStockSubmited);

            if (!ammountOfStockSubmitedIsNoMorethatThereIsOnPack.IsFullfilled)
            {
                return(ammountOfStockSubmitedIsNoMorethatThereIsOnPack);
            }


            var multipleChecksArentSelectedIfVotesArentSubmited = MultipleChecksArentSelectedIfVotesArentSubmited(amountOfStockSubmited, numberOfChecks);

            if (!multipleChecksArentSelectedIfVotesArentSubmited.IsFullfilled)
            {
                return(multipleChecksArentSelectedIfVotesArentSubmited);
            }

            if (IsTrustSpecialCase(packStatus, additionalChecks, amountOfStockSubmited, numberOfChecks))
            {
                return(IsAllowedTrustSpecialCase(trustExists));
            }

            if (packStatus == PackStatus.Simple)
            {
                return(IsSimpleAllowedCase(additionalChecks, amountOfStockSubmited));
            }

            if (packStatus == PackStatus.Seller)
            {
                return(BuyerAndSellerAllowedCasesHelper.IsSellerAllowedCase(additionalChecks, amountOfStockSubmited));
            }

            if (packStatus == PackStatus.Buyer)
            {
                return(BuyerAndSellerAllowedCasesHelper.IsBuyerAllowedCase(additionalChecks, amountOfStockSubmited));
            }

            throw new NotSupportedException("“ип " + packStatus + " не поддерживаетс¤.");
        }
Example #4
0
        public void MatrixTest(Status status,
                               AdditionalChecks additionalChecks,
                               AmountOfStockSubmited amountOfStockSubmited,
                               NumberOfChecks numberOfChecks,
                               bool expected)
        {
            var packStatus = GetPackStatusFor(status);

            // Специальный случай для голосования по доверенности
            if (packStatus == PackStatus.Simple &&
                additionalChecks == AdditionalChecks.HasTrust &&
                amountOfStockSubmited == AmountOfStockSubmited.LessOrEqualThanThereIsOnPack &&
                numberOfChecks == NumberOfChecks.Single)
            {
                HandleTrustExistanceSpecialCase(packStatus, additionalChecks, amountOfStockSubmited, numberOfChecks);
                return;
            }
            var chain1 = GraphProvider.GetQSimpleQSepAndHierSubQTableRuleChain(null, null,
                                                                               () => packStatus,
                                                                               () => true,
                                                                               () => amountOfStockSubmited,
                                                                               () => numberOfChecks,
                                                                               () => additionalChecks,
                                                                               () => false);
            var chain2 = GraphProvider.GetQSimpleQSepAndHierSubQTableRuleChain(null, null,
                                                                               () => packStatus,
                                                                               () => false,
                                                                               () => amountOfStockSubmited,
                                                                               () => numberOfChecks,
                                                                               () => additionalChecks,
                                                                               () => false);



            Assert.That(RuleChainFulfilledResoveHelper.RuleChainIsFulfilled(chain1), Is.EqualTo(expected));
            Assert.That(RuleChainFulfilledResoveHelper.RuleChainIsFulfilled(chain2), Is.EqualTo(expected));
        }
 private static bool IsExceptionalCaseForSimplePack(AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks, CumYesIs cumChecks)
 {
     return(additionalChecks == AdditionalChecks.None  /*&&
                                                        * amountOfStockSubmited == AmountOfStockSubmited.MoreThanThereIsOnPack*/
            &&
            numberOfChecks == NumberOfChecks.Single &&
            cumChecks == CumYesIs.NotChecked);
 }
 private static ValidationResult MultipleChecksArentSelectedIfVotesArentSubmited(AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks)
 {
     if (numberOfChecks == NumberOfChecks.Multiple && amountOfStockSubmited == AmountOfStockSubmited.VotesArentSubmited)
     {
         return(ValidationResult.NotFullfilled(ErrorTexts.WITH_MULTIPLE_CHECKS_VOTES_MUST_BE_SUBMITED));
     }
     return(ValidationResult.Fullfilled);
 }
 private static bool IsTrustSpecialCase(PackStatus packStatus, AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks)
 {
     //—пециальный случай дл¤ проверки наличи¤ доверенности
     return(packStatus == PackStatus.Simple &&
            additionalChecks == AdditionalChecks.HasTrust &&
            amountOfStockSubmited == AmountOfStockSubmited.LessOrEqualThanThereIsOnPack &&
            numberOfChecks == NumberOfChecks.Single);
 }
 private bool IsTrustSpecialCase(PackStatus packStatus, AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks, CumYesIs cumChecks)
 {
     return(packStatus == PackStatus.Simple &&
            additionalChecks == AdditionalChecks.HasTrust &&
            amountOfStockSubmited == AmountOfStockSubmited.LessOrEqualThanThereIsOnPack &&
            cumChecks == CumYesIs.NotChecked);
 }
        /// <summary>
        /// Случай для обычного пакета
        /// </summary>
        private static ValidationResult IsSimpleAllowedCase(AdditionalChecks checks, AmountOfStockSubmited amountOfStockSubmited, CumYesIs cumChecks, NumberOfChecks numberOfChecks)
        {
            if (amountOfStockSubmited == AmountOfStockSubmited.VotesArentSubmited)
            {
                if (cumChecks == CumYesIs.NotChecked)
                {
                    return(ValidationResult.Fullfilled);
                }
                else
                {
                    return(ValidationResult.NotFullfilled(ErrorTexts.CUMULATIVE_QUESTION_MUST_HAVE_VOTES_SUBMITED_IN_CASE_OF_YES_CHECK));
                }
            }

            if (checks.IsSet(AdditionalChecks.HasTrust))
            {
                if (checks.IsSet(AdditionalChecks.HasInstructions) ||
                    checks.IsSet(AdditionalChecks.NotWholeStockWasPassed))
                {
                    //Установлен только вариант "ЗА"
                    if (cumChecks == CumYesIs.Checked && numberOfChecks == NumberOfChecks.Single)
                    {
                        return(ValidationResult.Fullfilled);
                    }
                    else
                    {
                        return(ValidationResult.NotFullfilled(ErrorTexts.INCORRECT_FILLING));
                    }
                }
            }
            return(ValidationResult.Fullfilled);
        }
Example #10
0
        private static void HandleTrustExistanceSpecialCase(PackStatus packStatus, AdditionalChecks additionalChecks, AmountOfStockSubmited amountOfStockSubmited, NumberOfChecks numberOfChecks)
        {
            var chain1 = GraphProvider.GetQSimpleQSepAndHierSubQTableRuleChain(null, null,
                                                                               () => packStatus,
                                                                               () => true,
                                                                               () => amountOfStockSubmited,
                                                                               () => numberOfChecks,
                                                                               () => additionalChecks,
                                                                               () => false
                                                                               );

            Assert.That(RuleChainFulfilledResoveHelper.RuleChainIsFulfilled(chain1), Is.EqualTo(true));


            var chain2 = GraphProvider.GetQSimpleQSepAndHierSubQTableRuleChain(null, null,
                                                                               () => packStatus,
                                                                               () => false,
                                                                               () => amountOfStockSubmited,
                                                                               () => numberOfChecks,
                                                                               () => additionalChecks,
                                                                               () => false
                                                                               );

            Assert.That(RuleChainFulfilledResoveHelper.RuleChainIsFulfilled(chain2), Is.EqualTo(false));
        }
Example #11
0
 /// <summary>
 /// Является ли особенным случаем для простого пакета
 /// </summary>
 private static bool IsExceptionalCaseForSimple(AdditionalChecks additionalChecks, NumberOfChecks checks)
 {
     return(additionalChecks == AdditionalChecks.None && checks == NumberOfChecks.Single);
 }