示例#1
0
        private async Task <TransactionCorrectness> HasBalance(Guid fromAccountId, int amount)
        {
            TransactionCorrectness transactionCorrectness = new TransactionCorrectness(true);
            int balance = await _transactionRepository.GetBalance(fromAccountId);

            if (balance < amount)
            {
                transactionCorrectness.IsValid = false;
                transactionCorrectness.Reason  = "There is not enough money in the account";
            }
            return(transactionCorrectness);
        }
示例#2
0
        private async Task <TransactionCorrectness> AccountIdsCorrectness(Guid fromAccountId, Guid toAccountId)
        {
            TransactionCorrectness transactionCorrectness = new TransactionCorrectness(true);

            if (await _transactionRepository.IsAccountExistsAsync(fromAccountId) == false)
            {
                transactionCorrectness.IsValid = false;
                transactionCorrectness.Reason  = "The fromAccountId doesn't exist";
            }
            else if (await _transactionRepository.IsAccountExistsAsync(toAccountId) == false)
            {
                transactionCorrectness.IsValid = false;
                transactionCorrectness.Reason  = "The toAccountId doesn't exist";
            }
            return(transactionCorrectness);
        }
示例#3
0
        public async Task <TransactionCreated> CreateTransaction(Transaction transaction)
        {
            TransactionCorrectness transactionCorrectness = await AccountIdsCorrectness(transaction.FromAccountId, transaction.ToAccountId);

            if (transactionCorrectness.IsValid == true)
            {
                transactionCorrectness = await HasBalance(transaction.FromAccountId, transaction.Amount);

                if (transactionCorrectness.IsValid == true)
                {
                    await DoTransaction(transaction);
                }
            }
            return(new TransactionCreated()
            {
                TransactionId = transaction.TransactionId,
                IsSucceeded = transactionCorrectness.IsValid,
                FailureReason = transactionCorrectness.Reason
            });
        }