@RequestMapping(FoUrls.PERSONAL_ORDER_LIST_URL)
  public ModelAndView customerWishList(final HttpServletRequest request, final Model model)
      throws Exception {
    ModelAndViewThemeDevice modelAndView =
        new ModelAndViewThemeDevice(
            getCurrentVelocityPath(request), FoUrls.PERSONAL_ORDER_LIST.getVelocityPage());
    final RequestData requestData = requestUtil.getRequestData(request);
    final Customer customer = requestData.getCustomer();

    final Customer reloadedCustomer =
        customerService.getCustomerById(
            customer.getId(), FetchPlanGraphCustomer.fullCustomerFetchPlan());

    List<OrderPurchase> orderPurchases =
        orderPurchaseService.findOrdersByCustomerId(reloadedCustomer.getId().toString());
    if (orderPurchases != null && orderPurchases.size() > 0) {
      String url = requestUtil.getCurrentRequestUrl(request);

      String sessionKey = "PagedListHolder_Search_List_Product_" + request.getSession().getId();
      String page = request.getParameter(Constants.PAGINATION_PAGE_PARAMETER);
      PagedListHolder<OrderViewBean> orderViewBeanPagedListHolder;

      if (StringUtils.isEmpty(page)) {
        orderViewBeanPagedListHolder =
            initList(request, sessionKey, orderPurchases, new PagedListHolder<OrderViewBean>());
      } else {
        orderViewBeanPagedListHolder =
            (PagedListHolder) request.getSession().getAttribute(sessionKey);
        if (orderViewBeanPagedListHolder == null) {
          orderViewBeanPagedListHolder =
              initList(request, sessionKey, orderPurchases, orderViewBeanPagedListHolder);
        }
        int pageTarget = new Integer(page).intValue() - 1;
        int pageCurrent = orderViewBeanPagedListHolder.getPage();
        if (pageCurrent < pageTarget) {
          for (int i = pageCurrent; i < pageTarget; i++) {
            orderViewBeanPagedListHolder.nextPage();
          }
        } else if (pageCurrent > pageTarget) {
          for (int i = pageTarget; i < pageCurrent; i++) {
            orderViewBeanPagedListHolder.previousPage();
          }
        }
      }
      model.addAttribute(Constants.PAGINATION_PAGE_URL, url);
      model.addAttribute(Constants.PAGINATION_PAGE_PAGED_LIST_HOLDER, orderViewBeanPagedListHolder);
    }

    Object[] params = {customer.getLastname(), customer.getFirstname()};
    overrideDefaultMainContentTitle(
        request, modelAndView, FoUrls.PERSONAL_ORDER_LIST.getKey(), params);

    return modelAndView;
  }
  @RequestMapping(FoUrls.PERSONAL_ORDER_DETAILS_URL)
  public ModelAndView removeFromWishlist(final HttpServletRequest request, final Model model)
      throws Exception {
    ModelAndViewThemeDevice modelAndView =
        new ModelAndViewThemeDevice(
            getCurrentVelocityPath(request), FoUrls.PERSONAL_ORDER_DETAILS.getVelocityPage());
    final RequestData requestData = requestUtil.getRequestData(request);
    final String orderPurchaseId =
        request.getParameter(RequestConstants.REQUEST_PARAMETER_CUSTOMER_ORDER_GUID);
    if (StringUtils.isNotEmpty(orderPurchaseId)) {
      final OrderPurchase orderPurchase = orderPurchaseService.getOrderById(orderPurchaseId);
      if (orderPurchase != null) {
        // SANITY CHECK

        final Customer currentCustomer = requestData.getCustomer();

        // WE RELOAD THE CUSTOMER FOR THE PERSISTANCE PROXY FILTER
        // IT AVOIDS LazyInitializationException: could not initialize proxy - no Session
        final Customer reloadedCustomer =
            customerService.getCustomerByLoginOrEmail(currentCustomer.getLogin());

        List<OrderPurchase> orderPurchases =
            orderPurchaseService.findOrdersByCustomerId(reloadedCustomer.getId().toString());
        if (orderPurchases.contains(orderPurchase)) {
          return modelAndView;
        } else {
          logger.warn(
              "Customer, "
                  + reloadedCustomer.getId()
                  + "/"
                  + reloadedCustomer.getEmail()
                  + ", try to acces to a customer order, "
                  + orderPurchaseId
                  + ", which does not belong");
        }
      }
    }
    final String url = requestUtil.getLastRequestUrl(request);
    return new ModelAndView(new RedirectView(url));
  }