package org.beesden.shop.view; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.beesden.shop.model.Basket; import org.beesden.shop.model.BasketItem; import org.beesden.shop.model.Category; import org.beesden.shop.model.Variant; import org.beesden.shop.service.BasketService; import org.beesden.utils.Utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/") public class BasketView extends View { @Autowired protected Basket basket; @RequestMapping(value = "/checkout/basket/add", method = RequestMethod.POST) public String addToBasket(HttpServletRequest request, ModelMap model) { logger.info("Updating shopping basket"); Long start = System.currentTimeMillis(); Map<String, Object> config = getConfig(request); // Create a new basket item BasketItem basketItem = new BasketItem(); String variantId = request.getParameter("variantId"); String quantity = request.getParameter("quantity"); String dbQuery = variantService.getQuery(variantId, null, 1, null); Variant addItem = variantService.findOne(dbQuery); // Add item to the basket if (addItem != null) { basketItem.setQuantity(Utils.isNumeric(quantity) && Integer.parseInt(quantity) > 0 ? Integer.parseInt(quantity) : 1); basketItem.setVariant(addItem); basket = basketService.addProduct(request, basket, basketItem); } return isAjax(model, request, "checkout.updatebasket", config, start); } @RequestMapping(value = "/checkout/basket", method = RequestMethod.GET) public String showBasket(HttpServletRequest request, ModelMap model) { logger.info("Shopping basket requested"); Long start = System.currentTimeMillis(); Map<String, Object> config = getConfig(request); // Add basket and cross sale items to model String crossSale = config.get("crossSaleId").toString(); if (!Boolean.parseBoolean(request.getParameter("ajax")) && Utils.isNumeric(crossSale)) { String dbQuery = categoryService.getQuery(crossSale, null, 1, null); Category promotions = categoryService.findOne(dbQuery); model = getPromos(model, promotions); } return isAjax(model, request, "checkout.basket", config, start); } @RequestMapping(value = "/checkout/basket/update") public String updateBasket(HttpServletRequest request, ModelMap model) { logger.info("Updating shopping basket"); Long start = System.currentTimeMillis(); Map<String, Object> config = getConfig(request); // Update basket item basket = BasketService.updateBasket(request, basket); return isAjax(model, request, "checkout.updatebasket", config, start); } }