const mariadb = require('./_db'); async function getUsers(){ try { let conn = await mariadb.getConn(); const rows = await conn.query("SELECT * FROM user"); conn.release(); return rows; } catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.getUsers = getUsers; async function userLogin(username, password){ try { let conn = await mariadb.getConn(); const rows = await conn.query("SELECT userID, discotecaID, userType, username FROM user WHERE username = ? AND password = ?", [username, password]); conn.release(); if (rows){ return rows;} } catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.userLogin = userLogin; async function getDiscoteca(discotecaId){ try{ let conn = await mariadb.getConn(); const rows = await conn.query("SELECT discotecaID, nombre, telefono, localizacion FROM discoteca WHERE discotecaID = ?", [discotecaId]); conn.release(); if (rows){ return rows;} }catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.getDiscoteca = getDiscoteca; async function addEvento(evento){ try{ let conn = await mariadb.getConn(); var rows = await conn.query ("SELECT * FROM evento WHERE id = ?", [evento.id]); if (!rows.length>0){ rows = await conn.query ("INSERT INTO evento (discotecaID, nombre, localizacion, fecha, hora, descripcion, precio1, precio2) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", [evento.discotecaID, evento.nombre, evento.localizacion, evento.fecha, evento.hora, evento.descripcion, evento.precio1, evento.precio2]); conn.release(); } else{ rows = await conn.query ("UPDATE evento SET discotecaID = ?, nombre = ?, localizacion = ?, fecha = ?, hora = ?, descripcion = ?, precio1 = ?, precio2 = ? WHERE id = ?", [evento.discotecaID, evento.nombre, evento.localizacion, evento.fecha, evento.hora, evento.descripcion, evento.precio1, evento.precio2, evento.id]); conn.release(); } if (rows){ return rows;} }catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.addEvento = addEvento; async function getEventos(){ try{ let conn = await mariadb.getConn(); const rows = await conn.query("SELECT id, discotecaID, nombre, localizacion, fecha, hora, descripcion, precio1, precio2 FROM evento"); conn.release(); if(rows){ return rows;} }catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.getEventos = getEventos; async function getEventosDiscoteca(discotecaId){ try{ let conn = await mariadb.getConn(); const rows = await conn.query("SELECT id, discotecaID, nombre, localizacion, fecha, hora, descripcion, precio1, precio2 FROM evento WHERE discotecaID = ?", [discotecaId.id]); conn.release(); if (rows){ return rows;} }catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.getEventosDiscoteca = getEventosDiscoteca; async function addReserva(reserva){ try{ let conn = await mariadb.getConn(); var rows = await conn.query("SELECT * FROM reserva WHERE UserID = ? AND EventoID = ?", [reserva.UserID, reserva.EventoID]); if(!rows[0]){ //primero inserta en la tabla codigo, y luego en la tabla reserva const CodigoUnico = await conn.query("INSERT INTO codigo (UserID, codigo, numReservas) VALUES (?, ?, ?)", [reserva.UserID, reserva.codigoUnico, 0]); const codigoID = await conn.query("SELECT id FROM codigo WHERE codigo = ?", [reserva.codigoUnico]); reserva.codigoUnicoID = codigoID[0].id; if(reserva.descuentoPorciento){ //arreglar este if rows = await conn.query("INSERT INTO reserva (UserID, EventoID, codigoUnicoID, codigoDescuento, descuentoPorciento) VALUES (?, ?, ?, ?, ?)", [reserva.UserID, reserva.EventoID, reserva.codigoUnicoID, reserva.codigoDescuento, reserva.descuentoPorciento]); } else{ rows = await conn.query("INSERT INTO reserva (UserID, EventoID, codigoUnicoID, codigoDescuento) VALUES (?, ?, ?, ?)", [reserva.UserID, reserva.EventoID, reserva.codigoUnicoID, reserva.codigoDescuento]); } await conn.query("UPDATE codigo SET numReservas = numReservas + 1 WHERE codigo = ?", [reserva.codigoDescuento]); conn.release(); return reserva; } else{ console.log("Ya hay una reserva para este evento."); conn.release(); } }catch(err){ console.log("No se pudo acceder a la BD: "+err);} } module.exports.addReserva = addReserva; async function comprobarDescuento(reserva){ try{ let conn = await mariadb.getConn(); const evento = await conn.query("SELECT * FROM evento WHERE id = ?", [reserva.EventoID]); const tipoDescuento = evento[0].tipoDescuento; if(tipoDescuento){ const porciento = await conn.query("SELECT porciento FROM descuentos WHERE id = ?", [tipoDescuento]); conn.release(); return porciento[0].porciento; } else{ conn.release(); return 0; } }catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.comprobarDescuento = comprobarDescuento; async function activarCodigo(reserva){ try{ let conn = await mariadb.getConn(); const codigo = await conn.query("SELECT id FROM codigo WHERE codigo = ?", [reserva.codigoDescuento]); conn.release(); console.log(codigo); if (codigo.length>0){ const reservaOriginal = await conn.query("SELECT EventoID FROM reserva WHERE codigoUnicoID = ?", [codigo[0].id]); conn.release(); console.log(reservaOriginal); if (reservaOriginal[0].EventoID == reserva.EventoID){ console.log("Codigo válido"); return codigo; } else{ console.log("Código inválido"); reserva.codigoDescuento=''; return null; } } else{ console.log("Código inválido"); return null; } }catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.activarCodigo = activarCodigo; async function getCodigos(usuario){ try{ let conn = await mariadb.getConn(); const codigos = await conn.query("SELECT UserID, codigo, numReservas FROM codigo WHERE UserID = ?", [usuario.userID]); conn.release(); if(codigos.length>0){ return codigos; } else return null; }catch(err){ console.log("No se pudo acceder a la BD: "+err); } } module.exports.getCodigos = getCodigos;