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); }
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); }
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); }
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); }
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); }
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); }
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; }
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"; }
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); }
/// <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; }
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); }
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); }
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); }
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(); }
public TournamentDesignViewModel() { EntryFee = new EntryFee(30.00, "dreißig"); }
public ChallengePayout(EntryFee entryFee, IChallengePayoutBuckets buckets) { EntryFee = entryFee; Buckets = buckets; }
public void 参加費が3桁の場合カンマ無しで表示() { var act = new EntryFee(100); Assert.Equal("100 円", act.DisplayValue); }