From 70c96f0341971f74963be0655c1a33aa13cad835 Mon Sep 17 00:00:00 2001 From: xFractu Date: Sun, 12 May 2024 18:03:42 -0600 Subject: [PATCH] Funcionalidad de BackEnd Personalizar Pastel y Pedidos --- backend/src/main/java/mx/uv/App.java | 96 ++++++++++++++++++ backend/src/main/java/mx/uv/Conexion.java | 6 +- backend/src/main/java/mx/uv/DAO.java | 95 +++++++++++++++++ backend/src/main/java/mx/uv/Pasteles.java | 20 +++- .../src/main/java/mx/uv/Reservaciones.java | 83 --------------- backend/target/classes/mx/uv/App.class | Bin 10879 -> 14240 bytes backend/target/classes/mx/uv/Conexion.class | Bin 1575 -> 1565 bytes backend/target/classes/mx/uv/DAO.class | Bin 9710 -> 13000 bytes backend/target/classes/mx/uv/Pasteles.class | Bin 2732 -> 2993 bytes .../target/classes/mx/uv/Reservaciones.class | Bin 2591 -> 0 bytes 10 files changed, 211 insertions(+), 89 deletions(-) delete mode 100644 backend/src/main/java/mx/uv/Reservaciones.java delete mode 100644 backend/target/classes/mx/uv/Reservaciones.class diff --git a/backend/src/main/java/mx/uv/App.java b/backend/src/main/java/mx/uv/App.java index c7bdb36..6dd7a1a 100644 --- a/backend/src/main/java/mx/uv/App.java +++ b/backend/src/main/java/mx/uv/App.java @@ -353,6 +353,102 @@ public class App + //Hacer Reservaciones: + + post("/frontend/hacerPedidoPastel1", (request, response) -> { + response.type("application/json"); + String payload = request.body(); + + try { + JsonElement jsonElement = JsonParser.parseString(payload); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + + // Obtener los datos del pastel del JSON recibido + String textoEncima = jsonObject.get("textoEncima").getAsString(); + String textoCantidad = jsonObject.get("textoCantidad").getAsString(); + String textoRelleno = jsonObject.get("textoRelleno").getAsString(); + String textoTipo = jsonObject.get("textoTipo").getAsString(); + + System.out.println("tamaño: " + textoCantidad); + + // Crear un nuevo objeto Pasteles y asignar los valores recibidos + Pasteles reservacion = new Pasteles(); + reservacion.setIdPedido(UUID.randomUUID().toString()); + reservacion.setIdUsuario(idG); // Asignar el ID del usuario (¿De dónde obtienes idG?) + reservacion.setIdPastel("1"); // Asignar el ID del pastel (¿De dónde obtienes este valor?) + reservacion.setIdNombre("Pastel de Fresas"); // Asignar el nombre recibido desde el frontend + reservacion.setIdPrecio("1,000"); // Asignar el precio del pastel (¿De dónde obtienes este valor?) + reservacion.setIdTamaño(textoCantidad); // Asignar el tamaño recibido desde el frontend + reservacion.setStatus("en proceso"); // Asignar el estado "en proceso" + reservacion.setInscripcion(textoEncima); // Asignar la inscripción recibida desde el frontend + reservacion.setTipoRelleno(textoRelleno); // Asignar el tipo de relleno recibido desde el frontend + + // Puedes realizar acciones adicionales con la información de la reservación + System.out.println("Reservación: " + reservacion); + + // Lógica para hacer la reservación en la base de datos + String mensaje = DAO.hacerPedido(reservacion); + + // Crear la respuesta + JsonObject respuesta = new JsonObject(); + respuesta.addProperty("msj", mensaje); + + return gson.toJson(respuesta); + } catch (JsonSyntaxException e) { + // Manejar errores de formato JSON + System.out.println("Error en el formato JSON: " + e.getMessage()); + response.status(400); // Bad Request + return gson.toJson("Error en el formato JSON"); + } catch (Exception e) { + // Manejar otros errores + System.out.println("Error en la reservación: " + e.getMessage()); + response.status(500); // Internal Server Error + return gson.toJson("Error en la reservación"); + } + }); + + post("/frontend/obtenerPedidosDePasteles", (request, response) -> { + response.type("application/json"); + + // Obtener el ID del usuario desde la variable global + String idUsuario = idG; + + // Obtener los pedidos de pasteles para el usuario + List pedidosDePasteles = DAO.damePedidosDePastelesPorUsuario(idUsuario); + + int numeroDePedidos = pedidosDePasteles.size(); + + System.out.println("Número de pedidos de pasteles: " + numeroDePedidos); + + // Construir un objeto JSON con los pedidos de pasteles + JsonArray pedidosArray = new JsonArray(); + for (Pasteles pedido : pedidosDePasteles) { + JsonObject pedidoJson = new JsonObject(); + pedidoJson.addProperty("id_pedido", pedido.getIdPedido()); + pedidoJson.addProperty("id_usuario", pedido.getIdUsuario()); + pedidoJson.addProperty("id_pastel", pedido.getIdPastel()); + pedidoJson.addProperty("nombre_pastel", pedido.getIdNombre()); + pedidoJson.addProperty("precio", pedido.getIdPrecio()); + pedidoJson.addProperty("tamaño", pedido.getIdTamaño()); + pedidoJson.addProperty("estatus", pedido.getStatus()); + pedidoJson.addProperty("inscripcion", pedido.getInscripcion()); + pedidoJson.addProperty("relleno", pedido.getTipoRelleno()); + pedidosArray.add(pedidoJson); + } + + // Crear el objeto final que contiene todos los pedidos de pasteles + JsonObject responseJson = new JsonObject(); + responseJson.add("pedidos_de_pasteles", pedidosArray); + + System.out.println(responseJson); + return responseJson.toString(); + }); + + + + + + } diff --git a/backend/src/main/java/mx/uv/Conexion.java b/backend/src/main/java/mx/uv/Conexion.java index 806857c..08228ce 100644 --- a/backend/src/main/java/mx/uv/Conexion.java +++ b/backend/src/main/java/mx/uv/Conexion.java @@ -5,10 +5,10 @@ import java.sql.DriverManager; import java.sql.SQLException; public class Conexion { - private static String url = "jdbc:mysql://127.0.0.1:3306/dbpastel"; + private static String url = "jdbc:mysql://127.0.0.1:3306/dbpastel00"; private static String driverName = "com.mysql.cj.jdbc.Driver"; - private static String username = "root"; - private static String password = "cesarin_11"; + private static String username = "pastel00"; + private static String password = "pastel00"; // variable de conexion private static Connection connection = null; diff --git a/backend/src/main/java/mx/uv/DAO.java b/backend/src/main/java/mx/uv/DAO.java index aee3d70..f4aa148 100644 --- a/backend/src/main/java/mx/uv/DAO.java +++ b/backend/src/main/java/mx/uv/DAO.java @@ -271,6 +271,8 @@ public class DAO { } } + + public static Usuario obtenerDatosUsuario(String id) { PreparedStatement stm = null; Connection conn = null; @@ -316,5 +318,98 @@ public class DAO { } } } + + + + public static String hacerPedido(Pasteles pasteles) { + PreparedStatement stm = null; + Connection conn = null; + String mensaje = ""; + + conn = Conexion.getConnection(); + try { + String sql = "INSERT INTO pedidos (idUsuario, idPastel, precio, tamaño, estatus, inscripcion, relleno) VALUES (?,?,?,?,?,?,?)"; + stm = conn.prepareStatement(sql); + stm.setString(1, pasteles.getIdUsuario()); + stm.setString(2, pasteles.getIdPastel()); + stm.setString(3, pasteles.getIdPrecio()); + stm.setString(4, pasteles.getIdTamaño()); + stm.setString(5, pasteles.getStatus()); + stm.setString(6, pasteles.getInscripcion()); + stm.setString(7, pasteles.getTipoRelleno()); + + if (stm.executeUpdate() > 0) + mensaje = "Pedido realizado con éxito"; + else + mensaje = "No se pudo realizar el pedido"; + + } catch (SQLException e) { + System.out.println("Error al ejecutar la consulta: " + e.getMessage()); + } finally { + if (stm != null) { + try { + stm.close(); + } catch (SQLException e) { + System.out.println("Error al cerrar el statement: " + e.getMessage()); + } + } + if (conn != null) { + try { + conn.close(); + } catch (SQLException e) { + System.out.println("Error al cerrar la conexión: " + e.getMessage()); + } + } + } + return mensaje; + } + + public static List damePedidosDePastelesPorUsuario(String idUsuario) { + System.out.println("ENTRO AL METODO: damePedidosDePastelesPorUsuario"); + Connection conn = null; + PreparedStatement pstmt = null; + ResultSet rs = null; + List resultado = new ArrayList<>(); + + try { + conn = Conexion.getConnection(); + String sql = "SELECT p.idPedido, p.idUsuario, p.idPastel, pastel.nombreP as nombre_pastel, pastel.precio, " + + "p.tamaño, p.estatus, p.inscripcion, p.relleno " + + "FROM pedidos p " + + "JOIN pasteles pastel ON p.idPastel = pastel.id " + + "WHERE p.idUsuario = ?"; + pstmt = conn.prepareStatement(sql); + pstmt.setString(1, idUsuario); + rs = pstmt.executeQuery(); + while (rs.next()) { + Pasteles pastel = new Pasteles( + rs.getString("idPedido"), + rs.getString("idUsuario"), + rs.getString("idPastel"), + rs.getString("nombre_pastel"), + rs.getString("precio"), + rs.getString("tamaño"), + rs.getString("estatus"), + rs.getString("inscripcion"), + rs.getString("relleno") + ); + resultado.add(pastel); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if (rs != null) rs.close(); + if (pstmt != null) pstmt.close(); + if (conn != null) conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + return resultado; + +} + } \ No newline at end of file diff --git a/backend/src/main/java/mx/uv/Pasteles.java b/backend/src/main/java/mx/uv/Pasteles.java index e52cd7e..c486690 100644 --- a/backend/src/main/java/mx/uv/Pasteles.java +++ b/backend/src/main/java/mx/uv/Pasteles.java @@ -4,6 +4,7 @@ public class Pasteles { String idPedido; String idUsuario; + String idPastel; String idNombre; String idPrecio; String idTamaño; @@ -27,10 +28,18 @@ public class Pasteles { this.idUsuario = idUsuario; } + public String getIdPastel() { + return idPastel; + } + + public void setIdPastel(String idPastel) { + this.idPastel = idPastel; + } + public String getIdNombre() { return idNombre; } - + public void setIdNombre(String idNombre) { this.idNombre = idNombre; } @@ -76,7 +85,7 @@ public class Pasteles { } public String toString() { - return "Pasteles [idPedido=" + idPedido + ", idUsuario=" + idUsuario + ", idNombre=" + idNombre + ", idPrecio=" + idPrecio + return "Pasteles [idPedido=" + idPedido + ", idUsuario=" + idUsuario + ", idPastel=" + idPastel + ", idNombre=" + idNombre + ", idPrecio=" + idPrecio + ", idTamaño=" + idTamaño + ", status=" + status + ", inscripcion=" + inscripcion + ", tipoRelleno=" + tipoRelleno + "]"; } @@ -84,10 +93,11 @@ public class Pasteles { } - public Pasteles(String idPedido, String idUsuario, String idNombre, String idPrecio, String idTamaño, + public Pasteles(String idPedido, String idUsuario, String idPastel, String idNombre, String idPrecio, String idTamaño, String status, String inscripcion, String tipoRelleno) { this.idPedido = idPedido; this.idUsuario = idUsuario; + this.idPastel = idPastel; this.idNombre = idNombre; this.idPrecio = idPrecio; this.idTamaño = idTamaño; @@ -95,4 +105,8 @@ public class Pasteles { this.inscripcion = inscripcion; this.tipoRelleno = tipoRelleno; } + + } + + diff --git a/backend/src/main/java/mx/uv/Reservaciones.java b/backend/src/main/java/mx/uv/Reservaciones.java deleted file mode 100644 index 8b86203..0000000 --- a/backend/src/main/java/mx/uv/Reservaciones.java +++ /dev/null @@ -1,83 +0,0 @@ -package mx.uv; - -public class Reservaciones { - - String idR; - String idU; - String idH; - String nombre; - String precio; - String checkIn; - String checkOut; - String personas; - public String getIdR() { - return idR; - } - public void setIdR(String idR) { - this.idR = idR; - } - public String getIdU() { - return idU; - } - public void setIdU(String idU) { - this.idU = idU; - } - public String getIdH() { - return idH; - } - public void setIdH(String idH) { - this.idH = idH; - } - public String getNombre() { - return nombre; - } - public void setNombre(String nombre) { - this.nombre = nombre; - } - public String getPrecio() { - return precio; - } - public void setPrecio(String precio) { - this.precio = precio; - } - public String getCheckIn() { - return checkIn; - } - public void setCheckIn(String checkIn) { - this.checkIn = checkIn; - } - public String getCheckOut() { - return checkOut; - } - public void setCheckOut(String checkOut) { - this.checkOut = checkOut; - } - public String getPersonas() { - return personas; - } - public void setPersonas(String personas) { - this.personas = personas; - } - - public String toString() { - return "Reservaciones [id=" + idR + ", nombre=" + nombre + ", precio=" + precio + ", checkIn=" + checkIn + ", checkOut=" + checkOut + ", personas=" + personas +"]"; - } - - public Reservaciones(){ - - } - - public Reservaciones(String idR, String idU, String idH, String nombre, String precio, String checkIn, - String checkOut, String personas) { - this.idR = idR; - this.idU = idU; - this.idH = idH; - this.nombre = nombre; - this.precio = precio; - this.checkIn = checkIn; - this.checkOut = checkOut; - this.personas = personas; - } - - -} \ No newline at end of file diff --git a/backend/target/classes/mx/uv/App.class b/backend/target/classes/mx/uv/App.class index c41e3cc2d03d01a23d626c10a68e184e18833fa6..61d6a5345806db43a02e74294282887b84e57c2f 100644 GIT binary patch literal 14240 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 PPQC#AmbgpoCI5c_0B3D1 literal 10879 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 S4SAD0QCHe;$=mWSg8v2D^}sFw diff --git a/backend/target/classes/mx/uv/Conexion.class b/backend/target/classes/mx/uv/Conexion.class index d2b87c56bc9b220dfaac668c2eb78f89a39f88bc..ab0f6110d0df40ee52e705581645d53ce01177fd 100644 GIT binary patch delta 584 zcmY+AU2hUW6o%i~1qSFuw1yHv+AXfo;s>i@u~2L2m(_k)L|f6AxM?;9gHYK`)5Jvo zf@H2uysPm_w-Fmnyfx`R@XlK=`WLi^)tGoOXP)!ElR0nBj(9D?`@cSa1(3&sPWT;5 zcRuQhVRXJ1Qo&8rcC3bBguoCN2qMsTh@t7&c5TTP9s)3VJlCNRlymEpKIrQXV|w(Cu&>a;EMslYW%$={0Zn`Vf~7iw%M zh*<`|R;?@*!zg2(!eXjN3j#NAQ$AEn!7`Qvma!t=sQTzC1D|czx2$%N<2FOon`1v~ z`ZD#`BsoALz|ngm zJoZD!Y3f2qBSXp&;&1SI-kOW(9!Az(9CLBPMPd)-;;+3qAt}tlRZhgyf%Np)5B*GEx&4xjL%sk(4o_Y0F zQ^Q)Ya$d;_RoU-J?I6u|F!-L1C?O|)Dyf%4AqJgh7>CIoq1YhL$VUph(Ek=wsD?=m zK@0y=fRh-ZD26;vQ6^~q1|{Uyd?fZzSod+%$8jI&J)EW4J}&fCy129rbAj;OCsb>F zGrO28baB0ln<149sE}FykMS}1j+6r#p@0%h$-rSRkyQ_#v|ExJ%Jwh-!rH V(K`g$)?n2%toD<}`;?OK;5T-TbkYC- diff --git a/backend/target/classes/mx/uv/DAO.class b/backend/target/classes/mx/uv/DAO.class index c045081f9b45b35948f0c827007a2d76da575655..6f486b9ae4d0d58659c56de1d34e194e0859124a 100644 GIT binary patch delta 3318 zcmb7GdvH{D89gW2$4z#DkO(9tz~xy&UfA%k8xTtgHg>bYBv7#Jge7|kOE=kdcf+Go zxGlDoI*wHW*j5o|m`a&(I<(9LBWlNCq}JMzRtLsEWIFYMqSjj5`Y0uydv`Y^YOPMP zdr!Xa-0ye3-~G=0<@MWtXqEox+PA+4U2-m2edB7Sc) zmNa{k{pQ&dyW-iTK@c+{Ni$=asR5<(q_k-z^1JM3kxfk79^DabOho&88#}YwGHpf^rnTMb8OTP{W+LjWk{L*3qam}Dq%VkxxLAsA8bOvgT1(YN zo0Z8#do70$2r|eCgfE&(S^Y7heqlJj=-|dcaPVkRnVny>+2KzLvdk%CWRp2XrRZdN z5F2pO;D?BrqoOokX-QH?&Ky{MR)02R8l3tcI62wYuK3wg{UKAuQ~5C@%EEn3<0i9N zjmM&WR&IMUYplY^u1lu#Q>l3#Y!6J4cJG9NY&_8zj%TvEZ&@Ka*yWvU7w&8RXtTi? z#Nw7nS4X>fOW15{>1too9x^{*8H2NkOPwv@mRq~bRD+!0`a@0-9yN%YaNAMBy*BhG z`?jQQYn>U*m@c-ubD2>_!Aq%zQ8%R;M*XCc*XPh#F7GLGZAW|Cs7q7kC)!&h`8BOf z9+>S4Ia+O3i@CBODjqZMxUHq5WvqH-R~ekG2U2Lx;9MDGv^|6Kb4jbNrTKK#FK+B`sWW`@|VBQr(((m z!kfxu`?Ai$t}bHEV8lBuFy@I5Rt9SsJhdixV46JzMVtx`D`D^k1UMZPtj2WC#9W%F z=Nv5KT&&?dbZ|a4a{>BUgEX74gG+HAm*D{}$0KaUqg;W5T#2tLe^mKn%AZjFY2}BM z|BmwCSN;Xo;zc&#$85w;SBrR2#9xT`nuu3Kd_%;yMSPEoF`}&?o9N|I2Dpr6T+T{1 zb0$~lVXV}qt~&MQc@f$rcn!bQi=_l8ei9z|0Ul+TZRNWo-@=Tx@?V8Kbyc2W>?uOH z*0X2`zZu3u#i;cP{yqnNg0JVGU+~X4Xb8TQgJllmuX*fH{*lAOun!VnLrM92k>j{f zKBDjQA`7z8X=75(Wa;jr-7z zBRGa{==wZf!g*Z-cwA=~bSz!Ph~D8Q7ihA&*~U(8&~+#G@P6@%F&VHignB*l7LD^- zjq}IhXRF5fc1&Uzm2A^EN6^4_+{|?v=TD-Y9k`R7=;eB(RB#73VmCj9y}T2T^KKkr zw?=p~o?;Yd8N>73ikH}nSGY|RdKcal=N)mba`qo~VsIn^W5KfVT>dvi&Yuu5;9BIG)s?mD

