public DepositDto CreateDeposit(SettlementEventDto settlementEventDto, string depositName) { var existingDeposits = _depositRepository.GetDepositNamesByDepositName(depositName); // append a number to the deposit, based on how many deposits already exist by that name // with the datetime and deposit type if (existingDeposits.Count < 10) { depositName = depositName + "00" + existingDeposits.Count; } else if (existingDeposits.Count >= 10 && existingDeposits.Count < 100) { depositName = depositName + "0" + existingDeposits.Count; } else if (existingDeposits.Count >= 100 && existingDeposits.Count < 999) { depositName = depositName + existingDeposits.Count; } else if (existingDeposits.Count >= 1000) { throw new Exception("Over 999 deposits for same time period"); } // limit deposit name to 15 chars or less to comply with GP export if (depositName.Length > 14) { var truncateValue = depositName.Length - 14; depositName = depositName.Remove(0, truncateValue); } var depositDto = new DepositDto { // Account number must be non-null, and non-empty; using a single space to fulfill this requirement AccountNumber = " ", BatchCount = 1, DepositDateTime = DateTime.Now, DepositName = depositName, DepositTotalAmount = Decimal.Parse(settlementEventDto.TotalAmount.Amount), DepositAmount = Decimal.Parse(settlementEventDto.TotalAmount.Amount), Exported = false, Notes = null, ProcessorTransferId = settlementEventDto.Key }; return(depositDto); }
public void ShouldGetDepositsByDepositName() { var hourDateTime = new DateTime(2018, 01, 04, 13, 15, 00); var hourDateTimeString = (hourDateTime.Hour < 10) ? "0" + hourDateTime.Hour : hourDateTime.Hour.ToString(); var minuteDateTimeString = (hourDateTime.Minute < 10) ? "0" + hourDateTime.Minute : hourDateTime.Minute.ToString(); var x = hourDateTimeString + minuteDateTimeString; // Arrange var depositName = "ACH20180103"; List <MpDeposit> deposits = new List <MpDeposit> { new MpDeposit { DepositName = "ACH20180103" } }; var filter = $"Deposit_Name LIKE '%{depositName}%'"; _apiUserRepository.Setup(r => r.GetDefaultApiUserToken()).Returns(token); _restRequestBuilder.Setup(m => m.NewRequestBuilder()).Returns(_restRequest.Object); _restRequest.Setup(m => m.WithAuthenticationToken(token)).Returns(_restRequest.Object); _restRequest.Setup(m => m.WithFilter(filter)).Returns(_restRequest.Object); _restRequest.Setup(m => m.Build()).Returns(_request.Object); _request.Setup(m => m.Search <MpDeposit>()).Returns(deposits); // Act var result = _fixture.GetDepositNamesByDepositName(depositName); // Assert Assert.NotNull(result); }