Пример #1
0
        public ActionResult <WalletDto> AddCreditTransaction(string referenceNumber, [FromBody] CreditTransactionDto transaction)
        {
            var wallet = _walletRepository.GetWalletByReference(referenceNumber);

            if (wallet == null)
            {
                return(NotFound());
            }
            else
            {
                var transactionEntry = Transaction.New
                                       (
                    wallet, integration.contract.Models.TransactionType.Credit, transaction.Amount, transaction.Currency,
                    transaction.Trigger.Map(), transaction.TransactionDate
                                       );
                try
                {
                    var updatedWallet = _walletRepository.AddWalletTransaction(transactionEntry);
                    return(Created("/api/something", new WalletDto
                    {
                        ReferenceNumber = updatedWallet.ReferenceNumber,
                        Currency = "ZAR",
                        Balance = updatedWallet.Balance
                    }));
                }
                catch (Exception exception)
                {
                    Console.WriteLine("Error adding credit transaction. ERROR [{0}]", exception.Message);
                    return(StatusCode(500));
                }
            }
        }
Пример #2
0
        private async Task InvalidateInCache(Stream bodyStream)
        {
            string bodyString;

            using (StreamReader reader = new StreamReader(bodyStream, Encoding.UTF8, true, 1024, true))
            {
                bodyString = await reader.ReadToEndAsync();
            }

            CreditTransactionDto creditTransactionDto = JsonConvert.DeserializeObject <CreditTransactionDto>(bodyString);

            _playerBalanceCache.InvalidatePlayerBalance(creditTransactionDto.PlayerIdentifier);
        }
Пример #3
0
        public async Task <IActionResult> Transaction([FromBody] CreditTransactionDto creditTransactionDto)
        {
            Maybe <Player> playerFromRepository = _playerRepository.GetByIdentifier(creditTransactionDto.PlayerIdentifier);

            if (playerFromRepository.HasNoValue)
            {
                return(BadRequest("Player does not exists"));
            }

            Result <Money> money = Money.Create(creditTransactionDto.Amount);

            if (money.IsFailure)
            {
                return(BadRequest(money.Error));
            }

            Result <TransactionAttempt> transaction = await _transactionExecutor.ExecuteTransaction(creditTransactionDto.TransactionIdentifier,
                                                                                                    playerFromRepository.Value,
                                                                                                    money.Value,
                                                                                                    _transactionTypeConverter.Convert(creditTransactionDto.Type));

            if (transaction.IsFailure)
            {
                return(BadRequest(transaction.Error));
            }

            CreditTransactionResult transactionResult = _transactionTypeConverter.Convert(transaction.Value.TransactionState);

            TransactionResultDto result = new TransactionResultDto
            {
                Identifier = transaction.Value.Identifier,
                Result     = transactionResult
            };

            return(Ok(result));
        }