sys5r| z<}jLyATXx@<`uw#0$5l8s*xkBOb#>@z+xAi=1n1Am8Z%#jMYWBqkb5-5l`47hmT`R z$Xn$d!Vl`tp+xbGgsf1aLbAF1bB_$~+IUOIs4~Pmj*TJz`;aRNOjW^)e~aW8J7Ef3v~6?_06<36<7Z{2{jm86_VaW2 zl8A@-d3;?ro!}RA9z2RuJb>?VP^LPFmw5;mco>)XMZBu`6~*6D{2C9jn1^ZbF-bkZ zDIC=Q90w)(5E~S4;uEfSQhHNpG3S`tu08^qamO+`j74248x^UK8_|Q9%u}g@try$W z^K9&QZREvalgFn_*aU~vH`&5_#7+!TMd+yOmZstKz>9z Iig@!s0qPzg?EnA( delta 240 zcmWO1F-t-L7)IguNJ3p3G^4CU%qxYJg?JTIT%s*-@E5eSIy4AE5RFYiH3kh$EkOtl z5<**W@7jgP$w`Jc8tiP#{JTmlE5Q Pn~kjsb7)|LJ`Mi?&q^+w diff --git a/backend/target/classes/mx/uv/Pasteles.class b/backend/target/classes/mx/uv/Pasteles.class index 98e471dc9994b0a680df948a68fdb5dd2b15a472..949eadfea0fd8ec06730fc54c801df5e0903ddd7 100644 GIT binary patch literal 2993 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