-
1 Sesión
-
handleClickPrice(1)}>
- {'$ ' + parseFloat(precio).toFixed(0)}
+
+
+
+
Descripción
+
+
{servicio}
+
{descripcion}
+
+
+
+
+
+
+
+
1 Sesión
+
handleClickPrice(1)}>
+ {'$ ' + parseFloat(precio).toFixed(0)}
+
+
+
+
5 Sesiones
+
handleClickPrice(2)}>
+ {'$ ' + parseFloat(precio * 5).toFixed(0)}
+
+
+
+
10 Sesiones
+
handleClickPrice(3)}>
+ {'$ ' + parseFloat(precio * 10).toFixed(0)}
+
-
-
-
5 Sesiones
-
handleClickPrice(2)}>
- {'$ ' + parseFloat(precio * 5).toFixed(0)}
-
-
-
-
10 Sesiones
-
handleClickPrice(3)}>
- {'$ ' + parseFloat(precio * 10).toFixed(0)}
-
diff --git a/client/src/pages/perfil/Suscripciones.jsx b/client/src/pages/perfil/Suscripciones.jsx
index fffc0f7e..e7ba7867 100644
--- a/client/src/pages/perfil/Suscripciones.jsx
+++ b/client/src/pages/perfil/Suscripciones.jsx
@@ -4,12 +4,15 @@ import { IoIosArrowBack } from "react-icons/io";
import { ToastContainer, toast } from 'react-toastify';
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faCircleExclamation } from "@fortawesome/free-solid-svg-icons";
+import { faCircleExclamation, faX, faTriangleExclamation } from "@fortawesome/free-solid-svg-icons";
function Suscripciones() {
const [nombre, setNombre] = useState(false); //<<< PARA EL INICIO DE SESION
const [correo, setCorreo] = useState(false); //<<< PARA EL INICIO DE SESION
const [sus, setSus] = useState(false); //<<< PARA VERIFICAR SI ES MIEMBRO EL USUARIO
+ const [sure, setSure] = useState(false);
+ const [canceled, setCanceled] = useState(false);
+ const [succeed, setSucceed] = useState(false);
const [diaInicio, setDiaInicio] = useState('');
const [mesInicio, setMesInicio] = useState('');
@@ -20,7 +23,16 @@ function Suscripciones() {
const [semanaFinal, setSemanaFinal] = useState('');
const [diasFaltantes, setDiasFaltantes] = useState(0);
-
+ const [cobro, setCobro] = useState(false);
+ const handleCobro = () => {
+ setCobro(!cobro);
+ }
+
+ const cancelar = () => {
+ setSure(!sure);
+ cancelarSuscripcion();
+ setCanceled(!canceled);
+ }
@@ -99,10 +111,12 @@ function Suscripciones() {
if (respuesta2Json.suscripcion == false) {
// la suscripcion fue eliminada con exito
window.location.href = respuesta2Json.redirect;
+ setSucceed(true);
}
else {
// la suscripcion no fue eliminada, un toast que diga que no se pudo
toast(
{`Al parecer estamos teniendo problemas al cancelar tu suscripcion`}
);
+ setSucceed(false);
}
}
}
@@ -171,6 +185,15 @@ function Suscripciones() {
Renovar suscripción
+
+
+ Cobro automático
+
) : (
@@ -202,7 +225,7 @@ function Suscripciones() {
{sus ? (
<>
¿Estás seguro que quisieras cancelar tu suscripción? Una vez cancelada tu suscripción, los cambios son irreversibles.
-
Cancelar suscripción
+
setSure(!sure)}>Cancelar suscripción
>
) : (
<>
@@ -213,6 +236,48 @@ function Suscripciones() {
+ {sure &&
+
+
+
+
setSure(!sure)}/>
+
+
+
¿Estás segura de cancelar la suscripción?
+
+ Si da click en cancelar, no habrá retorno.
+ Aceptar
+
+
+
+ }
+ {canceled &&
+
+
+
+ {succeed ? (
+
+
+
+
+
+
+
+
+
+
¡Tu suscripción ha sido cancelada con éxito!
+
+ ) : (
+
+
+
Al parecer hubo un error a la hora de cancelar su suscripción
+
+ )}
+
setCanceled(!canceled)} className='w-max justify-self-center bg-[#EB5765] rounded-full text-white py-2 px-8'>Aceptar
+
+
+
+ }
);
}
diff --git a/client/src/txt.css b/client/src/txt.css
index 27cf0232..e29557f5 100644
--- a/client/src/txt.css
+++ b/client/src/txt.css
@@ -1,16 +1,16 @@
.toast{
width: 300px;
- height: 60px;
+ height: 44px;
background: #fff;
- margin: 10px 0;
+ margin: 3.5px 0;
box-shadow: 0 0 20px rgba(0,0,0,0.3);
display: flex;
- font-size: 14px;
+ font-size: 13px;
flex-direction: row;
align-items: center;
position: relative;
border-radius: 5px;
- padding: 2px;
+ padding: 0px 3px 0px 3px;
font-family:Verdana,Tahoma, sans-serif;
}
@@ -18,7 +18,9 @@
#process-img {
width: 100px;
height: 100px;
- animation: rotateAnimation 5s linear infinite; /* 5s para un ciclo completo, linear para un giro suave, infinite para que continúe girando indefinidamente */
+ animation: rotateAnimation 5s linear infinite;
+ /*5sparaunciclocompleto,linearparaungirosuave,infiniteparaquecontinúegirandoindefinidamente*/position: relative;
+
}
@@ -51,7 +53,9 @@
.toast #texto{
position: relative;
- min-width: 80%;
+ width: 80%;
+ justify-content: center;
+ align-items: center;
}
@@ -94,9 +98,9 @@
}
#toastBox{
- position: absolute;
- bottom: 30px;
- right: 30px;
+ position: fixed;
+ bottom: 10%;
+ right: 0;
display: flex;
align-items: flex-end;
flex-direction: column;
@@ -115,8 +119,3 @@
}
}
-#cancelar:hover{
- border-color: blue;
- color: blue;
-}
-
diff --git a/server/controllers/createAccount.controllers.js b/server/controllers/createAccount.controllers.js
index 6d8d7806..c616b7e5 100644
--- a/server/controllers/createAccount.controllers.js
+++ b/server/controllers/createAccount.controllers.js
@@ -11,7 +11,7 @@ const regex_apellidos = /[a-zA-Zá-úñ]{3,}/;
const regex_lada = /^\+?\d{1,3}$/;
const regex_telefono = /^(\d{9,10}|\d{2,3} \d{7}|\d{2,3} \d{3} \d{4}|\d{2,3}-\d{7}|\d{2,3}-\d{3}-\d{4})$/;
const regex_postal = /^\d{5}$/;
-const regex_numero = /^\S{1,10}$/;
+const regex_numero = /^\S*$/;
@@ -137,60 +137,54 @@ async function paso1(solicitud,respuesta){
// INICIO 2 CREAR UN ARREGLO QUE ALMACENARA CAMPOS SIN CONTESTAR
let campos_faltantes = [];
- if(!nombre){
+ if(!nombre || nombre==''){
campos_faltantes.push([nombre_id,'tu nombre']);
}
- if(!apodo){
+ if(!apodo || apodo==''){
campos_faltantes.push(apodo_id,'tu apodo');
}
- if(!paterno){
+ if(!paterno || paterno==''){
campos_faltantes.push([paterno_id,'tu apellido paterno']);
}
- if(!materno){
+ if(!materno || materno==''){
campos_faltantes.push([materno_id,'tu apellido materno']);
}
- if(!correo){
+ if(!correo || correo==''){
campos_faltantes.push([correo_id,'tu correo']);
}
- if(!lada){
- campos_faltantes.push([lada_id,'la lada de tu pais']);
+ if(!lada || lada==''){
+ campos_faltantes.push([lada_id,'la lada de tu país']);
}
- if(!telefono){
- campos_faltantes.push([telefono_id,'tu telefono']);
+ if(!telefono || telefono==''){
+ campos_faltantes.push([telefono_id,'tu teléfono']);
}
- if(!dia){
- campos_faltantes.push([dia_id,'el dia en que naciste']);
+ if(!año || año=='' || !mes || mes=='' || !dia || dia ==''){
+ campos_faltantes.push([dia_id,'']);
+ campos_faltantes.push([mes_id,'']);
+ campos_faltantes.push([año_id,'todos los campos correspondientes a fecha']);
}
- if(!mes){
- campos_faltantes.push([mes_id,'el mes en que naciste']);
- }
-
- if(!año){
- campos_faltantes.push([año_id,' el año en que naciste']);
- }
-
- if(!calle){
+ if(!calle || calle==''){
campos_faltantes.push([calle_id,'tu calle']);
}
- if(!colonia){
+ if(!colonia || colonia==''){
campos_faltantes.push([colonia_id,'tu colonia']);
}
- if(!numero){
- campos_faltantes.push([numero_id,'el numero de tu casa']);
+ if(!numero || numero==''){
+ campos_faltantes.push([numero_id,'el número de tu casa']);
}
- if(!codigo_postal){
- campos_faltantes.push([codigo_postal_id,'tu codigo postal']);
+ if(!codigo_postal || codigo_postal==''){
+ campos_faltantes.push([codigo_postal_id,'tu código postal']);
}
@@ -224,46 +218,40 @@ async function paso1(solicitud,respuesta){
if(nombre_valido == false){
- campos_invalidos.push([nombre_id, 'tu nombre no es valido']);
+ campos_invalidos.push([nombre_id, 'Tu nombre no es válido']);
}
if(paterno_valido == false){
- campos_invalidos.push([paterno_id,'tu apellido paterno no es valido']);
+ campos_invalidos.push([paterno_id,'Tu apellido paterno no es válido']);
}
if(materno_valido == false){
- campos_invalidos.push([materno_id,'tu apellido materno no es valido']);
+ campos_invalidos.push([materno_id,'Tu apellido materno no es válido']);
}
if(correo_valido == false){
- campos_invalidos.push([correo_id,'el correo ingresado no es valido']);
+ campos_invalidos.push([correo_id,'El correo ingresado no es válido']);
}
if(telefono_valido == false){
- campos_invalidos.push([telefono_id,'el telefono no es valido']);
+ campos_invalidos.push([telefono_id,'El teléfono no es válido']);
}
if(lada_valida == false){
- campos_invalidos.push([lada_id,'la lada de tu pais no es valida']);
+ campos_invalidos.push([lada_id,'La lada de tu país no es válida']);
}
if(regex_numero.test(numero) == false){
- campos_invalidos.push([numero_id,'el numero de tu casa no es valido ']);
+ campos_invalidos.push([numero_id,'El número de tu casa no es válido']);
}
if(postal_valido == false){
- campos_invalidos.push([codigo_postal_id,'tu codigo postal no es valido']);
+ campos_invalidos.push([codigo_postal_id,'Tu código postal no es válido']);
}
- try{
- var fecha = new Date(`${mes}/${dia}/${año}`);
- if(isNaN(fecha.getTime())){
- campos_invalidos.push([dia_id,'']);
- campos_invalidos.push([mes_id,'']);
- campos_invalidos.push([año_id,'']);
- }
-
- }catch(error){
+ let fecha_boolean = ValidarFecha(dia,mes,año);
+
+ if(fecha_boolean == false){
campos_invalidos.push([dia_id,'']);
campos_invalidos.push([mes_id,'']);
campos_invalidos.push([año_id,'']);
}
-
+
//FIN 3
@@ -291,10 +279,10 @@ async function paso1(solicitud,respuesta){
let repetidos = [];
if(fields.length > 0){
- repetidos.push([correo_id,'ya hay una cuenta con este correo']);
+ repetidos.push([correo_id,'Ya hay una cuenta con este correo']);
}
if(fieldsTelefono.length > 0){
- repetidos.push([telefono_id,'ya hay una cuenta con este telefono']);
+ repetidos.push([telefono_id,'Ya hay una cuenta con este teléfono']);
}
// FIN 4
@@ -404,7 +392,7 @@ async function paso2(solicitud,respuesta){
if(campos_vacios.length > 0){
respuesta.send({vacios:campos_vacios});
- console.log("no contestaste todos los campos");
+ console.log("No contestaste todos los campos");
}
else{
@@ -433,7 +421,7 @@ async function paso2(solicitud,respuesta){
if(campos_incorrectos.length > 0){
respuesta.send({incorrectos:campos_incorrectos});
- console.log("hubo campos incorrectos");
+ console.log("Hubo campos incorrectos");
}else{
@@ -517,19 +505,19 @@ async function paso3(solicitud,respuesta){
let regex_mayor = /\w{20,}/;
if(regex_numero.test(contraseña)==false){
- arreglo_regex.push("no tiene un numero");
+ arreglo_regex.push("no tiene un número");
}
if(regex_caracter_especial.test(contraseña)==false){
- arreglo_regex.push("no tiene un caracter especial");
+ arreglo_regex.push("no tiene un carácter especial");
}
if(regex_Mayuscula.test(contraseña)==false){
- arreglo_regex.push("no tiene una mayuscula");
+ arreglo_regex.push("no tiene una mayúscula");
}
if(regex_minuscula.test(contraseña)==false){
- arreglo_regex.push("no tiene una minuscula");
+ arreglo_regex.push("no tiene una minúscula");
}
if(regex_mayor.test(contraseña)==true){
@@ -612,6 +600,101 @@ function eliminar(imagen){
+function añoBisiesto(year){
+
+ if(year%4==0){
+ //puede que sea bisiesto
+ if(year%100==0){
+
+ if(year%400==0){
+ return 29;
+ }
+ else{
+ return 28;
+ }
+ }
+ else{
+ return 29;
+ }
+ }
+ else{
+ return 28;
+ }
+
+}
+
+
+function ValidarFecha(dia,mes,año){
+
+ let month = parseInt(mes); // si recibimos '1' o '01' o '00001', de igual forma pasara a 0
+
+ if(isNaN(month)){
+ return false;
+ }
+ else{
+ month = month-1;
+ }
+
+
+ let year = parseInt(año);
+ if(isNaN(year)){
+ return false;
+ }
+
+
+ let day = parseInt(dia);
+
+ if(isNaN(day)){
+ return false;
+ }
+
+
+ let days = añoBisiesto(year); // le debemos pasar un numero y no un string
+
+ let formato = [ 31,days,31,30,31,30,31,31,30,31,30,31 ];
+
+ if(year <= 0){
+ // significa que el usuario puso una año negativo, o que puso un año mayor al actual
+ return false;
+ }
+ else{
+ if((month +1) > formato.length || (month+1) <= 0){
+ // significa que la persona puso un mes menor a 0, o que puso un mes mayor a 12
+ return false;
+ }
+ else{
+ if(formato[month] < day || day <= 0){
+ //significa que la persona paso un dia mayor al limite o que puso en dia igual a 0 o negativo
+ return false;
+ }
+ else{
+ // por el momento todo bien, pero ahora toca verificar que la fecha que ingreso no sea mayor
+
+ let birthday = new Date(`${year}-${month+1}-${day}`);
+ let fa = new Date(Date.now());
+ let fecha_actual = new Date(`${fa.getFullYear()}-${fa.getMonth()+1}-${fa.getDate()}`);
+
+ if(birthday.getTime()>=fecha_actual.getTime()){
+ // la fecha de nacimiento es igual a la de hoy o mayor
+ return false;
+ }
+ else{
+ return true;
+ }
+ }
+ }
+ }
+
+
+
+
+
+
+
+
+}
+
+
export const methods ={
paso1,
diff --git a/server/db/connection.js b/server/db/connection.js
index 6b581c06..36b1780d 100644
--- a/server/db/connection.js
+++ b/server/db/connection.js
@@ -8,30 +8,38 @@ export const config = {
database: conexionDB.DATABASE,
user: conexionDB.USER,
password: conexionDB.PASSWORD,
- connectionLimit: 5000,
+ connectionLimit: 30,
charset: "utf8mb4",
};
+// Variable que almacenara la base de datos
+let pool;
+
// Establecemos conexion con la base de datos
export async function enableConnect() {
try {
- const connection = await mysql.createPool(config); // Creamos la conexion con la configuracion declarada anteriormente
- await connection.query("USE armony;");
+ pool = mysql.createPool(config); // Creamos la conexion con la configuracion declarada anteriormente
+ await pool.query("USE armony;");
console.log("CONNECT TO DATABASE!");
- return connection; // Retornamos la conexion
+ return pool; // Retornamos la conexion
} catch (err) {
// Capturamos error de conexion
- console.error("No pudo conectarse a la DB: ", err); // Mostramos error de conexion
- setTimeout(enableConnect, 1000); // Reintenta la conexion con la base de datos con un tiempo de espera de un segundo
- console.error(err);
- // throw err; // Tiramos el error para detener ejecucion
+ throw err; // Tiramos el error para detener ejecucion
}
}
-export const conexion = await enableConnect(); // almacenamos la conexion
-
+/* Realizamos la conexion con la base de datos capturando cualquier error y mostrandolo por consola*/
+enableConnect().catch((err) => {
+ console.error(err);
+});
// Cierre de conexion con la base de datos
export async function endConnection() {
- console.log("RELEASE CONNECTION");
- conexion.releaseConnection(); // Cerramos la conexion
+ if (pool) {
+ console.log("RELEASE CONNECTION");
+ await pool.releaseConnection();
+ }
}
+
+/* Exportamos la variable pool con el nombre conexion para evitar
+ incongruencias en el resto del codigo*/
+export { pool as conexion };
diff --git a/server/db/query/queryFavoritos.js b/server/db/query/queryFavoritos.js
index fd8bc562..6859dc8c 100644
--- a/server/db/query/queryFavoritos.js
+++ b/server/db/query/queryFavoritos.js
@@ -53,10 +53,10 @@ export async function ServiceFavoritosbyId(connection, data) {
}
}
-export async function ServiceFavoritosSpa(connection) {
+export async function ServiceFavoritosSpa(connection, data) {
try {
- const call = "CALL getFavoritosSpa()"; // Procedimiento almacenado de la base de datos
- const query = mysql.format(call); // Parametros necesarios para el procedimiento
+ const call = "CALL getFavoritosSpa(?)"; // Procedimiento almacenado de la base de datos
+ const query = mysql.format(call, data.id); // Parametros necesarios para el procedimiento
const [rows, fieds] = await connection.query(query); // Ejecutamos query y almacenamos los valores resultantes
endConnection(); // Cerramos la conexion con la base de datos
return rows[0]; // Retornamos los valores obtenidos en base al query
@@ -66,10 +66,10 @@ export async function ServiceFavoritosSpa(connection) {
}
}
-export async function ServiceFavoritosEstetica(connection) {
+export async function ServiceFavoritosEstetica(connection, data) {
try {
- const call = "CALL getFavoritosEstetica()"; // Procedimiento almacenado de la base de datos
- const query = mysql.format(call); // Parametros necesarios para el procedimiento
+ const call = "CALL getFavoritosEstetica(?)"; // Procedimiento almacenado de la base de datos
+ const query = mysql.format(call, data.id); // Parametros necesarios para el procedimiento
const [rows, fieds] = await connection.query(query); // Ejecutamos query y almacenamos los valores resultantes
endConnection(); // Cerramos la conexion con la base de datos
return rows[0]; // Retornamos los valores obtenidos en base al query
@@ -92,7 +92,6 @@ export async function FavoritosbyId(connection, data) {
}
}
-
export async function invertirFav(connection, data) {
try {
const call = "CALL favoritoCliente(?,?)"; // Procedimiento almacenado de la base de datos
diff --git a/server/db/query/queryProductos.js b/server/db/query/queryProductos.js
index baab249e..7cc236ea 100644
--- a/server/db/query/queryProductos.js
+++ b/server/db/query/queryProductos.js
@@ -291,9 +291,10 @@ export async function serviciosRelacionados(connection, data) {
// OBTENER PRODUCTOS CON DESCUENTO
// FUNCIONAL
-export async function productosDescuento(connection) {
+export async function productosDescuento(connection, data) {
try {
- let query = "CALL getProductosDesc()"; // Query del procedimiento almacenado
+ let desc = "CALL getProductosDesc(?)"; // Query del procedimiento almacenado
+ let query = mysql.format(desc, [data.id]);
const [rows, fields] = await connection.query(query); // Ejecutamos le query y almacenamos los valores
endConnection(); // Cerramos la conexion
return rows[0]; // Retornamos los valores obtenidos
diff --git a/server/middlewares/register.js b/server/middlewares/register.js
index 3de19012..dc0f5ca8 100644
--- a/server/middlewares/register.js
+++ b/server/middlewares/register.js
@@ -9,7 +9,7 @@ dotenv.config();
async function InsertUser(solicitud,respuesta,siguiente){
if(solicitud.headers.cookie == undefined){
- respuesta.send({megumin_cookie:false});
+ return respuesta.send({megumin_cookie:false});
}
else{
let galletas = solicitud.headers.cookie.split("; ");
diff --git a/server/routers/favoritos.js b/server/routers/favoritos.js
index c58af7f9..625c13fc 100644
--- a/server/routers/favoritos.js
+++ b/server/routers/favoritos.js
@@ -1,5 +1,6 @@
import express from "express";
export const routerFavoritos = express.Router();
+import { horasWithoutSeconds } from "../db/query/queryCitas.js";
import {
addfavorito,
delFavorito,
@@ -8,7 +9,7 @@ import {
ServiceFavoritosEstetica,
ServiceFavoritosSpa,
FavoritosbyId,
- invertirFav
+ invertirFav,
} from "../db/query/queryFavoritos.js";
import { conexion } from "../db/connection.js";
@@ -65,10 +66,31 @@ routerFavoritos.get("/ServiceFavoritosbyId/:id", async (req, res) => {
// FUNCIONAL
// OBTIENE LOS SERVICIOS FAVORITOS DEL CLIENTE
-routerFavoritos.get("/ServiceFavoritosSpa", async (req, res) => {
+routerFavoritos.get("/ServiceFavoritosSpa/:id", async (req, res) => {
try {
- const resultado = await ServiceFavoritosSpa(conexion);
- res.send(JSON.stringify(resultado));
+ const resultado = await ServiceFavoritosSpa(conexion, {
+ id: req.params.id,
+ });
+ const horario = [];
+ let servicios = [];
+ for (let i = 0; i < resultado.length; i++) {
+ horario[i] = resultado[i].tiempo;
+ }
+ const horasMostrar = await horasWithoutSeconds(horario); // Horas con formato HH:MM
+ for (let i = 0; i < resultado.length; i++) {
+ servicios[i] = {
+ descripcion: resultado[i].descripcion,
+ estado: resultado[i].estado,
+ img: resultado[i].img,
+ nombre: resultado[i].nombre,
+ pkIdPS: resultado[i].pkIdPS,
+ precio: resultado[i].precio,
+ tiempo: horasMostrar[i],
+ valoracion: resultado[i].valoracion,
+ favorito: resultado[i].favorito,
+ };
+ }
+ res.status(202).json(servicios);
} catch (err) {
res.status(500).send({ error: "Hubo un problema", err });
}
@@ -76,10 +98,31 @@ routerFavoritos.get("/ServiceFavoritosSpa", async (req, res) => {
// FUNCIONAL
// OBTIENE LOS SERVICIOS FAVORITOS DEL CLIENTE
-routerFavoritos.get("/ServiceFavoritosEstetica", async (req, res) => {
+routerFavoritos.get("/ServiceFavoritosEstetica/:id", async (req, res) => {
try {
- const resultado = await ServiceFavoritosEstetica(conexion);
- res.send(JSON.stringify(resultado));
+ const resultado = await ServiceFavoritosEstetica(conexion, {
+ id: req.params.id,
+ });
+ const horario = [];
+ let servicios = [];
+ for (let i = 0; i < resultado.length; i++) {
+ horario[i] = resultado[i].tiempo;
+ }
+ const horasMostrar = await horasWithoutSeconds(horario); // Horas con formato HH:MM
+ for (let i = 0; i < resultado.length; i++) {
+ servicios[i] = {
+ descripcion: resultado[i].descripcion,
+ estado: resultado[i].estado,
+ img: resultado[i].img,
+ nombre: resultado[i].nombre,
+ pkIdPS: resultado[i].pkIdPS,
+ precio: resultado[i].precio,
+ tiempo: horasMostrar[i],
+ valoracion: resultado[i].valoracion,
+ favorito: resultado[i].favorito,
+ };
+ }
+ res.status(202).json(servicios);
} catch (err) {
res.status(500).send({ error: "Hubo un problema", err });
}
@@ -105,5 +148,3 @@ routerFavoritos.post("/invertirFav", async (req, res) => {
res.status(500).send({ error: "Hubo un problema", err });
}
});
-
-
diff --git a/server/routers/productos.js b/server/routers/productos.js
index cf28c10a..ed35be62 100644
--- a/server/routers/productos.js
+++ b/server/routers/productos.js
@@ -273,9 +273,9 @@ routerProductos.get("/servicios/relacionados/:id", async (req, res) => {
// OBTENER LOS PRODUCTOS CON DESCUENTO
// FUNCIONAL
-routerProductos.get("/descuento", async (req, res) => {
+routerProductos.get("/descuento/:id", async (req, res) => {
try {
- const resultado = await productosDescuento(conexion);
+ const resultado = await productosDescuento(conexion, { id: req.params.id });
res
.status(200)
.json({ message: "Los productos con descuento son : ", data: resultado });