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)); } } }
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); }
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)); }