예제 #1
0
        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"));
            }
        }