Beispiel #1
0
        public IActionResult GetAccountDetailsAsync([FromBody] GetAccountDetailDto account, Guid customerId)
        {
            var result = _account.GetAccountDetailsAsync(account, customerId);

            if (result.ResponseMessage.Equals("Account Retrieved Successfully"))
            {
                return(Ok(result));
            }
            return(BadRequest(result.ResponseMessage));
        }
        public GetAccountDetailsResponse GetAccountDetailsAsync(GetAccountDetailDto transfer, Guid customerId)
        {
            try
            {
                var sourceAccount = _context.Accounts.Where(c => c.AccountNo == transfer.AccountNo).SingleOrDefault();
                if (sourceAccount == null)
                {
                    return(new GetAccountDetailsResponse
                    {
                        ResponseMessage = "Invalid Source Account or Source Account not found"
                    });
                }
                var destinationAccount = _context.Accounts.Where(c => c.AccountNo == transfer.DestinationAccount).SingleOrDefault();
                if (destinationAccount == null)
                {
                    return(new GetAccountDetailsResponse
                    {
                        ResponseMessage = "Invalid Destination Account or Destination Account not found"
                    });
                }
                var checkIfAccountNumberBelongsToCustomer = _context.Accounts.Where(c => c.CustomerId == customerId).Select(c => c.AccountNo).ToList();
                var verifyContain = checkIfAccountNumberBelongsToCustomer.Contains(transfer.AccountNo);
                if (!verifyContain)
                {
                    return(new GetAccountDetailsResponse
                    {
                        ResponseMessage = "The account number you provided is not vaild, or the account number is not your account number"
                    });
                }
                var transactionDetails = _context.Accounts.Where(c => c.AccountNo == transfer.AccountNo).Select(d => new GetAccountDetailsResponse
                {
                    SourceAccount          = sourceAccount.AccountNo,
                    SourceAccountName      = sourceAccount.AccountName,
                    SourceAccountType      = _context.Accounts.Where(c => c.AccountCategoryId == sourceAccount.AccountCategoryId).Select(c => c.AccountCategory.Name).FirstOrDefault(),
                    DestinationAccount     = destinationAccount.AccountNo,
                    DestinationAccountName = destinationAccount.AccountName,
                    DestinationAccountType = _context.Accounts.Where(c => c.AccountCategoryId == destinationAccount.AccountCategoryId).Select(c => c.AccountCategory.Name).FirstOrDefault(),
                    Amount              = transfer.Amount,
                    ResponseMessage     = "Account Retrieved Successfully",
                    DestinationBankName = _context.Accounts.Where(c => c.AccountNo == destinationAccount.AccountNo).Select(c => c.Bank.BankName).FirstOrDefault(),
                    SourceBankName      = _context.Accounts.Where(c => c.AccountNo == sourceAccount.AccountNo).Select(c => c.Bank.BankName).FirstOrDefault(),
                }).SingleOrDefault();
                return(transactionDetails);
            }
            catch (Exception ex)
            {
                return(new GetAccountDetailsResponse
                {
                    ResponseMessage = ex.Message
                });

                throw ex;
            }
        }