public Result <string, Transaction> Add(Transaction transaction) { try { _logger.LogInformation("creating transaction : {0} - {1} - {2} - {3}", transaction.AccountId, transaction.TransactionTypeId, transaction.Amount, transaction.Currency); if (!TransactionTypeExists(transaction.TransactionTypeId)) { return(Result <string, Transaction> .ForFailure("Transaction type not found")); } if (!AccountExists(transaction.AccountId)) { return(Result <string, Transaction> .ForFailure("Account not found")); } var id = _transactionDao.Add(transaction); var savedTransaction = _transactionDao.GetTransaction(id); if (savedTransaction == null) { return(Result <string, Transaction> .ForFailure("Transaction not created")); } return(Result <string, Transaction> .ForSuccess(savedTransaction)); } catch (Exception ex) { _logger.LogError("Can't create transaction: {0}", ex.StackTrace); return(Result <string, Transaction> .ForFailure("Can't create transaction")); } }