コード例 #1
0
  @Override
  public void borrarProductosCarrito(String username, int idproducto) {

    session = sessionFactory.openSession();
    Transaction transaction = null;
    try {

      transaction = session.beginTransaction();

      Producto producto = (Producto) session.get(Producto.class, idproducto);
      Pedido p = getPedidoCarritoSinSession(username);

      if (p != null) {

        List<LineaPedido> lp =
            session
                .createCriteria(LineaPedido.class)
                .add(Restrictions.eq("pedido", p))
                .add(Restrictions.eq("producto", producto))
                .list();

        if (lp.size() != 0) {

          int cantidad_productos = lp.get(0).getCantidad();

          // Si hay mas de 1 producto en el carrito, se borra sólo el producto del carrito
          if (p.getLineasPedido().size() > 1) {
            session.delete(lp.get(0));
            // Si sólo hay 1 producto en el carrito, se borra el producto del carrito y el carrito
          } else {
            session.delete(lp.get(0));
            session.delete(p);
          }

          producto.setCantidad(producto.getCantidad() + cantidad_productos);
          session.save(producto);
        }
      }

      transaction.commit();

    } catch (HibernateException e) {
      transaction.rollback();
      e.printStackTrace();
    } finally {
      session.close();
    }
  }
コード例 #2
0
  @Override
  public void restaProductosCarrito(String username, int idproducto) {

    session = sessionFactory.openSession();
    Transaction transaction = null;
    try {

      transaction = session.beginTransaction();

      Producto producto = (Producto) session.get(Producto.class, idproducto);
      Pedido p = getPedidoCarritoSinSession(username);

      if (p != null) {

        List<LineaPedido> lp =
            session
                .createCriteria(LineaPedido.class)
                .add(Restrictions.eq("pedido", p))
                .add(Restrictions.eq("producto", producto))
                .list();

        if (lp.size() != 0) {
          // si hay mas de una unidad del producto se resta una unidad a la cantidad de producto
          if (lp.get(0).getCantidad() > 1) {
            lp.get(0).setCantidad(lp.get(0).getCantidad() - 1);
            session.save(lp.get(0));
            producto.setCantidad(producto.getCantidad() + 1);
            session.save(producto);
            transaction.commit();
            session.close();
          } else {
            transaction.commit();
            session.close();
            borrarProductosCarrito(username, idproducto);
          }
        }
      }

    } catch (HibernateException e) {
      transaction.rollback();
      e.printStackTrace();
    }
  }
コード例 #3
0
  @Override
  public void addProductosCarrito(String username, int idproducto) {

    session = sessionFactory.openSession();
    Transaction transaction = null;
    try {

      transaction = session.beginTransaction();

      Usuario usuario = (Usuario) session.get(Usuario.class, username);
      Producto producto = (Producto) session.get(Producto.class, idproducto);

      Pedido p = getPedidoCarritoSinSession(username);

      Pedido pedido = new Pedido();
      LineaPedido lineapedido = new LineaPedido();
      lineapedido.setCantidad(1);
      lineapedido.setPrecio(producto.getPrecio());

      // Si no se ha creado el carrito lo creamos
      if (p == null) {
        producto.addLineaPedido(lineapedido);
        pedido.addLineaPedido(lineapedido);
        pedido.setConfirmado(false);
        usuario.addPedido(pedido);
        session.save(usuario);
        session.save(producto);
        session.save(pedido);
        session.save(lineapedido);
      } else {

        List<LineaPedido> lp =
            session
                .createCriteria(LineaPedido.class)
                .add(Restrictions.eq("pedido", p))
                .add(Restrictions.eq("producto", producto))
                .list();

        // Si se quiere añadir al carrito un producto del que aún no hay ninguna unidad, se añade
        if (lp.size() == 0) {
          p.addLineaPedido(lineapedido);
          producto.addLineaPedido(lineapedido);
          session.save(p);
          session.save(producto);
          session.save(lineapedido);
          // Si ya hay unidades del producto, se suma una unidad del producto a la tabla
          // LineaPedidos
        } else {
          lp.get(0).setCantidad(lp.get(0).getCantidad() + 1);
          session.save(lp.get(0));
        }
      }

      // Actualizamos la tabla productos
      producto.setCantidad(producto.getCantidad() - 1);
      session.save(producto);

      transaction.commit();

    } catch (HibernateException e) {

      transaction.rollback();
      e.printStackTrace();
    } finally {
      session.close();
    }
  }