public async Task AddNewCustomerComplex() { //arrange var random = new Random(); var customer = LimitCustomer.Create($"ACESSO", $"document{random.Next(1000, 10000)}"); var limitLevel = LimitLevel.Create(LevelType.Card, 1000, 30); var cycle = Cycle.Create(CycleType.Transaction); cycle.AddLimitLevel(limitLevel); var limit = Limit.Create(LimitType.CashIn, FeatureType.TED); limit.AddCycle(cycle); customer.AddLimit(limit); //act await _repositoryCommand.SaveAsync(customer); var customerFound = await _repositoryQuery.GetAsync(customer.Id); //assert Assert.NotNull(customerFound); Assert.Equal(customer.Id, customerFound.Id); Assert.True(customerFound.Limits.Count == 1); Assert.True(customerFound.Limits.First().Cycles.Count == 1); Assert.True(customerFound.Limits.First().Cycles.First().LimitLevels.Count == 1); }
public static LimitCustomer CreateLimitCustomer(LimitType limitType, FeatureType featureType, CycleType cycleType, LimitLevel limitLevel) { var customer = LimitCustomer.Create("ACESSO", "document123"); var cycle = Cycle.Create(cycleType); cycle.AddLimitLevel(limitLevel); var limit = Limit.Create(limitType, featureType); limit.AddCycle(cycle); customer.AddLimit(limit); return(customer); }
public async Task AddNewCustomerSimple() { //arrange var random = new Random(); var customer = LimitCustomer.Create($"ACESSO", $"document{random.Next(1000, 10000)}"); customer.AddLimit(Limit.Create(LimitType.CashIn, FeatureType.TED)); //act await _repositoryCommand.SaveAsync(customer); var customerFound = await _repositoryQuery.GetAsync(customer.Id); //assert Assert.NotNull(customerFound); Assert.Equal(customer.Id, customerFound.Id); Assert.True(customerFound.Limits.Count > 0); }
public async Task <LimitCustomer> GetLimitAsync(string companyKey, string documentNumber) { var limitCompany = await _companyQuery.GetAsync(companyKey); if (limitCompany is null) { return(null); } var limitCustomer = await _customerQuery.GetAsync(LimitCustomer.GetId(companyKey, documentNumber)); var limitUseds = await _limitUsedQuery.GetResumeAsync(companyKey, documentNumber); if (limitCustomer is null) { limitCustomer = LimitCustomer.Create(companyKey, documentNumber); } foreach (var limit in limitCompany.Limits) { foreach (var cycle in limit.Cycles) { foreach (var limitLevel in cycle.LimitLevels) { var limitLevelCustomer = limitCustomer.GetLimitLevel(limit.Type, limit.FeatureType, cycle.Type, limitLevel.Type) ?? limitLevel; var limitResume = GetResume(limitUseds, limit.Type, limit.FeatureType, cycle.Type, limitLevel.Type); if (!(limitResume is null)) { limitLevelCustomer.DecreaseMaxValue(limitResume.Amount); } limitCustomer.AddLimitLevel(limit.Type, limit.FeatureType, cycle.Type, limitLevelCustomer); } } } return(limitCustomer); }