/** * Add a new gnome to the customers basket * * @param username The name of the user * @param currentAmount Amount of the new gnome * @param currentColor Color of the new gnome * @return a updated list with all basket items */ public List<BasketDTO> addToBasket(String username, Integer currentAmount, String currentColor) { if (updateInventory(currentColor, currentAmount, false) == true) { List<Integer> list = em.createNamedQuery("findBasketGnome") .setParameter("cus", username) .setParameter("col", currentColor) .getResultList(); Integer aprice = (Integer) em.createNamedQuery("findGnomePrice") .setParameter("col", currentColor) .getSingleResult(); aprice = aprice * currentAmount; BasketDTO basketitem; if (!list.isEmpty()) { basketitem = em.find(Basket.class, list.get(0)); basketitem.setAmount(basketitem.getAmount() + currentAmount); basketitem.setTotalPrice(basketitem.getTotalPrice() + aprice); em.merge(basketitem); } else { List<Integer> id = em.createNamedQuery("countRows").getResultList(); if (id.isEmpty()) { basketitem = new Basket(username, currentColor, currentAmount, 1, aprice); } else { int size = id.size(); size++; basketitem = new Basket(username, currentColor, currentAmount, size, aprice); } em.persist(basketitem); } } return getBasket(username); }
/** * Returns the basket items to the inventory * * @param username The name of the user * @return a null basket */ public List<BasketDTO> returnBasket(String username) { List<Integer> list = em.createNamedQuery("findBasketGnomes").setParameter("cus", username).getResultList(); BasketDTO basketgnome; for (int i = 0; i < list.size(); i++) { basketgnome = em.find(Basket.class, list.get(i)); updateInventory(basketgnome.getColor(), basketgnome.getAmount(), true); } emptyBasket(username); return null; }