public static InsertTransactionCommand MapToCommand(this TransactionPostRequest transaction)
        {
            if (transaction is null)
            {
                return(null);
            }

            return(new InsertTransactionCommand(
                       transaction.TransactionType,
                       transaction.Date,
                       transaction.Value,
                       transaction.AccountId));
        }
        public IActionResult PostTransaction(TransactionPostRequest transactionPostRequest)
        {
            if (transactionPostRequest == null)
            {
                return(BadRequest());
            }

            try
            {
                var command = transactionPostRequest.MapToCommand();

                var commandHandler = new TransactionCommandHandler(_transactionRepository, _accountRepository);

                var transaction = commandHandler.Handle(command);

                var response = transaction.MapToResponse();

                return(Ok(response));
            }
            catch (CommandValidationException <eTransactionsError> ex)
            {
                return(BadRequest(ex.Error.ToString()));
            }
        }