public void UpdateProduct_Values_DontUpdateContracts()
        {
            LoanProductManager loanProductManager = (LoanProductManager)container["LoanProductManager"];

            LoanProduct loanProduct = loanProductManager.Select(_productWithValues.Id);

            loanProduct.GracePeriod = 8;
            loanProduct.AnticipatedTotalRepaymentPenaltiesBase = OAnticipatedRepaymentPenaltiesBases.RemainingInterest;
            loanProduct.AnticipatedTotalRepaymentPenalties     = 33;
            loanProduct.ChargeInterestWithinGracePeriod        = true;
            loanProduct.NbOfInstallments = 5;
            loanProduct.NonRepaymentPenalties.InitialAmount    = 111;
            loanProduct.NonRepaymentPenalties.OLB              = 222;
            loanProduct.NonRepaymentPenalties.OverDueInterest  = 333;
            loanProduct.NonRepaymentPenalties.OverDuePrincipal = 444;
            loanProduct.EntryFees = new List <EntryFee>();
            EntryFee fee = new EntryFee();

            fee.Value   = 2;
            fee.IsAdded = true;
            loanProduct.EntryFees.Add(fee);
            loanProductManager.UpdatePackage(loanProduct, false);
            loanProductManager.InsertEntryFees(loanProduct.EntryFees, loanProduct.Id);
            LoanProduct updatedLoanProduct = loanProductManager.Select(loanProduct.Id);

            updatedLoanProduct.EntryFees = loanProductManager.SelectEntryFeesWithoutCycles(updatedLoanProduct.Id, false);

            AssertLoanProduct(loanProduct, updatedLoanProduct, false);
        }
示例#2
0
        public void PackageEntryFeesMax()
        {
            EntryFee fee = new EntryFee();

            fee.Max           = (decimal)2.5;
            package.EntryFees = new List <EntryFee>();
            package.EntryFees.Add(fee);
            Assert.AreEqual(2.5m, package.EntryFees[0].Max);
        }
示例#3
0
        public void PackageEntryFees()
        {
            EntryFee entryFee = new EntryFee();

            entryFee.Value    = (decimal)2.5;
            package.EntryFees = new List <EntryFee>();
            package.EntryFees.Add(entryFee);
            Assert.AreEqual(2.5m, package.EntryFees[0].Value);
        }
示例#4
0
        public void GetPayoutBucketPrizeOrDefault_WhenFreeAndTypeIsAll_ShouldBeOfTypeAll()
        {
            // Arrange
            var freeTokenEntryFee = new EntryFee(0, CurrencyType.All);

            // Act
            var bucket = freeTokenEntryFee.GetPayoutBucketPrizeOrDefault();

            //Assert
            bucket.Type.Should().Be(CurrencyType.All);
            bucket.Amount.Should().Be(0);
        }
示例#5
0
        public static IChallenge ToEntity(this ChallengeModel model)
        {
            var entryFee = new EntryFee(model.EntryFeeAmount, CurrencyType.FromValue(model.EntryFeeCurrency));

            var payout = new ChallengePayout(entryFee, new ChallengePayoutBuckets(model.PayoutBuckets.Select(bucket => bucket.ToEntity())));

            var challenge = new Challenge(ChallengeId.FromGuid(model.Id), payout);

            challenge.ClearDomainEvents();

            return(challenge);
        }
示例#6
0
        public void GetPayoutBucketPrizeOrDefault_WhenFreeAndTypeIsToken_ShouldBeMinValue()
        {
            // Arrange
            var freeTokenEntryFee = new EntryFee(0, CurrencyType.Token);

            // Act
            var bucket = freeTokenEntryFee.GetPayoutBucketPrizeOrDefault();

            //Assert
            bucket.Type.Should().Be(CurrencyType.Token);
            bucket.Amount.Should().Be(Token.MinValue);
        }
        public void SelectProduct_Values()
        {
            LoanProductManager loanProductManager = (LoanProductManager)container["LoanProductManager"];

            LoanProduct loanProduct = loanProductManager.Select(_productWithValues.Id);
            EntryFee    entryFee    = new EntryFee();

            entryFee.Value        = 3;
            loanProduct.EntryFees = new List <EntryFee>();
            loanProduct.EntryFees.Add(entryFee);
            AssertLoanProduct(_productWithValues, loanProduct, false);
        }
