@GET @Path("{id}") @Produces(MediaType.APPLICATION_JSON) public DataProducto getProducto(@PathParam(value = "id") Long id) { Producto p = em.find(Producto.class, id); return p.getDataProducto(); }
@GET @Path("") @Produces(MediaType.APPLICATION_JSON) public List<DataProducto> getProductos(@QueryParam("generico") Boolean generico) { TypedQuery<Producto> query = em.createNamedQuery("Producto.findAll", Producto.class); List<Producto> prods = query.getResultList(); List<DataProducto> ret = new ArrayList<DataProducto>(); for (Producto p : prods) { if (generico == null || generico.equals(p.getGenerico())) { ret.add(p.getDataProducto()); } } return ret; }
// User || admin @POST @Path("/create") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response addProducto(@QueryParam("mongo") Boolean mongo, DataProducto dp) { Producto p = new Producto(); p.setNombre(dp.getNombre()); p.setDescripcion(dp.getDescripcion()); Categoria cat = em.find(Categoria.class, dp.getCategoria()); if (cat == null) { DataResponse dr = new DataResponse(); dr.setMensaje("Categoria " + dp.getCategoria() + " no existe"); return Response.status(500).entity(dr).build(); } p.setCategoria(cat); p.setGenerico(dp.getIsgenerico()); try { em.persist(p); em.flush(); dp.setID(p.getId()); // MONGO if (mongo == null || mongo) new MongoController().upsertProduct(dp); return Response.status(201).entity(dp).build(); } catch (Exception e) { DataResponse dr = new DataResponse(); dr.setMensaje("Error inesperado."); dr.setDescripcion(e.getMessage()); return Response.status(409).build(); } }
@POST @Path("{id}/imagenes/remove") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response removeImages(@PathParam(value = "id") Long id, List<String> images) { try { Producto p = em.find(Producto.class, id); List<String> images_old = new ArrayList<>(); if (p.getImagenes() != null && !p.getImagenes().equals("")) { images_old = Arrays.asList(p.getImagenes().split(",")); } HashSet<String> set = new HashSet<>(images_old); set.removeAll(images); String joined = String.join(",", set); p.setImagenes(joined); // update doc mongo DataProducto dp = p.getDataProducto(); new MongoController().upsertProduct(dp); return Response.status(200).entity(dp).build(); } catch (Exception e) { e.printStackTrace(); DataResponse dr = new DataResponse(); dr.setMensaje("Error remover imagenes"); dr.setDescripcion("Problema en mongodb"); return Response.status(500).entity(dr).build(); } }
// if producto generico admin // else user @PUT @Path("{id}") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response updateProducto(@PathParam(value = "id") Long id, DataProducto dp) { Producto p = em.find(Producto.class, id); p.setNombre(dp.getNombre()); p.setDescripcion(dp.getDescripcion()); p.setGenerico(dp.getIsgenerico()); Categoria cat = em.find(Categoria.class, dp.getCategoria()); if (cat == null) { DataResponse dr = new DataResponse(); dr.setMensaje("Categoria " + dp.getCategoria() + " no existe"); return Response.status(500).entity(dr).build(); } p.setCategoria(cat); em.merge(p); // mongo thread dp.setID(p.getId()); new MongoController().upsertProduct(dp); return Response.status(200).build(); }
@POST @Path("{id}/tags/remove") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response removeTag(@PathParam(value = "id") Long id, List<String> tag) { Producto p = em.find(Producto.class, id); List<String> tags_old = new ArrayList<>(); if (p.getTags() != null && !p.getTags().equals("")) { tags_old = Arrays.asList(p.getTags().split(",")); } HashSet<String> set = new HashSet<>(tags_old); set.removeAll(tag); String joined = String.join(",", set); p.setTags(joined); // Mongo DataProducto dp = p.getDataProducto(); new MongoController().upsertProduct(dp); return Response.status(200).entity(tag).build(); }
@POST @Path("/unificar") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response doGenerico(DataUnificar du) { Producto nuevo = new Producto(); nuevo.setNombre(du.getNombre()); nuevo.setCategoria(em.find(Categoria.class, du.getCategoria())); nuevo.setDescripcion(du.getDescripcion()); nuevo.setGenerico(true); nuevo.setCarritoProductos(new ArrayList<CarritoProducto>()); for (Long productoid : du.getProductos()) { Producto p = em.find(Producto.class, productoid); nuevo.getCarritoProductos().addAll(p.getCarritoProductos()); nuevo.getReportesMovimientoStocks().addAll(p.getReportesMovimientoStocks()); nuevo.getStocks().addAll(p.getStocks()); } return Response.status(200).build(); }