Skip to content

Commit 17d6a79

Browse files
committed
merge
2 parents c08fb7f + f237430 commit 17d6a79

38 files changed

Lines changed: 2713 additions & 422 deletions

.github/workflows/deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
bash /home/deploy/vitalinkBackendSTG/VitalinkBackendV2/deploy_tenshi.stg.sh
3434
3535
- name: Deploy PROD
36-
if: github.ref == 'refs/heads/main'
36+
if: github.ref == 'refs/heads/prod'
3737
uses: appleboy/ssh-action@v1.0.3
3838
with:
3939
host: ${{ secrets.EC2_HOST_PROD }}

deploy_tenshi.prod.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ echo "🚀 Start app en CLUSTER"
2525

2626
pm2 start npm \
2727
--name "$APP_NAME" \
28-
-- run STGAWS \
28+
-- run PRODAWS \
2929
-i max \
3030
--time \
3131
--update-env

src/data/json/emailMessages/emailMessages.en.json

Lines changed: 60 additions & 69 deletions
Large diffs are not rendered by default.

src/data/json/emailMessages/emailMessages.es.json

Lines changed: 45 additions & 55 deletions
Large diffs are not rendered by default.

src/modules/01_General/auth/controllers/AuthController.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export default class AuthController extends GenericController{
119119
const subject = getMessageEmail(ConstTemplate.REGISTER_EMAIL, user.language);
120120
const emailService = EmailService.getInstance();
121121
await emailService.sendEmail({
122-
toMail: user.email,
122+
toMail: [user.email],
123123
subject: subject,
124124
message: htmlBody,
125125
attachments: []
@@ -297,8 +297,9 @@ async activeRegisterUser(reqHandler: RequestHandler){
297297
userName: user.name,
298298
loginUrl: config.COMPANY.LOGIN_URL
299299
};
300-
const htmlBody = await getEmailTemplate(ConstTemplate.ACTIVE_ACCOUNT_PAGE, user.language, variables);
301-
return httpExec.getHtml(htmlBody);
300+
//const htmlBody = await getEmailTemplate(ConstTemplate.ACTIVE_ACCOUNT_PAGE, user.language, variables);
301+
//return httpExec.getHtml(htmlBody);
302+
return httpExec.successAction(null, ConstMessagesJson.REGISTER_CONFIRMATION_SUCCESSFUL);
302303
}else{
303304
//if is prod, send register confirmation from body json
304305
return httpExec.successAction(null, ConstMessagesJson.REGISTER_CONFIRMATION_SUCCESSFUL);
@@ -346,7 +347,7 @@ async recoverUserByEmail(reqHandler: RequestHandler){
346347
const subject = getMessageEmail(ConstTemplate.RECOVER_USER_EMAIL,user.language!);
347348
const emailService = EmailService.getInstance();
348349
await emailService.sendEmail({
349-
toMail: user.email,
350+
toMail: [user.email],
350351
subject: subject,
351352
message: htmlBody,
352353
attachments: []
@@ -387,7 +388,7 @@ async forgotPassword(reqHandler: RequestHandler){
387388

388389
const emailService = EmailService.getInstance();
389390
await emailService.sendEmail({
390-
toMail: user.email,
391+
toMail: [user.email],
391392
subject: subject,
392393
message: htmlBody,
393394
attachments: []

src/modules/01_General/email/controllers/EmailController.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export default class EmailController extends GenericController{
4747
// Send the email to the user
4848
const emailService = EmailService.getInstance();
4949
await emailService.sendEmail({
50-
toMail: user.email,
50+
toMail: [user.email],
5151
subject: emailStructure.subject,
5252
message: htmlBody,
5353
attachments: []
@@ -114,7 +114,7 @@ export default class EmailController extends GenericController{
114114
const htmlBody = await getEmailTemplate(ConstTemplate.GENERIC_TEMPLATE_EMAIL, user.language, variables);
115115
const emailService = EmailService.getInstance();
116116
await emailService.sendEmail({
117-
toMail: user.email,
117+
toMail: [user.email],
118118
subject: emailStructure.subject,
119119
message: htmlBody,
120120
attachments: []

src/modules/01_General/notification/utils/NotificationUtils.ts

Lines changed: 156 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { User } from "@TenshiJS/entity/User";
55
import GenericRepository from "@TenshiJS/generics/Repository/GenericRepository";
66
import EmailService from "@TenshiJS/services/EmailServices/EmailService";
77
import { getEmailTemplate, getMessageEmail } from "@TenshiJS/utils/htmlTemplateUtils";
8+
import { config } from "@index/index";
89

910
// Sends an email and stores a user notification
1011
export async function sendEmailAndUserNotification(userNotifications: any, variables: any, needsAddUserNotification: boolean): Promise<UserNotification | null> {
@@ -59,7 +60,10 @@ export async function sendEmailAndUserNotification(userNotifications: any, varia
5960
// Send the email
6061
const emailService = EmailService.getInstance();
6162
await emailService.sendEmail({
62-
toMail: user.email,
63+
//localhost
64+
toMail: [user.email],
65+
//prod
66+
//toMail: [user.email, config.SUPER_ADMIN.USER_EMAIL],
6367
//toMail: "vitalinkcr2@gmail.com",
6468
subject,
6569
message: htmlBody,
@@ -75,4 +79,154 @@ export async function sendEmailAndUserNotification(userNotifications: any, varia
7579
return null;
7680
}
7781

78-
}
82+
}
83+
84+
85+
86+
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+
97+
98+
99+
100+
101+
102+
export interface NotificationContext {
103+
subject: string;
104+
title: string;
105+
bodyContent: string;
106+
htmlBody: string;
107+
variables: Record<string, any>;
108+
template: string;
109+
user: User;
110+
}
111+
112+
export async function buildNotificationContext(
113+
userNotifications: any,
114+
variables: any
115+
): Promise<NotificationContext | null> {
116+
const repositoryNotification = new GenericRepository(Notification);
117+
const repositoryUser = new GenericRepository(User);
118+
119+
const notification: Notification = await repositoryNotification.findByCode(
120+
userNotifications.notification, true
121+
);
122+
123+
if (!notification) return null;
124+
125+
const user: User = await repositoryUser.findById(
126+
userNotifications.user_receive, true
127+
);
128+
129+
const useJsonTemplate = notification.text_from_email_message_json;
130+
const template = userNotifications.override_template // <-- permite override desde el controller
131+
?? notification.email_template
132+
?? ConstTemplate.GENERIC_TEMPLATE_EMAIL;
133+
134+
const subject = useJsonTemplate && userNotifications.acronymous
135+
? getMessageEmail(userNotifications.acronymous, user.language!, "Subject")
136+
: notification.subject;
137+
138+
const bodyContent = useJsonTemplate && userNotifications.acronymous
139+
? getMessageEmail(userNotifications.acronymous, user.language!, "EmailMessage")
140+
: notification.email_message;
141+
142+
const title = useJsonTemplate && userNotifications.acronymous
143+
? getMessageEmail(userNotifications.acronymous, user.language!, "Title")
144+
: notification.subject;
145+
146+
const mergedVariables = {
147+
userName: user.name,
148+
emailSubject: title,
149+
emailContent: bodyContent,
150+
actionTitle: notification.action_text,
151+
actionUrl: notification.action_url,
152+
...variables,
153+
};
154+
155+
const htmlBody = await getEmailTemplate(template, user.language, mergedVariables);
156+
157+
return {
158+
subject,
159+
title,
160+
bodyContent: bodyContent ? bodyContent : '',
161+
htmlBody,
162+
variables: mergedVariables,
163+
template,
164+
user,
165+
};
166+
}
167+
168+
169+
170+
export async function sendEmailNotification(
171+
userNotifications: any,
172+
variables: any,
173+
needsAddUserNotification: boolean
174+
): Promise<UserNotification | null> {
175+
const repositoryNotification = new GenericRepository(Notification);
176+
const repositoryUserNotification = new GenericRepository(UserNotification);
177+
178+
const notification: Notification = await repositoryNotification.findByCode(
179+
userNotifications.notification, true
180+
);
181+
182+
if (notification?.required_send_email) {
183+
const ctx = await buildNotificationContext(userNotifications, variables);
184+
185+
if (ctx) {
186+
const emailService = EmailService.getInstance();
187+
await emailService.sendEmail({
188+
toMail: [ctx.user.email, config.SUPER_ADMIN.USER_EMAIL],
189+
subject: ctx.subject,
190+
message: ctx.htmlBody,
191+
attachments: [],
192+
});
193+
}
194+
}
195+
196+
if (needsAddUserNotification) {
197+
return await repositoryUserNotification.add(userNotifications);
198+
}
199+
200+
return null;
201+
}
202+
203+
204+
205+
/*
206+
207+
// Ejemplo desde el controller — enviar con template personalizado
208+
const ctx = await buildNotificationContext(
209+
{
210+
user_receive: appointment.customer.id,
211+
notification: "appointmentStep8",
212+
acronymous: "appointmentStep8",
213+
override_template: "credit_summary_template", // <-- tu template custom
214+
},
215+
{
216+
patientName: appointment.customer.name,
217+
procedureName: appointment.package?.procedure?.name,
218+
totalProcedure: 1500,
219+
}
220+
);
221+
222+
if (ctx) {
223+
const emailService = EmailService.getInstance();
224+
await emailService.sendEmail({
225+
toMail: [ctx.user.email],
226+
subject: ctx.subject,
227+
message: ctx.htmlBody,
228+
attachments: [],
229+
});
230+
}
231+
232+
*/

0 commit comments

Comments
 (0)