示例#8
0
 public void Copy(EntryFee entryFee)
 {
     entryFee.Id           = Id;
     entryFee.Name         = Name;
     entryFee.Min          = Min;
     entryFee.Max          = Max;
     entryFee.Value        = Value;
     entryFee.IsRate       = IsRate;
     entryFee.IsAdded      = IsAdded;
     entryFee.Index        = Index;
     entryFee.CycleId      = CycleId;
     entryFee.IdForNewItem = IdForNewItem;
 }
示例#9
0
 public void Copy(EntryFee entryFee)
 {
     entryFee.Id = Id;
     entryFee.Name = Name;
     entryFee.Min = Min;
     entryFee.Max = Max;
     entryFee.Value = Value;
     entryFee.IsRate = IsRate;
     entryFee.IsAdded = IsAdded;
     entryFee.Index = Index;
     entryFee.CycleId = CycleId;
     entryFee.IdForNewItem = IdForNewItem;
 }
示例#10
0
        public IChallengePayout GetChallengePayout(ChallengePayoutEntries entries, EntryFee entryFee)
        {
            var charts = FileStorage.ChallengePayouts[entries].ToList();

            if (charts.IsNullOrEmpty())
            {
                throw new NotSupportedException($"Payout entries value ({entries}) is not supported.");
            }

            var prize = entryFee.GetPayoutBucketPrizeOrDefault();

            var buckets = new ChallengePayoutBuckets(charts.Select(chart => new ChallengePayoutBucket(prize.Apply(chart), chart.Size)));

            return(new ChallengePayout(entryFee, buckets));
        }
        public void SelectAllProducts_OnlyForPerson_DontShowDeleted()
        {
            LoanProductManager loanProductManager = (LoanProductManager)container["LoanProductManager"];
            List <LoanProduct> list     = loanProductManager.SelectAllPackages(false, OClientTypes.Person);
            EntryFee           entryFee = new EntryFee();

            entryFee.Value    = 3;
            list[0].EntryFees = new List <EntryFee>();
            list[0].EntryFees.Add(entryFee);
            Assert.AreEqual(1, list.Count);
            AssertLoanProduct(_productWithValues, list[0], false);
            _productWithValues.ClientType = '-';
            _productWithValues.Id         = 4;
            _productWithValues.Name       = "Product4";
        }
示例#12
0
        public void GetEntryFees_DisableFees_False()
        {
            _myContract.Disburse(new DateTime(2006, 1, 1), true, false);
            EntryFee fee = new EntryFee();

            fee.Value  = 3;
            fee.IsRate = true;
            fee.Id     = 21;
            LoanEntryFee loanEntryFee = new LoanEntryFee();

            loanEntryFee.FeeValue          = 3;
            loanEntryFee.ProductEntryFee   = fee;
            loanEntryFee.ProductEntryFeeId = 21;
            _myContract.LoanEntryFeesList  = new List <LoanEntryFee>();
            _myContract.LoanEntryFeesList.Add(loanEntryFee);
            Assert.AreEqual(30m, _myContract.GetEntryFees()[0].Value);
        }
示例#13
0
 /// <summary>
 /// 大会申込の新しいインスタンスを生成します。
 /// </summary>
 /// <param name="reservationNumber">予約番号。</param>
 /// <param name="reservationDate">予約受付日。</param>
 /// <param name="entryDetail">エントリー詳細。</param>
 /// <param name="entryFee">参加費。</param>
 /// <param name="receiptStatus">受領状況。</param>
 /// <param name="receivedDate">受領日。</param>
 /// <param name="applicant">申請者。</param>
 public TournamentEntry(
     string reservationNumber,
     DateTime reservationDate,
     EntryDetail entryDetail,
     EntryFee entryFee,
     ReceiptStatus receiptStatus,
     DateTime?receivedDate,
     Applicant applicant)
 {
     this.ReservationNumber = new ReservationNumber(reservationNumber);
     this.ReservationDate   = new ReservationDate(reservationDate);
     this.EntryDetail       = entryDetail;
     this.EntryFee          = entryFee;
     this.ReceiptStatus     = receiptStatus;
     this.ReceivedDate      = new ReceivedDate(receivedDate);
     this.Applicant         = applicant;
 }
