@RequestMapping(
      value = "/viewBal",
      method = {RequestMethod.POST, RequestMethod.GET})
  public ModelAndView viewBalance(HttpServletRequest request, HttpSession session) {
    ModelAndView model = new ModelAndView();
    LoginHandler handler = new LoginHandler();
    String userName = "";
    userName = (String) session.getAttribute("USERNAME");
    String role = (String) session.getAttribute("Role");
    try {
      if (role != null
          && !role.isEmpty()
          && (role.equalsIgnoreCase("USER") || role.equalsIgnoreCase("MERCHANT"))) {
        ResultSet rs = handler.requestBalance(userName);
        List<AccountDetails> acntdetails = new ArrayList<AccountDetails>();

        try {
          while (rs.next()) {
            AccountDetails details = new AccountDetails();
            details.setAccountNumber(rs.getString("accountnumber"));
            details.setAccountType(rs.getString("accounttype"));
            details.setBalance(rs.getDouble("balance"));
            acntdetails.add(details);
          }
          model.addObject("accountDetails", acntdetails);
          rs.close();

        } catch (SQLException e) {
          model.addObject("accountDetails", "");
          try {
            if (!userName.isEmpty() || !userName.equalsIgnoreCase(null)) {
              handler.updateLoggedInFlag(userName, 0);
            }
          } catch (Exception e1) {
            session.invalidate();
            model.setViewName("index");
          }
          session.invalidate();
          model.setViewName("index");
          e.printStackTrace();
        }

        model.setViewName("viewBalance");
      } else {
        if (!userName.isEmpty() || !userName.equalsIgnoreCase(null)) {
          handler.updateLoggedInFlag(userName, 0);
        }
        session.invalidate();
        model.setViewName("index");
      }
    } catch (Exception e) {
      session.invalidate();
      model.setViewName("index");
    }

    return model;
  }
 private void getAccountNumbers(ModelAndView model, String userName, HttpSession session) {
   LoginHandler handler = new LoginHandler();
   ResultSet rs = handler.requestBalance(userName);
   List<String> accountNumbers = new ArrayList<String>();
   try {
     while (rs.next()) {
       accountNumbers.add(rs.getString("accountnumber"));
     }
     model.addObject("accountNumbers", accountNumbers);
     rs.close();
   } catch (SQLException e) {
     try {
       if (!userName.isEmpty() || !userName.equalsIgnoreCase(null)) {
         handler.updateLoggedInFlag(userName, 0);
       }
     } catch (Exception e1) {
       session.invalidate();
       model.setViewName("index");
     }
     session.invalidate();
     model.setViewName("index");
     e.printStackTrace();
   }
 }
  @RequestMapping(
      value = "**/creditAndDebitFull**",
      method = {RequestMethod.POST, RequestMethod.GET})
  public ModelAndView editCreditAndDebit(HttpServletRequest request, HttpSession session) {

    ModelAndView model = null;
    model = new ModelAndView();
    String userName = "";
    userName = (String) session.getAttribute("USERNAME");
    if (request.getParameter("submit") != null) {
      String option = request.getParameter("transaction");
      String accountNum = request.getParameter("transactions");
      String amount = request.getParameter("amount");
      try {
        double am = Double.parseDouble(amount);
        if (am > 0) {
          LoginHandler handler = new LoginHandler();
          ResultSet rs = handler.requestBalance(userName);
          double balance = 0;
          try {
            while (rs.next()) {
              if (rs.getString("accountNumber").equals(accountNum)) {
                balance = rs.getDouble("balance");
              }
            }

            double finalBalance = balance;
            if (option.equalsIgnoreCase("debit") && (Double.parseDouble(amount) > finalBalance)) {
              model.addObject("insuffFunds", "The Account has insufficient funds");
              getAccountNumbers(model, userName, session);
              model.setViewName("creditAndDebit");
            } else {
              int random = (new Random()).nextInt(900000) + 100000;
              // Date date=new Date();
              boolean flag1 = false;
              boolean flag2 = false;
              if (option.equalsIgnoreCase("debit")) {
                logger.error(
                    "Insereting the requested debit transacation for the user "
                        + userName
                        + " for amount:"
                        + amount);
                flag1 =
                    handler.insertTransactionDetails(
                        userName,
                        random,
                        amount,
                        accountNum,
                        "",
                        TimeUtility.generateSysDateMethod(),
                        option,
                        "pendingapproval");
                logger.error(
                    "Succesfully inserted the requested debit transacation for the user "
                        + userName
                        + " for amount:"
                        + amount);
                balance = balance - Double.parseDouble(amount);
                flag2 = handler.updateBalance(accountNum, balance, userName);
                logger.error("Successfully updated the balance of the user:"******"credit")) {
                logger.error(
                    "Insereting the requested debit transacation for the user "
                        + userName
                        + " for amount:"
                        + amount);
                flag1 =
                    handler.insertTransactionDetails(
                        userName,
                        random,
                        amount,
                        "",
                        accountNum,
                        TimeUtility.generateSysDateMethod(),
                        option,
                        "pendingapproval");
                logger.error(
                    "Succesfully inserted the requested debit transacation for the user "
                        + userName
                        + " for amount:"
                        + amount);
                balance = balance + Double.parseDouble(amount);
                // flag2=handler.updateBalance(accountNum,balance,userName);
                logger.error("Successfully updated the balance of the user:"******"Transaction is Sucess");
                model.setViewName("customerhome");
              } else {
                logger.error("Transaction is failed");
                model.setViewName("customerhome");
              }
            }
            rs.close();
          } catch (SQLException e) {
            try {
              if (!userName.isEmpty() || !userName.equalsIgnoreCase(null)) {
                handler.updateLoggedInFlag(userName, 0);
              }
            } catch (Exception e1) {
              session.invalidate();
              model.setViewName("index");
            }
            session.invalidate();
            model.setViewName("index");
            e.printStackTrace();
          }
        } else {
          model.addObject("emptyFields", "Amount Field has invalid input");
          getAccountNumbers(model, userName, session);
          model.setViewName("creditAndDebit");
        }
      } catch (NumberFormatException nfe) {
        model.addObject("emptyFields", "Amount Field has invalid input");
        getAccountNumbers(model, userName, session);
        model.setViewName("creditAndDebit");
      }
    }
    return model;
  }