@RequestMapping(value = "/userBooking", method = RequestMethod.GET)
  public String bookingCart(Model model, HttpSession session) {
    if (!SessionUtils.isUser(session)) {
      return "index";
    }
    UserDAO userDAO = (UserDAO) context.getBean("userDAO");
    User user = userDAO.get(SessionUtils.getUserIdFromSessionOrNull(session));
    CartDAO cartDAO = (CartDAO) context.getBean("cartDAO");
    Cart cart = cartDAO.getUserCart(user);

    ArrayList<CartBooking> bookings = createBookingsToDisplay(cart);
    model.addAttribute("bookings", bookings);
    model.addAttribute("user", user);

    return "userBooking";
  }
  @ResponseBody
  @RequestMapping(value = "/userBooking/book", method = RequestMethod.POST)
  public String book(
      @RequestParam String type,
      @RequestParam String pizzeria,
      @RequestParam String date,
      @RequestParam String time,
      Model model,
      HttpSession session) {

    SimpleDateFormat sdfDate = new SimpleDateFormat("dd/M/yyyy");
    SimpleDateFormat sdfTime = new SimpleDateFormat("hh:mm");
    Date d = null;
    Date t = null;
    try {
      d = sdfDate.parse(date);
      t = sdfTime.parse(time);

    } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    DateFormat dateFormat = new SimpleDateFormat("dd/M/yyyy hh:mm");
    Date today = new Date();
    if (today.getTime() > d.getTime() + t.getTime()) return "dateError";
    // set correctly date
    UserDAO userDAO = (UserDAO) context.getBean("userDAO");
    BookingDAO bookingDAO = (BookingDAO) context.getBean("bookingDAO");
    CartDAO cartDAO = (CartDAO) context.getBean("cartDAO");
    PizzeriaDAO pizzeriaDAO = (PizzeriaDAO) context.getBean("pizzeriaDAO");
    OrderItemDAO orderItemDAO = (OrderItemDAO) context.getBean("orderItemDAO");

    User user = userDAO.get(SessionUtils.getUserIdFromSessionOrNull(session));
    Cart cart = cartDAO.getUserCart(user);
    ArrayList<OrderItem> toBook = itemToBook(pizzeria, cart);
    Pizzeria pizzerias = pizzeriaDAO.getByName(pizzeria);
    Booking booking = createBooking(type);
    booking.setConfirmed(false);
    booking.setDate(d);
    booking.setTime(t);
    booking.setPizzeria(pizzerias);
    booking.setUser(user);

    if (booking instanceof BookingDelivery)
      ((BookingDelivery) booking).setDeliveryAddress(user.getAddress());
    booking.setBill(BookingUserDisplayUtils.calculateBill(toBook));

    bookingDAO.create(booking);

    for (OrderItem orderItem : toBook) {
      orderItem.setBooking(booking);
      orderItem.setCart(null);
      if (orderItem instanceof PizzaOrderItem)
        OrderItemUtils.setPizzaOrderCost((PizzaOrderItem) orderItem, pizzerias);
      else if (orderItem instanceof BeverageOrderItem)
        OrderItemUtils.setBeverageOrderCost((BeverageOrderItem) orderItem, pizzerias);
      orderItemDAO.update(orderItem);
    }
    booking.setOrderItems(toBook);
    bookingDAO.update(BookingUtils.calculateBill(booking, pizzerias));
    // ArrayList<CartBooking> bookings = createBookingsToDisplay(cart);
    // model.addAttribute("bookings", bookings);
    model.addAttribute("user", user);
    return "{\"success\" : true}";
  }