示例#14
0
        public void GetPaidFees_NoLatePenalties_Commissions()
        {
            _myContract.NonRepaymentPenalties = new NonRepaymentPenalties(0.03, 0, 0, 0);
            EntryFee fee = new EntryFee();

            fee.Value  = 3;
            fee.IsRate = true;
            fee.Id     = 21;
            LoanEntryFee loanEntryFee = new LoanEntryFee();

            loanEntryFee.FeeValue          = 3;
            loanEntryFee.ProductEntryFee   = fee;
            loanEntryFee.ProductEntryFeeId = 21;
            _myContract.LoanEntryFeesList  = new List <LoanEntryFee>();
            _myContract.LoanEntryFeesList.Add(loanEntryFee);
            _myContract.Disburse(new DateTime(2006, 1, 1), true, false);
            _myContract.Repay(1, new DateTime(2006, 2, 1), 500, true, true);

            Assert.AreEqual(30m, _myContract.GetPaidFees().Value);
        }
示例#15
0
        private async Task SeedChallengesAsync()
        {
            var strategy = _challengePayoutFactory.CreateInstance();

            var twoDollars = new EntryFee(2, CurrencyType.Money);

            var threeDollars = new EntryFee(3, CurrencyType.Money);

            var twoDollarsForOneEntries = strategy.GetChallengePayout(ChallengePayoutEntries.One, twoDollars);

            var twoDollarsForTwoEntries = strategy.GetChallengePayout(ChallengePayoutEntries.Two, twoDollars);

            var twoDollarsForThreeEntries = strategy.GetChallengePayout(ChallengePayoutEntries.Three, twoDollars);

            var threeDollarsForOneEntries = strategy.GetChallengePayout(ChallengePayoutEntries.One, threeDollars);

            var threeDollarsForTwoEntries = strategy.GetChallengePayout(ChallengePayoutEntries.Two, threeDollars);

            var threeDollarsForThreeEntries = strategy.GetChallengePayout(ChallengePayoutEntries.Three, threeDollars);

            var challenges = new List <IChallenge>
            {
                new Challenge(ChallengeId.Parse("d53b366f-e717-43d4-ac12-6e13d37f5cef"), twoDollarsForOneEntries),
                new Challenge(ChallengeId.Parse("369ae69d-b10d-4d72-84ba-698691646ba6"), twoDollarsForOneEntries),
                new Challenge(ChallengeId.Parse("eb76fa60-700f-4dce-b312-d69897563437"), twoDollarsForTwoEntries),
                new Challenge(ChallengeId.Parse("82592581-e6ac-41e0-9c61-773d924f233d"), twoDollarsForTwoEntries),
                new Challenge(ChallengeId.Parse("9457ae9a-4e5c-436f-b10f-33134af68439"), twoDollarsForThreeEntries),
                new Challenge(ChallengeId.Parse("91f6d007-b458-4f1c-9814-755b32059e00"), twoDollarsForThreeEntries),
                new Challenge(ChallengeId.Parse("4ecb13a4-0742-4140-93b0-27ee582e5cab"), threeDollarsForOneEntries),
                new Challenge(ChallengeId.Parse("fa38f697-2ef3-40e9-a165-d62c3cc750a8"), threeDollarsForOneEntries),
                new Challenge(ChallengeId.Parse("ac6851b4-2cb7-42ab-bf44-fb197d21221b"), threeDollarsForTwoEntries),
                new Challenge(ChallengeId.Parse("bb5f6e0c-ada7-47b4-9d24-a3c9ec7df034"), threeDollarsForTwoEntries),
                new Challenge(ChallengeId.Parse("6ec217f7-3d6a-41c2-b2eb-4cc8799d2af5"), threeDollarsForThreeEntries),
                new Challenge(ChallengeId.Parse("7d96b314-8d5b-4393-9257-9c0e2cf7c0f1"), threeDollarsForThreeEntries)
            };

            Challenges.AddRange(challenges.Where(challenge => Challenges.All(x => x.Id != challenge.Id)).Select(challenge => challenge.ToModel()));

            await this.CommitAsync();
        }
        public void SelectProduct_Values_ExoticInstallmentsTable_AmountCyclesStock()
        {
            Assert.Ignore();
            LoanProductManager loanProductManager = (LoanProductManager)container["LoanProductManager"];

            _productWithValues.ExoticProduct = _exoticInstallmentsTable;
//            _productWithValues.AmountCycles = _amountCycleStock;
            _productWithValues.Amount   = null;
            _productWithValues.Name     = "Test";
            _productWithValues.Currency = new Currency {
                Id = 1
            };
            _productWithValues.Id = loanProductManager.Add(_productWithValues);

            LoanProduct selectedProduct = loanProductManager.Select(_productWithValues.Id);

            selectedProduct.EntryFees = new List <EntryFee>();
            EntryFee entryFee = new EntryFee();

            entryFee.Value = 3;
            selectedProduct.EntryFees.Add(entryFee);

            AssertLoanProduct(_productWithValues, selectedProduct, true);
        }
