@RequestMapping(
      value = {"/welcome"},
      method = RequestMethod.GET)
  public ModelAndView defaultPage(Locale locale, HttpServletRequest request) {
    logger.info("Welcome to welcome Page. The client locale is {}.", locale);
    Contact contact = new Contact();
    // check if user is login
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    if (auth instanceof UsernamePasswordAuthenticationToken) {
      UserDetails userDetail = (UserDetails) auth.getPrincipal();

      String username = userDetail.getUsername();
      logger.info("username taken from SecurityContext " + username);
      User user = userService.getUserByUsername(username);
      if (user != null) {
        Utils.populateContact(user, contact);
      }
      logger.info("Contact object populated with username " + contact.getUsername());
    }
    ModelAndView mav = new ModelAndView("userMain");
    mav.addObject("countriesMap", Utils.getCountriesMap());
    mav.addObject("command", contact);
    mav.addObject(
        DashboardSessionManagmentFilter.SESSION_AUTHENTICATION_PARAM_NAME,
        filter.generateSecurityToken(request, encoder));

    return mav;
  }
  @RequestMapping(
      value = "/dashboard/updateuser",
      method = RequestMethod.POST,
      produces = MediaType.APPLICATION_JSON_VALUE,
      consumes = MediaType.APPLICATION_JSON_VALUE)
  public @ResponseBody String updateUserProfile(
      @RequestBody String contactObjectJSON, ModelMap model, HttpServletRequest request) {

    logger.info("Updating User Profile for JSON" + contactObjectJSON);

    if (filter.isUserSessionExpired(request, encoder)) {
      return "You session has expired. Please login again to proceed!!";
    }

    Contact contact = null;
    try {
      contact = Utils.getContactObjectFromJSON(contactObjectJSON);

      logger.info("Updating User Profile for username = "******"Error in updating user details in database.";
    }
    model.addAttribute("command", contact);
    return "true";
  }
  @RequestMapping(value = "/dashboard/uploadFilePage", method = RequestMethod.GET)
  public ModelAndView loadUploadFileForm(Locale locale, HttpServletRequest request) {
    logger.info("Welcome to Upload Page. The client locale is {}.", locale);

    ModelAndView mav = new ModelAndView("uploadFilePage");
    mav.addObject(
        DashboardSessionManagmentFilter.SESSION_AUTHENTICATION_PARAM_NAME,
        filter.generateSecurityToken(request, encoder));
    return mav;
  }