コード例 #1
0
        public async ValueTask <ActionResult <AccountOutputModel> > AddAccount(AccountInputModel accountInputModel)
        {
            string URIdeposit = $"api/transaction/initialize";

            if (accountInputModel.CurrencyId < 1)
            {
                return(BadRequest("Account cannot be added"));
            }
            var result = await _accountRepository.AddAccount(_mapper.Map <Account>(accountInputModel));

            TransactionEntityInputModel transactionEntityInputModel = new TransactionEntityInputModel {
                Amount = 19000
            };

            if (result.IsOkay)
            {
                if (result.RequestData == null)
                {
                    return(Problem($"Added account not found", statusCode: 520));
                }

                transactionEntityInputModel.Account = new AccountShortInputModel
                {
                    Id         = (long)result.RequestData.Id,
                    CurrencyId = result.RequestData.Currency.Id
                };
                var requestResult = await RequestSender.SendRequest <TransactionEntityOutputModel>(_urlOptions.Value.TransactionStoreApiUrl, URIdeposit, Method.POST, transactionEntityInputModel);

                if (requestResult.IsSuccessful)
                {
                    return(Ok(_mapper.Map <AccountOutputModel>(result.RequestData)));
                }
            }
            return(Problem($"Transaction failed {result.ExMessage}", statusCode: 520));
        }
コード例 #2
0
        public async ValueTask Setup()
        {
            _urlOptions        = Resolve <IOptions <UrlOptions> >();
            _paypalOptions     = Resolve <IOptions <PayPalOptions> >();
            _accountRepository = Resolve <IAccountRepository>();
            _systemUnderTest   = new TransactionController(_urlOptions, _paypalOptions, _accountRepository);
            await DropOrRestoreTestDbs("Dbs_Restore");

            _transactionToInsert = (TransactionEntityInputModel)TransactionInputModelMock.transactionInputModel.Clone();
            _transferToInsert    = (TransferInputModel)TransferInputModelMock.transactionInputModel.Clone();
        }
コード例 #3
0
        public async ValueTask <ActionResult <TransactionEntityOutputModel> > DepositTransactionInsert(TransactionEntityInputModel transactionEntityInputModel)
        {
            string URIdeposit    = $"api/transaction/deposit";
            string URIgetBalance = $"api/transaction/balance/{transactionEntityInputModel.Account.Id}";
            var    account       = await _accountRepository.GetAccountById(transactionEntityInputModel.Account.Id);

            if (!account.IsOkay)
            {
                return(Problem($"Request failed {account.ExMessage}", statusCode: 520));
            }
            if (account.RequestData == null)
            {
                return(NotFound($"AccountId: {transactionEntityInputModel.Account.Id} not found"));
            }
            var balance = await RequestSender.SendRequest <AccountBalanceOutputModel>(_urlOptions.Value.TransactionStoreApiUrl, URIgetBalance, Method.GET);

            if (balance == null)
            {
                return(Problem($"Request failed", statusCode: 520));
            }
            transactionEntityInputModel.TimeStamp = balance.Data.TimeStamp;

            var result = await RequestSender.SendRequest <TransactionEntityOutputModel>(_urlOptions.Value.TransactionStoreApiUrl, URIdeposit, Method.POST, transactionEntityInputModel);

            if (result.StatusCode != System.Net.HttpStatusCode.OK)
            {
                return(Problem($"Transaction failed: {result.Content}", statusCode: (int)result.StatusCode));
            }
            return(result.Data);
        }
コード例 #4
0
        public async ValueTask <ActionResult <TransactionEntityOutputModel> > Withdraw(TransactionEntityInputModel inputModel)
        {
            if (inputModel.TimeStamp == null)
            {
                return(BadRequest("TimeStamp should not be null!"));
            }
            if (inputModel.Amount < 0)
            {
                return(BadRequest("Withdraw amount must be more than zero!"));
            }
            inputModel.Amount = -inputModel.Amount;
            var result = await _transactionRepository.DepositOrWithdraw(_mapper.Map <TransactionEntity>(inputModel));

            if (result.IsOkay)
            {
                return(Ok(_mapper.Map <TransactionEntityOutputModel>(result.RequestData)));
            }
            if (result.exMessage == "A timestamp constraint violation occurred.")
            {
                return(Conflict($"Transaction failed: {result.exMessage}"));
            }
            return(Problem($"Transaction failed {result.exMessage}", statusCode: 520));
        }
コード例 #5
0
        public async ValueTask <ActionResult <TransactionEntityOutputModel> > Initialize(TransactionEntityInputModel inputModel)
        {
            var result = await _transactionRepository.InitializeTransaction(_mapper.Map <TransactionEntity>(inputModel));

            if (result.IsOkay)
            {
                return(Ok(_mapper.Map <TransactionEntityOutputModel>(result.RequestData)));
            }
            return(Problem($"Transaction failed: {result.exMessage}", statusCode: 520));
        }