Skip to content
This repository has been archived by the owner on Jun 6, 2024. It is now read-only.

Commit

Permalink
anadi una funcion que se ejecuta a media noche que verifica a los usu…
Browse files Browse the repository at this point in the history
…arios que tienen su cuenta vencida y que dicha expiracion es el dia correspondiente, esto para evitar que se reenvien correos en dias posteriores, agregue un nuevo cuerpo para los correos de tipo 'vencimiento de suscripcion' y cambie algunos otros detallitos
  • Loading branch information
KarimSoto committed Jun 3, 2024
1 parent 5900d78 commit 090f4d7
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 2 deletions.
6 changes: 6 additions & 0 deletions server/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import https from "https";
import * as fs from "fs";
import multer from 'multer';
import sharp from 'sharp';
import cron from 'node-cron';



Expand Down Expand Up @@ -238,6 +239,11 @@ app.get("/api/step1.5", async (solicitud, respuesta) => {
}
});


// cron.schedule("0 0 * * *",()=>{
// perfil.LectorRenovacionSuscripcion()
// });

app.get("*", (solicitud, respuesta) => {
respuesta.sendFile(path.join(_dirname, "../client/dist/index.html"));
});
Expand Down
59 changes: 58 additions & 1 deletion server/controllers/perfil-data.controllers.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import bcryptjs from 'bcryptjs';
import dotenv from 'dotenv';
import mysql from "mysql2";
import Stripe from 'stripe';
import { conexion } from "../db/connection.js";
import {methods as servicios} from "../services/mail.service.js";

dotenv.config();
Expand Down Expand Up @@ -1102,6 +1103,61 @@ async function deleteSuscripcion(solicitud,respuesta){
}


// esta funcion no recibe ni solicitud ni manda una respuesta
async function LectorRenovacionSuscripcion(){

//asegurarnos de no enviar correos dias despues de cuando se le vencio
let consulta = 'select * from clienteMembresia where activo = ? and fkMembresia = 1 and fechaExpiracion = curdate()';

// las consultas normales, osea las que he manejado a lo largo del proyecto las suelo hacer asi:
let [fields] = await conexion.query(mysql.format(consulta,[0]));

let f = fields;

let usuarios_vencidos = [];

if(f != undefined){
// seleccionar los usuarios que se les vencio su suscripcion
for(let i in f){
usuarios_vencidos.push(f[i].fkCliente);
}

console.log(usuarios_vencidos);

//mandarle correo a dichos usuario
for(let i in usuarios_vencidos){
let consulta_correo = 'select * from usuario where pkIdUsuario = ?';

let [correo_usuario] = await conexion.query(mysql.format(consulta_correo,[usuarios_vencidos[i]]));

let CE = correo_usuario[0].email;

let nU = correo_usuario[0].nombre;
let pU = correo_usuario[0].apellidoP;
let mU = correo_usuario[0].apellidoM;

let full_name = `${pU} ${mU} ${nU}`;

try{
//toca enviar al usuario un correo
await servicios.vencimientoSuscripcion(CE,"token",full_name);
}catch(error){
console.log('envio incorrecto');
console.log(error);
}
}
}


}











Expand Down Expand Up @@ -1164,5 +1220,6 @@ export const methods = {
Insert_to_Monedero,
getOpcionesPago,
getSuscripcion,
deleteSuscripcion
deleteSuscripcion,
LectorRenovacionSuscripcion
}
20 changes: 20 additions & 0 deletions server/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@
"jsonwebtoken": "^9.0.2",
"multer": "^1.4.5-lts.1",
"mysql2": "^3.9.8",
"node-cron": "^3.0.3",
"node-fetch": "^3.3.2",
"nodemailer": "^6.9.13",
"sharp": "^0.33.4",
Expand Down
56 changes: 55 additions & 1 deletion server/services/mail.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,16 @@ async function CancelacionSuscripcion(direccion,token,full_name){
}


async function vencimientoSuscripcion(direccion,token,full_name){
return await transporter.sendMail({
from:process.env.EMAIL_USER,
to:direccion,
subject:'Tu suscripcion ha caducado',
html:cuerpoVencimiento(token,full_name)
})
}


async function Cambio_de_correo(token,full_name,id,correo){
return await transporter.sendMail({
from:process.env.EMAIL_USER,
Expand Down Expand Up @@ -308,6 +318,49 @@ function cuerpoCancelacion(token,full_name){
}


function cuerpoVencimiento(token,full_name){
return `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
*{
padding: 0;
margin: 0;
}
.body-email{
background-color: #82E0AA;
padding: 8px;
display: flex;
flex-direction: column;
}
.body-email .header{
position: relative;
width: 100%;
background-color: aliceblue;
font-size: 25px;
padding: 2px;
}
</style>
</head>
<body>
<div class="body-email">
<div class="header">
<span>Tu suscripcion ha vencido el dia de hoy.</span>
</div>
<div class="body">
<p>Estimad@ ${full_name}, le informamos que su suscripcion ha vencido el dia de hoy, sin embargo, si quiere seguir contando con nuestros descuentos, lo invitamos a que vuelva a que adquiera de nueva cuenta su suscripcion. Si no quiere pagar la suscripcion de forma manual constatemente, puede activar la renovacion automatica</p>
</div>
</div>
</body>
</html>`;
}





Expand All @@ -316,5 +369,6 @@ export const methods = {
Cambio_de_correo,
Codigo_de_Verificacion,
Confirmacion_Contraseña,
CancelacionSuscripcion
CancelacionSuscripcion,
vencimientoSuscripcion
}

0 comments on commit 090f4d7

Please sign in to comment.