Beispiel #1
0
        public TopupResultDTO GenerateTopUp(string account, decimal amount)
        {
            string referenceNumber = GenerateReferenceNumber(18);
            bool   isReference     = _transactionRepository.CheckReference(referenceNumber);

            // ??
            while (isReference)
            {
                referenceNumber = GenerateReferenceNumber(18);
                isReference     = _transactionRepository.CheckReference(referenceNumber);
                if (!isReference)
                {
                    break;
                }
            }
            UserEntity userEntity = _userRepository.GetUserByAccountNumber(account);

            if (userEntity == null)
            {
                return(null);
            }

            int            otherId       = userEntity.Id;
            bool           isCreateTopUP = _transactionRepository.CreateNewTopUp(referenceNumber, otherId, amount);
            var            topupData     = _transactionRepository.GetTransactionByReferenceNumber(referenceNumber);
            TopupResultDTO returnData    = new TopupResultDTO();

            returnData.ReferenceNumber = referenceNumber;
            returnData.ExpireDate      = topupData.CreateDateTime.AddMinutes(15);
            return(isCreateTopUP ? returnData : null);
        }