示例#17
0
        public async Task <DomainValidationResult <IChallenge> > CreateChallengeAsync(
            ChallengeId challengeId,
            ChallengePayoutEntries payoutEntries,
            EntryFee entryFee,
            CancellationToken cancellationToken = default
            )
        {
            var result = new DomainValidationResult <IChallenge>();

            var strategy = _challengePayoutFactory.CreateInstance();

            if (payoutEntries == 0)
            {
                return(result.AddFailedPreconditionError("Challenge payout entries cannot be zero."));
            }

            var payout = strategy.GetChallengePayout(payoutEntries, entryFee);

            if (payout == null)
            {
                return(result.AddFailedPreconditionError("Invalid payout structure. Payout entries doesn't match the chart."));
            }

            if (result.IsValid)
            {
                var challenge = new Challenge(challengeId, payout !);

                _challengeRepository.Create(challenge);

                await _challengeRepository.CommitAsync(true, cancellationToken);

                return(challenge);
            }

            return(result);
        }
        private void _SetUp()
        {
            _exoticInstallmentsTable = new ExoticInstallmentsTable
            {
                Id   = 1,
                Name = "Exotic"
            };
            _exoticInstallmentsTable.Add(new ExoticInstallment(1, 1, 1));

            _productWithValues = new LoanProduct
            {
                Id              = 1,
                Name            = "Product1",
                Code            = "Code",
                Delete          = false,
                ClientType      = 'I',
                Amount          = 1000,
                InterestRate    = 1,
                InstallmentType = new InstallmentType {
                    Id = 1
                },
                GracePeriod      = 1,
                NbOfInstallments = 6,
                AnticipatedTotalRepaymentPenalties     = 10,
                KeepExpectedInstallment                = true,
                ChargeInterestWithinGracePeriod        = true,
                AnticipatedTotalRepaymentPenaltiesBase = OAnticipatedRepaymentPenaltiesBases.RemainingInterest,
                NonRepaymentPenalties = new NonRepaymentPenaltiesNullableValues
                {
                    OverDueInterest  = 2,
                    InitialAmount    = 3,
                    OLB              = 4,
                    OverDuePrincipal = 5
                },
            };
            EntryFee fee = new EntryFee();

            fee.Value = 3;
            _productWithValues.EntryFees = new List <EntryFee>();
            _productWithValues.EntryFees.Add(fee);

            _productWithRangeValues = new LoanProduct
            {
                Id          = 2,
                Name        = "Product2",
                Code        = "Code2",
                Delete      = false,
                ClientType  = 'C',
                FundingLine = new FundingLine {
                    Id = 1
                },
                AmountMin       = 1000,
                AmountMax       = 10111,
                InterestRateMin = 1,
                InterestRateMax = 3,
                InstallmentType = new InstallmentType {
                    Id = 1
                },
                GracePeriodMin      = 1,
                GracePeriodMax      = 5,
                NbOfInstallmentsMin = 3,
                NbOfInstallmentsMax = 10,
                AnticipatedTotalRepaymentPenaltiesMin = 1,
                AnticipatedTotalRepaymentPenaltiesMax = 4,
                KeepExpectedInstallment                = true,
                ChargeInterestWithinGracePeriod        = true,
                AnticipatedTotalRepaymentPenaltiesBase = OAnticipatedRepaymentPenaltiesBases.RemainingInterest,
                NonRepaymentPenaltiesMin               = new NonRepaymentPenaltiesNullableValues
                {
                    OverDueInterest  = 1,
                    InitialAmount    = 2,
                    OLB              = 3,
                    OverDuePrincipal = 4
                },
                NonRepaymentPenaltiesMax = new NonRepaymentPenaltiesNullableValues
                {
                    OverDueInterest  = 11,
                    InitialAmount    = 12,
                    OLB              = 13,
                    OverDuePrincipal = 14
                },
            };
            _productWithRangeValues.EntryFees = new List <EntryFee>();
            EntryFee entryFee2 = new EntryFee();

            entryFee2.Min = 0;
            entryFee2.Max = 10;
            _productWithRangeValues.EntryFees.Add(entryFee2);
        }
