From d53a8663684da61e313fa3fea57eccaf47527873 Mon Sep 17 00:00:00 2001 From: Daniel Arroyo Date: Thu, 5 Jan 2023 16:08:40 -0300 Subject: [PATCH] entregado detalle y orden, bloqueo de orden pagada --- README.md | 2 + .../playa/controller/LoginController.java | 4 +- .../playa/controller/OrdenController.java | 16 +++++++ .../playa/controller/ProductoController.java | 8 ++-- .../java/api/menu/playa/dao/OrdenDAO.java | 3 ++ .../api/menu/playa/helper/OrdenHelper.java | 44 +++++++++++++++++++ .../java/api/menu/playa/model/Detalle.java | 11 +++++ src/main/java/api/menu/playa/model/Orden.java | 11 +++++ .../api/menu/playa/vo/CambioCantidadVO.java | 9 ++++ .../java/api/menu/playa/vo/DetalleVO.java | 7 +++ src/main/java/api/menu/playa/vo/OrdenVO.java | 9 ++++ .../java/api/menu/playa/vo/RegistroVO.java | 7 +++ src/main/resources/application.properties | 2 +- 13 files changed, 127 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e3c5f39..62222e6 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,9 @@ echo $! > pid kill -9 `cat pid` ``` +## Faltantes +eliminacion de una orden # api-menu-playa Project diff --git a/src/main/java/api/menu/playa/controller/LoginController.java b/src/main/java/api/menu/playa/controller/LoginController.java index de80bbc..a2415c4 100644 --- a/src/main/java/api/menu/playa/controller/LoginController.java +++ b/src/main/java/api/menu/playa/controller/LoginController.java @@ -115,13 +115,15 @@ public class LoginController { if (request.getUser() == null || request.getUser().isEmpty()) { throw new NegocioException("el campo usuario debe ser ingresado", 2); } + if (request.getNombre() == null || request.getNombre().isEmpty()) { + throw new NegocioException("el campo nombre debe ser ingresado", 2); + } if (request.getPass() == null || request.getPass().isEmpty()) { throw new NegocioException("el campo contreseña debe ser ingresado", 2); } if (request.getPass2() == null || request.getPass2().isEmpty()) { throw new NegocioException("el campo confirmar contraseña debe ser ingresado", 2); } - if (!request.getPass().equals(request.getPass2())) { throw new NegocioException("los campos de contraseña no son iguales", 2); } diff --git a/src/main/java/api/menu/playa/controller/OrdenController.java b/src/main/java/api/menu/playa/controller/OrdenController.java index dc9c9c0..cdd65e0 100644 --- a/src/main/java/api/menu/playa/controller/OrdenController.java +++ b/src/main/java/api/menu/playa/controller/OrdenController.java @@ -14,7 +14,9 @@ import api.menu.playa.vo.ProductoIdVO; import api.menu.playa.vo.ResponseGlobal; import java.util.List; +import java.util.Optional; +import javax.annotation.security.PermitAll; import javax.annotation.security.RolesAllowed; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; @@ -34,6 +36,8 @@ public class OrdenController { private static final String SUCCESS = "SUCCESS"; //private static final String ERROR = "ERROR"; + //@Inject + //JsonWebToken jwt; @Inject @@ -91,6 +95,8 @@ public class OrdenController { @Path("/detail") public Response detail( CambioCantidadVO vo) { + //Optional userOptional = jwt.claim("preferred_username"); + try { ordenHelper.cambiar(vo); return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build(); @@ -123,5 +129,15 @@ public class OrdenController { return Response.ok(new ResponseGlobal<>(0, SUCCESS, orden)).build(); } + + @PermitAll + @GET + @Path("/getall/pedidos") + public Response getAllPrdidos() { + + List ordenes = ordenHelper.obtenerPedidos(); + + return Response.ok(new ResponseGlobal<>(0, SUCCESS, ordenes)).build(); + } } diff --git a/src/main/java/api/menu/playa/controller/ProductoController.java b/src/main/java/api/menu/playa/controller/ProductoController.java index 08df47b..0461e70 100644 --- a/src/main/java/api/menu/playa/controller/ProductoController.java +++ b/src/main/java/api/menu/playa/controller/ProductoController.java @@ -34,7 +34,7 @@ public class ProductoController { @Inject ProductoHelper productoHelper; - @RolesAllowed({"ADMIN", "USER"}) + @RolesAllowed({"ADMIN"}) @POST @Path("/create") public Response crearProducto(ProductoVO productoVO) { @@ -44,7 +44,7 @@ public class ProductoController { return Response.ok(new ResponseGlobal<>(0, SUCCESS)).build(); } - @RolesAllowed({"ADMIN", "USER"}) + @RolesAllowed({"ADMIN"}) @PUT @Path("/update") public Response actualizarProducto(ProductoVO productoVO) { @@ -59,7 +59,7 @@ public class ProductoController { } } - @RolesAllowed({"ADMIN", "USER"}) + @RolesAllowed({"ADMIN"}) @GET @Path("/get/{id}") public Response getProducto(@PathParam("id") Long id) { @@ -94,7 +94,7 @@ public class ProductoController { return Response.ok(new ResponseGlobal<>(0, SUCCESS, productos)).build(); } - @RolesAllowed({"ADMIN", "USER"}) + @RolesAllowed({"ADMIN"}) @DELETE @Path("/delete/{id}") public Response delete(@PathParam("id") Long id) { diff --git a/src/main/java/api/menu/playa/dao/OrdenDAO.java b/src/main/java/api/menu/playa/dao/OrdenDAO.java index 6f53165..8a8b1a6 100644 --- a/src/main/java/api/menu/playa/dao/OrdenDAO.java +++ b/src/main/java/api/menu/playa/dao/OrdenDAO.java @@ -11,5 +11,8 @@ public interface OrdenDAO extends JpaRepository { @Query("select o from Orden o where o.eliminado = false order by o.fechaCreacion desc") List getAll(); + + @Query("select o from Orden o where o.eliminado = false and o.entregado = false order by o.fechaCreacion asc") + List getAllPedidos(); } diff --git a/src/main/java/api/menu/playa/helper/OrdenHelper.java b/src/main/java/api/menu/playa/helper/OrdenHelper.java index 9ec56ca..fb61d6f 100644 --- a/src/main/java/api/menu/playa/helper/OrdenHelper.java +++ b/src/main/java/api/menu/playa/helper/OrdenHelper.java @@ -71,6 +71,13 @@ public class OrdenHelper { Optional orden = ordenDAO.findById(vo.getOrden()); + if (orden.isPresent()) { + if (EstadoOrdenEnum.PAGADO.equals(orden.get().getEstado())) { + throw new NegocioException("No se puede agregar productos a una orden pagada", 2); + } + } + + if (orden.isEmpty()) { throw new NegocioException("Orden no encontrada", 2); } @@ -113,9 +120,36 @@ public class OrdenHelper { } detalle.get().setDescuento(vo.getDescuento()); + detalle.get().setEntregado(vo.getEntregado()); detalleDAO.save(detalle.get()); + evaluarProductosEntregados(detalle.get().getOrden().getId()); + + } + + private void evaluarProductosEntregados(Long idOrden) throws NegocioException { + + Optional orden = ordenDAO.findById(idOrden); + + if (orden.isEmpty()) { + throw new NegocioException("Orden no encontrada", 2); + } + + boolean detallesPagados = true; + + for (Detalle detalle: orden.get().getDetalle()) { + + if (Boolean.FALSE.equals(detalle.getEntregado())) { + detallesPagados = false; + } + } + + if (detallesPagados) { + orden.get().setEntregado(Boolean.TRUE); + ordenDAO.save(orden.get()); + } + } private List mapperOrden(List ordenes) { @@ -138,6 +172,7 @@ public class OrdenHelper { ordenVO.setFecha(orden.getFechaCreacion()); ordenVO.setEstado(orden.getEstado()); ordenVO.setMedio(orden.getMedioPago()); + ordenVO.setEntregado(orden.getEntregado()); Integer total = 0; @@ -177,6 +212,8 @@ public class OrdenHelper { detalleVO.setId(detalle.getId()); detalleVO.setPrecio(detalle.getPrecio().getPrecio()); detalleVO.setDescuento(detalle.getDescuento()); + detalleVO.setEntregado(detalle.getEntregado()); + return detalleVO; } @@ -202,5 +239,12 @@ public class OrdenHelper { } + + public List obtenerPedidos() { + + List ordenes = ordenDAO.getAllPedidos(); + + return mapperOrden(ordenes); + } } diff --git a/src/main/java/api/menu/playa/model/Detalle.java b/src/main/java/api/menu/playa/model/Detalle.java index 2ca6b0f..761cec7 100644 --- a/src/main/java/api/menu/playa/model/Detalle.java +++ b/src/main/java/api/menu/playa/model/Detalle.java @@ -38,6 +38,9 @@ public class Detalle extends AbstractGeneral{ @Column(name = "descuento") private Integer descuento = 0; + @Column(name = "entregado") + private Boolean entregado = false; + public Long getId() { return id; } @@ -85,5 +88,13 @@ public class Detalle extends AbstractGeneral{ public void setDescuento(Integer descuento) { this.descuento = descuento; } + + public Boolean getEntregado() { + return entregado; + } + + public void setEntregado(Boolean entregado) { + this.entregado = entregado; + } } diff --git a/src/main/java/api/menu/playa/model/Orden.java b/src/main/java/api/menu/playa/model/Orden.java index 85d0c27..f501aa9 100644 --- a/src/main/java/api/menu/playa/model/Orden.java +++ b/src/main/java/api/menu/playa/model/Orden.java @@ -37,6 +37,9 @@ public class Orden extends AbstractGeneral{ @OneToMany(mappedBy = "orden") private List detalle; + @Column(name = "entregado") + private Boolean entregado = false; + @Override public Long getId() { return id; @@ -69,5 +72,13 @@ public class Orden extends AbstractGeneral{ public void setDetalle(List detalle) { this.detalle = detalle; } + + public Boolean getEntregado() { + return entregado; + } + + public void setEntregado(Boolean entregado) { + this.entregado = entregado; + } } diff --git a/src/main/java/api/menu/playa/vo/CambioCantidadVO.java b/src/main/java/api/menu/playa/vo/CambioCantidadVO.java index 49d0855..67b7154 100644 --- a/src/main/java/api/menu/playa/vo/CambioCantidadVO.java +++ b/src/main/java/api/menu/playa/vo/CambioCantidadVO.java @@ -5,6 +5,7 @@ public class CambioCantidadVO { private Long detalle; private Integer dato; private Integer descuento; + private Boolean entregado; public Long getDetalle() { return detalle; @@ -29,5 +30,13 @@ public class CambioCantidadVO { public void setDescuento(Integer descuento) { this.descuento = descuento; } + + public Boolean getEntregado() { + return entregado; + } + + public void setEntregado(Boolean entregado) { + this.entregado = entregado; + } } diff --git a/src/main/java/api/menu/playa/vo/DetalleVO.java b/src/main/java/api/menu/playa/vo/DetalleVO.java index 1a29d48..325f8c8 100644 --- a/src/main/java/api/menu/playa/vo/DetalleVO.java +++ b/src/main/java/api/menu/playa/vo/DetalleVO.java @@ -8,6 +8,7 @@ public class DetalleVO { private Integer cantidad; private Integer precio; private Integer descuento; + private Boolean entregado; public String getNombre() { return nombre; @@ -45,5 +46,11 @@ public class DetalleVO { public void setDescuento(Integer descuento) { this.descuento = descuento; } + public Boolean getEntregado() { + return entregado; + } + public void setEntregado(Boolean entregado) { + this.entregado = entregado; + } } diff --git a/src/main/java/api/menu/playa/vo/OrdenVO.java b/src/main/java/api/menu/playa/vo/OrdenVO.java index db14c56..0ee813d 100644 --- a/src/main/java/api/menu/playa/vo/OrdenVO.java +++ b/src/main/java/api/menu/playa/vo/OrdenVO.java @@ -13,6 +13,7 @@ public class OrdenVO { private LocalDateTime fecha; private EstadoOrdenEnum estado; private MedioPagoEnum medio; + private Boolean entregado; private List detalles; @@ -64,6 +65,14 @@ public class OrdenVO { this.medio = medio; } + public Boolean getEntregado() { + return entregado; + } + + public void setEntregado(Boolean entregado) { + this.entregado = entregado; + } + diff --git a/src/main/java/api/menu/playa/vo/RegistroVO.java b/src/main/java/api/menu/playa/vo/RegistroVO.java index c3a5673..5f80c19 100644 --- a/src/main/java/api/menu/playa/vo/RegistroVO.java +++ b/src/main/java/api/menu/playa/vo/RegistroVO.java @@ -5,6 +5,7 @@ public class RegistroVO { private String user; private String pass; private String pass2; + private String nombre; public String getUser() { return user; @@ -24,6 +25,12 @@ public class RegistroVO { public void setPass2(String pass2) { this.pass2 = pass2; } + public String getNombre() { + return nombre; + } + public void setNombre(String nombre) { + this.nombre = nombre; + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 2a2fae1..8967b29 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,7 +3,7 @@ quarkus.http.port=${MS_PORT:8181} quarkus.http.root-path=/beach quarkus.http.cors=true -quarkus.http.cors.origins=http://localhost:4200 +#quarkus.http.cors.origins=http://localhost:4200 quarkus.http.host=0.0.0.0