public async Task <AccountWithdrawalResults> Handle(AccountWithdrawalCommand command, CancellationToken cancellationToken)
        {
            try
            {
                _logger.LogInformation("Deposit transaction process started.");

                //check account
                BalanceInquiryModel acctBalance = new BalanceInquiryModel();
                acctBalance = await _accountService.BalanceInquiry(command.AcctId);

                if (acctBalance == null)
                {
                    return(new AccountWithdrawalResults
                    {
                        StatusCode = Convert.ToInt32(HttpStatusCode.OK),
                        Message = Convert.ToString(HttpStatusCode.OK),
                        MessageDetails = ManageAccountStatus.InvalidAccountNumber
                    });
                }

                if (command.TransactionAmount > acctBalance.AvailableBalance)
                {
                    return(new AccountWithdrawalResults
                    {
                        StatusCode = Convert.ToInt32(HttpStatusCode.OK),
                        Message = Convert.ToString(HttpStatusCode.OK),
                        MessageDetails = ManageAccountStatus.InsufficientFunds
                    });
                }

                AccountWithdrawalModel acctWithdrawal = new AccountWithdrawalModel();

                acctWithdrawal.AcctId            = command.AcctId;
                acctWithdrawal.TransactionType   = command.TransactionType;
                acctWithdrawal.TransactionAmount = command.TransactionAmount;

                await _accountService.AccountWithdrawal(acctWithdrawal);

                return(new AccountWithdrawalResults
                {
                    StatusCode = Convert.ToInt32(HttpStatusCode.OK),
                    Message = Convert.ToString(HttpStatusCode.OK),
                    MessageDetails = ManageAccountStatus.WithdrawalSuccess,
                    TranId = acctWithdrawal.TranId
                });
            }
            catch (Exception ex)
            {
                _logger.LogError("Error saving withdrawal transaction : {ExceptionMessage}", ex.ToString());

                return(new AccountWithdrawalResults
                {
                    StatusCode = Convert.ToInt32(HttpStatusCode.InternalServerError),
                    Message = Convert.ToString(HttpStatusCode.InternalServerError),
                    MessageDetails = ManageAccountStatus.WithdrawalFailed
                });
            }
        }
Esempio n. 2
0
        public async Task <BalanceInquiryResult> Handle(BalanceInquiryQuery query, CancellationToken cancellationToken)
        {
            try
            {
                BalanceInquiryModel acctBalance = new BalanceInquiryModel();
                acctBalance = await _accountService.BalanceInquiry(query.AcctId);

                if (acctBalance != null)
                {
                    return(new BalanceInquiryResult
                    {
                        StatusCode = Convert.ToInt32(HttpStatusCode.OK),
                        Message = Convert.ToString(HttpStatusCode.OK),
                        MessageDetails = ManageAccountStatus.BalanceInquirySuccess,
                        AcctId = acctBalance.AcctId,
                        FirstName = acctBalance.FirstName,
                        MiddleName = acctBalance.MiddleName,
                        LastName = acctBalance.LastName,
                        AccountNumber = acctBalance.AccountNumber,
                        AccountType = acctBalance.AccountType,
                        InitialAmountDeposit = acctBalance.InitialAmountDeposit,
                        AvailableBalance = acctBalance.AvailableBalance
                    });
                }
                else
                {
                    return(new BalanceInquiryResult
                    {
                        StatusCode = Convert.ToInt32(HttpStatusCode.OK),
                        Message = Convert.ToString(HttpStatusCode.OK),
                        MessageDetails = ManageAccountStatus.InvalidAccountNumber
                    });
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Error retrieving account details : {ExceptionMessage}", ex.ToString());

                return(new BalanceInquiryResult
                {
                    StatusCode = Convert.ToInt32(HttpStatusCode.InternalServerError),
                    Message = Convert.ToString(HttpStatusCode.InternalServerError),
                    MessageDetails = ManageAccountStatus.BalanceInquiryFailed
                });
            }
        }