示例#19
0
        protected override async Task SeedProductionAsync()
        {
            await this.SeedAdministratorAccountAsync();

            var assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) !;

            var file = File.OpenRead(Path.Combine(assemblyPath, "Setup/Challenges.Production.csv"));

            using var csvReader = file.OpenCsvReader();

            Challenges.AddRange(
                csvReader.GetRecords(
                    new
            {
                Id = default(Guid),
                EntryFeeCurrency = default(int),
                EntryFeeAmount   = default(decimal),
                Entries          = default(int)
            })
                .Select(
                    record =>
            {
                var payoutStrategy = new ChallengePayoutFactory().CreateInstance();

                var payoutEntries = new ChallengePayoutEntries(record.Entries / 2);

                var currency = CurrencyType.FromValue(record.EntryFeeCurrency) !;

                var entryFee = new EntryFee(record.EntryFeeAmount, currency);

                var payout = payoutStrategy.GetChallengePayout(payoutEntries, entryFee);

                return(new Challenge(record.Id.ConvertTo <ChallengeId>(), payout));
            })
                .Where(challenge => Challenges.All(x => x.Id != challenge.Id))
                .Select(challenge => challenge.ToModel()));

            await this.CommitAsync();

            var startedAt = DateTimeOffset.FromUnixTimeMilliseconds(1582261200000).UtcDateTime;

            var duration = TimeSpan.FromDays(4);

            var promotion1 = new Promotion(
                "DHANA20REDCUP",
                new Money(5),
                duration,
                new DateTimeProvider(startedAt + duration));

            promotion1.SetEntityId(PromotionId.Parse("885cdd1e-0ed9-4fdc-9c29-d48a9d071cfd"));

            var promotion2 = new Promotion(
                "DHANA20TOK",
                new Token(250),
                duration,
                new DateTimeProvider(startedAt + duration));

            promotion2.SetEntityId(PromotionId.Parse("263aa2ed-3f88-4070-96e6-a098814e44f3"));

            var promotions = new List <Promotion>
            {
                promotion1,
                promotion2
            };

            Promotions.AddRange(promotions.Where(promotion => Promotions.All(x => x.Id != promotion.Id)).Select(promotion => promotion.ToModel()));

            await this.CommitAsync();
        }
示例#20
0
 public TournamentDesignViewModel()
 {
     EntryFee = new EntryFee(30.00, "dreißig");
 }
示例#21
0
 public ChallengePayout(EntryFee entryFee, IChallengePayoutBuckets buckets)
 {
     EntryFee = entryFee;
     Buckets  = buckets;
 }
示例#22
0
        public void 参加費が3桁の場合カンマ無しで表示()
        {
            var act = new EntryFee(100);

            Assert.Equal("100 円", act.DisplayValue);
        }