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; } }