예제 #1
0
        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);
        }
예제 #2
0
        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);
        }