@blackcode_sa/metaestetics-api 1.15.4 → 1.15.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/index.d.mts +3 -0
- package/dist/admin/index.d.ts +3 -0
- package/dist/admin/index.js +61 -49
- package/dist/admin/index.mjs +61 -49
- package/dist/backoffice/index.d.mts +2 -0
- package/dist/backoffice/index.d.ts +2 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/index.mjs +3 -1
- package/package.json +1 -1
- package/src/admin/mailing/appointment/appointment.mailing.service.ts +28 -16
- package/src/admin/mailing/clinicWelcome/clinicWelcome.mailing.ts +3 -3
- package/src/admin/mailing/clinicWelcome/templates/welcome.template.ts +8 -8
- package/src/admin/mailing/patientInvite/patientInvite.mailing.ts +3 -3
- package/src/admin/mailing/patientInvite/templates/invitation.template.ts +3 -3
- package/src/admin/mailing/practitionerInvite/existing-practitioner-invite.mailing.ts +1 -1
- package/src/admin/mailing/practitionerInvite/practitionerInvite.mailing.ts +2 -2
- package/src/admin/mailing/practitionerInvite/templates/existing-practitioner-invitation.template.ts +4 -4
- package/src/admin/mailing/practitionerInvite/templates/invite-accepted-notification.template.ts +4 -4
- package/src/admin/mailing/practitionerInvite/templates/invite-rejected-notification.template.ts +4 -4
- package/src/types/practitioner/index.ts +2 -0
- package/src/validations/practitioner.schema.ts +2 -0
package/dist/admin/index.mjs
CHANGED
|
@@ -2003,7 +2003,7 @@ var patientAppointmentConfirmedTemplate = `
|
|
|
2003
2003
|
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2004
2004
|
<tr>
|
|
2005
2005
|
<td>
|
|
2006
|
-
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">
|
|
2006
|
+
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">Metaesthetics</h1>
|
|
2007
2007
|
</td>
|
|
2008
2008
|
</tr>
|
|
2009
2009
|
</table>
|
|
@@ -2061,6 +2061,7 @@ var patientAppointmentConfirmedTemplate = `
|
|
|
2061
2061
|
<td>
|
|
2062
2062
|
<p style="margin: 0 0 2px 0; font-size: 11px; color: #868686; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Location</p>
|
|
2063
2063
|
<p style="margin: 0; font-size: 15px; color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{clinicName}}</p>
|
|
2064
|
+
<p style="margin: 4px 0 0 0; font-size: 13px; color: #555555; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{clinicAddress}}</p>
|
|
2064
2065
|
</td>
|
|
2065
2066
|
</tr>
|
|
2066
2067
|
</table>
|
|
@@ -2081,7 +2082,7 @@ var patientAppointmentConfirmedTemplate = `
|
|
|
2081
2082
|
<td style="padding: 20px 24px; background-color: #faf9f7; border-left: 3px solid #a48a76;">
|
|
2082
2083
|
<p style="margin: 0 0 8px 0; font-size: 13px; font-weight: 600; color: #67574A; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Before Your Visit</p>
|
|
2083
2084
|
<p style="margin: 0; font-size: 14px; color: #555555; line-height: 1.6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2084
|
-
Please arrive 15 minutes early. If you need to reschedule or cancel, contact us through the
|
|
2085
|
+
Please arrive 15 minutes early. If you need to reschedule or cancel, contact us through the Metaesthetics app.
|
|
2085
2086
|
</p>
|
|
2086
2087
|
</td>
|
|
2087
2088
|
</tr>
|
|
@@ -2103,7 +2104,7 @@ var patientAppointmentConfirmedTemplate = `
|
|
|
2103
2104
|
<td>
|
|
2104
2105
|
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500; color: #67574A; font-family: Georgia, 'Times New Roman', serif;">{{clinicName}}</p>
|
|
2105
2106
|
<p style="margin: 0 0 16px 0; font-size: 13px; color: #868686; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Premium Aesthetic Services</p>
|
|
2106
|
-
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from
|
|
2107
|
+
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from Metaesthetics. Please do not reply directly to this email.</p>
|
|
2107
2108
|
</td>
|
|
2108
2109
|
</tr>
|
|
2109
2110
|
</table>
|
|
@@ -2255,7 +2256,7 @@ var clinicAppointmentRequestedTemplate = `
|
|
|
2255
2256
|
<body>
|
|
2256
2257
|
<div class="email-container">
|
|
2257
2258
|
<div class="header">
|
|
2258
|
-
<div class="logo">
|
|
2259
|
+
<div class="logo">Metaesthetics</div>
|
|
2259
2260
|
<h1>New Appointment Request</h1>
|
|
2260
2261
|
<div class="subtitle">Requires Your Attention</div>
|
|
2261
2262
|
</div>
|
|
@@ -2308,7 +2309,7 @@ var clinicAppointmentRequestedTemplate = `
|
|
|
2308
2309
|
|
|
2309
2310
|
<div class="footer">
|
|
2310
2311
|
<p style="margin: 0 0 10px 0;">
|
|
2311
|
-
<strong>
|
|
2312
|
+
<strong>Metaesthetics</strong> - Premium Aesthetic Services
|
|
2312
2313
|
</p>
|
|
2313
2314
|
<p style="margin: 0; font-size: 12px; color: #999;">
|
|
2314
2315
|
This is an automated message. Please do not reply to this email.
|
|
@@ -2347,7 +2348,7 @@ var appointmentCancelledTemplate = `
|
|
|
2347
2348
|
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2348
2349
|
<tr>
|
|
2349
2350
|
<td>
|
|
2350
|
-
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">
|
|
2351
|
+
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">Metaesthetics</h1>
|
|
2351
2352
|
</td>
|
|
2352
2353
|
</tr>
|
|
2353
2354
|
</table>
|
|
@@ -2431,6 +2432,7 @@ var appointmentCancelledTemplate = `
|
|
|
2431
2432
|
<td>
|
|
2432
2433
|
<p style="margin: 0 0 2px 0; font-size: 11px; color: #999999; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Location</p>
|
|
2433
2434
|
<p style="margin: 0; font-size: 15px; color: #888888; text-decoration: line-through; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{clinicName}}</p>
|
|
2435
|
+
<p style="margin: 4px 0 0 0; font-size: 13px; color: #999999; text-decoration: line-through; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{clinicAddress}}</p>
|
|
2434
2436
|
</td>
|
|
2435
2437
|
</tr>
|
|
2436
2438
|
</table>
|
|
@@ -2451,7 +2453,7 @@ var appointmentCancelledTemplate = `
|
|
|
2451
2453
|
<td style="padding: 24px;">
|
|
2452
2454
|
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 600; color: #00BB38; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Book a New Appointment</p>
|
|
2453
2455
|
<p style="margin: 0; font-size: 14px; color: #555555; line-height: 1.6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2454
|
-
We'd love to see you again. Open the
|
|
2456
|
+
We'd love to see you again. Open the Metaesthetics app to browse available times and book a new appointment.
|
|
2455
2457
|
</p>
|
|
2456
2458
|
</td>
|
|
2457
2459
|
</tr>
|
|
@@ -2459,7 +2461,7 @@ var appointmentCancelledTemplate = `
|
|
|
2459
2461
|
|
|
2460
2462
|
<!-- Support Info -->
|
|
2461
2463
|
<p style="margin: 0; font-size: 13px; color: #868686; line-height: 1.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2462
|
-
If you have any questions about this cancellation, please contact {{clinicName}} through the
|
|
2464
|
+
If you have any questions about this cancellation, please contact {{clinicName}} through the Metaesthetics app.
|
|
2463
2465
|
</p>
|
|
2464
2466
|
|
|
2465
2467
|
</td>
|
|
@@ -2473,7 +2475,7 @@ var appointmentCancelledTemplate = `
|
|
|
2473
2475
|
<td>
|
|
2474
2476
|
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500; color: #67574A; font-family: Georgia, 'Times New Roman', serif;">{{clinicName}}</p>
|
|
2475
2477
|
<p style="margin: 0 0 16px 0; font-size: 13px; color: #868686; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Premium Aesthetic Services</p>
|
|
2476
|
-
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from
|
|
2478
|
+
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from Metaesthetics. Please do not reply directly to this email.</p>
|
|
2477
2479
|
</td>
|
|
2478
2480
|
</tr>
|
|
2479
2481
|
</table>
|
|
@@ -2516,7 +2518,7 @@ var appointmentRescheduledProposalTemplate = `
|
|
|
2516
2518
|
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2517
2519
|
<tr>
|
|
2518
2520
|
<td>
|
|
2519
|
-
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">
|
|
2521
|
+
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">Metaesthetics</h1>
|
|
2520
2522
|
</td>
|
|
2521
2523
|
</tr>
|
|
2522
2524
|
</table>
|
|
@@ -2601,7 +2603,7 @@ var appointmentRescheduledProposalTemplate = `
|
|
|
2601
2603
|
<td style="padding: 28px;">
|
|
2602
2604
|
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 600; color: #67574A; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">How to Respond</p>
|
|
2603
2605
|
<p style="margin: 0; font-size: 14px; color: #555555; line-height: 1.6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2604
|
-
Open the
|
|
2606
|
+
Open the Metaesthetics app to accept or decline this reschedule request. Your appointment will remain pending until you respond.
|
|
2605
2607
|
</p>
|
|
2606
2608
|
</td>
|
|
2607
2609
|
</tr>
|
|
@@ -2623,7 +2625,7 @@ var appointmentRescheduledProposalTemplate = `
|
|
|
2623
2625
|
<td>
|
|
2624
2626
|
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500; color: #67574A; font-family: Georgia, 'Times New Roman', serif;">{{clinicName}}</p>
|
|
2625
2627
|
<p style="margin: 0 0 16px 0; font-size: 13px; color: #868686; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Premium Aesthetic Services</p>
|
|
2626
|
-
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from
|
|
2628
|
+
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from Metaesthetics. Please do not reply directly to this email.</p>
|
|
2627
2629
|
</td>
|
|
2628
2630
|
</tr>
|
|
2629
2631
|
</table>
|
|
@@ -2699,6 +2701,13 @@ var AppointmentMailingService = class extends BaseMailingService {
|
|
|
2699
2701
|
return `Clinic Time - ${timezone}`;
|
|
2700
2702
|
}
|
|
2701
2703
|
}
|
|
2704
|
+
formatClinicAddress(appointment) {
|
|
2705
|
+
var _a;
|
|
2706
|
+
const loc = (_a = appointment.clinicInfo) == null ? void 0 : _a.location;
|
|
2707
|
+
if (!loc) return "";
|
|
2708
|
+
const parts = [loc.address, loc.postalCode, loc.city, loc.country].filter(Boolean);
|
|
2709
|
+
return parts.join(", ");
|
|
2710
|
+
}
|
|
2702
2711
|
async sendAppointmentConfirmedEmail(data) {
|
|
2703
2712
|
var _a, _b, _c, _d, _e;
|
|
2704
2713
|
Logger.info(
|
|
@@ -2733,11 +2742,12 @@ var AppointmentMailingService = class extends BaseMailingService {
|
|
|
2733
2742
|
),
|
|
2734
2743
|
appointmentTime: `${formattedTime} (${timezoneName})`,
|
|
2735
2744
|
practitionerName: data.appointment.practitionerInfo.name,
|
|
2736
|
-
clinicName: data.appointment.clinicInfo.name
|
|
2745
|
+
clinicName: data.appointment.clinicInfo.name,
|
|
2746
|
+
clinicAddress: this.formatClinicAddress(data.appointment)
|
|
2737
2747
|
};
|
|
2738
2748
|
const html = this.renderTemplate(patientAppointmentConfirmedTemplate, templateVariables);
|
|
2739
2749
|
const subject = ((_a = data.options) == null ? void 0 : _a.customSubject) || "Your Appointment is Confirmed!";
|
|
2740
|
-
const fromAddress = ((_b = data.options) == null ? void 0 : _b.fromAddress) || `
|
|
2750
|
+
const fromAddress = ((_b = data.options) == null ? void 0 : _b.fromAddress) || `Metaesthetics <no-reply@${((_c = data.options) == null ? void 0 : _c.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
2741
2751
|
const domainToSendFrom = ((_d = data.options) == null ? void 0 : _d.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN;
|
|
2742
2752
|
const mailgunSendData = {
|
|
2743
2753
|
to: recipientEmail,
|
|
@@ -2803,7 +2813,7 @@ var AppointmentMailingService = class extends BaseMailingService {
|
|
|
2803
2813
|
};
|
|
2804
2814
|
const html = this.renderTemplate(clinicAppointmentRequestedTemplate, templateVariables);
|
|
2805
2815
|
const subject = ((_b = data.options) == null ? void 0 : _b.customSubject) || "New Appointment Request Received";
|
|
2806
|
-
const fromAddress = ((_c = data.options) == null ? void 0 : _c.fromAddress) || `
|
|
2816
|
+
const fromAddress = ((_c = data.options) == null ? void 0 : _c.fromAddress) || `Metaesthetics <no-reply@${((_d = data.options) == null ? void 0 : _d.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
2807
2817
|
const domainToSendFrom = ((_e = data.options) == null ? void 0 : _e.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN;
|
|
2808
2818
|
const mailgunSendData = {
|
|
2809
2819
|
to: clinicEmail,
|
|
@@ -2901,6 +2911,7 @@ var AppointmentMailingService = class extends BaseMailingService {
|
|
|
2901
2911
|
appointmentTime: `${formattedTime} (${timezoneName})`,
|
|
2902
2912
|
practitionerName: data.appointment.practitionerInfo.name,
|
|
2903
2913
|
clinicName: data.appointment.clinicInfo.name,
|
|
2914
|
+
clinicAddress: this.formatClinicAddress(data.appointment),
|
|
2904
2915
|
cancelledByDisplay
|
|
2905
2916
|
};
|
|
2906
2917
|
const cancellationReason = data.cancellationReason || data.appointment.cancellationReason;
|
|
@@ -2916,7 +2927,7 @@ var AppointmentMailingService = class extends BaseMailingService {
|
|
|
2916
2927
|
}
|
|
2917
2928
|
html = this.renderTemplate(html, templateVariables);
|
|
2918
2929
|
const subject = ((_a = data.options) == null ? void 0 : _a.customSubject) || `Appointment Cancelled: ${data.appointment.procedureInfo.name}`;
|
|
2919
|
-
const fromAddress = ((_b = data.options) == null ? void 0 : _b.fromAddress) || `
|
|
2930
|
+
const fromAddress = ((_b = data.options) == null ? void 0 : _b.fromAddress) || `Metaesthetics <no-reply@${((_c = data.options) == null ? void 0 : _c.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
2920
2931
|
const domainToSendFrom = ((_d = data.options) == null ? void 0 : _d.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN;
|
|
2921
2932
|
const mailgunSendData = {
|
|
2922
2933
|
to: recipientEmail,
|
|
@@ -3001,6 +3012,7 @@ var AppointmentMailingService = class extends BaseMailingService {
|
|
|
3001
3012
|
procedureName: data.appointment.procedureInfo.name,
|
|
3002
3013
|
practitionerName: data.appointment.practitionerInfo.name,
|
|
3003
3014
|
clinicName: data.appointment.clinicInfo.name,
|
|
3015
|
+
clinicAddress: this.formatClinicAddress(data.appointment),
|
|
3004
3016
|
previousDate: previousFormattedDate,
|
|
3005
3017
|
previousTime: `${previousFormattedTime} (${previousTimezoneName})`,
|
|
3006
3018
|
newDate: newFormattedDate,
|
|
@@ -3008,7 +3020,7 @@ var AppointmentMailingService = class extends BaseMailingService {
|
|
|
3008
3020
|
};
|
|
3009
3021
|
const html = this.renderTemplate(appointmentRescheduledProposalTemplate, templateVariables);
|
|
3010
3022
|
const subject = ((_a = data.options) == null ? void 0 : _a.customSubject) || `Action Required: Reschedule Proposal for Your ${data.appointment.procedureInfo.name} Appointment`;
|
|
3011
|
-
const fromAddress = ((_b = data.options) == null ? void 0 : _b.fromAddress) || `
|
|
3023
|
+
const fromAddress = ((_b = data.options) == null ? void 0 : _b.fromAddress) || `Metaesthetics <no-reply@${((_c = data.options) == null ? void 0 : _c.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
3012
3024
|
const domainToSendFrom = ((_d = data.options) == null ? void 0 : _d.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN;
|
|
3013
3025
|
const mailgunSendData = {
|
|
3014
3026
|
to: recipientEmail,
|
|
@@ -12493,7 +12505,7 @@ var PractitionerInviteMailingService = class extends BaseMailingService {
|
|
|
12493
12505
|
const contactName = data.clinic.contactName || "Clinic Administrator";
|
|
12494
12506
|
const contactEmail = data.clinic.contactEmail;
|
|
12495
12507
|
const subject = ((_b = data.options) == null ? void 0 : _b.customSubject) || this.DEFAULT_SUBJECT;
|
|
12496
|
-
const fromAddress = ((_c = data.options) == null ? void 0 : _c.fromAddress) || `
|
|
12508
|
+
const fromAddress = ((_c = data.options) == null ? void 0 : _c.fromAddress) || `Metaesthetics <no-reply@${((_d = data.options) == null ? void 0 : _d.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
12497
12509
|
const currentYear = (/* @__PURE__ */ new Date()).getFullYear().toString();
|
|
12498
12510
|
const practitionerName = `${data.practitioner.firstName} ${data.practitioner.lastName}`;
|
|
12499
12511
|
const templateVariables = {
|
|
@@ -12653,7 +12665,7 @@ var PractitionerInviteMailingService = class extends BaseMailingService {
|
|
|
12653
12665
|
Logger.warn(
|
|
12654
12666
|
"[PractitionerInviteMailingService] No fromAddress provided, using default"
|
|
12655
12667
|
);
|
|
12656
|
-
mailgunConfig.fromAddress = `
|
|
12668
|
+
mailgunConfig.fromAddress = `Metaesthetics <no-reply@${this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
12657
12669
|
}
|
|
12658
12670
|
const emailData = {
|
|
12659
12671
|
token: {
|
|
@@ -12799,7 +12811,7 @@ var existingPractitionerInvitationTemplate = `
|
|
|
12799
12811
|
<body>
|
|
12800
12812
|
<div class="container">
|
|
12801
12813
|
<div class="header">
|
|
12802
|
-
<div class="logo">
|
|
12814
|
+
<div class="logo">Metaesthetics</div>
|
|
12803
12815
|
<p>Professional Medical Network</p>
|
|
12804
12816
|
</div>
|
|
12805
12817
|
|
|
@@ -12843,12 +12855,12 @@ var existingPractitionerInvitationTemplate = `
|
|
|
12843
12855
|
|
|
12844
12856
|
<div class="footer">
|
|
12845
12857
|
<p>Best regards,<br>
|
|
12846
|
-
<strong>The
|
|
12858
|
+
<strong>The Metaesthetics Team</strong></p>
|
|
12847
12859
|
<p>This invitation will expire on {{expirationDate}}. Please respond before this date.</p>
|
|
12848
12860
|
<hr>
|
|
12849
12861
|
<p style="font-size: 12px; color: #999;">
|
|
12850
|
-
This is an automated message from
|
|
12851
|
-
<br>\xA9 {{currentYear}}
|
|
12862
|
+
This is an automated message from Metaesthetics. If you received this email in error, please ignore it.
|
|
12863
|
+
<br>\xA9 {{currentYear}} Metaesthetics. All rights reserved.
|
|
12852
12864
|
</p>
|
|
12853
12865
|
</div>
|
|
12854
12866
|
</div>
|
|
@@ -13003,7 +13015,7 @@ var inviteAcceptedNotificationTemplate = `
|
|
|
13003
13015
|
<body>
|
|
13004
13016
|
<div class="container">
|
|
13005
13017
|
<div class="header">
|
|
13006
|
-
<div class="logo">
|
|
13018
|
+
<div class="logo">Metaesthetics</div>
|
|
13007
13019
|
<p>Clinic Management System</p>
|
|
13008
13020
|
</div>
|
|
13009
13021
|
|
|
@@ -13070,11 +13082,11 @@ var inviteAcceptedNotificationTemplate = `
|
|
|
13070
13082
|
|
|
13071
13083
|
<div class="footer">
|
|
13072
13084
|
<p>Best regards,<br>
|
|
13073
|
-
<strong>The
|
|
13085
|
+
<strong>The Metaesthetics Team</strong></p>
|
|
13074
13086
|
<hr>
|
|
13075
13087
|
<p style="font-size: 12px; color: #999;">
|
|
13076
|
-
This is an automated notification from
|
|
13077
|
-
<br>\xA9 {{currentYear}}
|
|
13088
|
+
This is an automated notification from Metaesthetics.
|
|
13089
|
+
<br>\xA9 {{currentYear}} Metaesthetics. All rights reserved.
|
|
13078
13090
|
</p>
|
|
13079
13091
|
</div>
|
|
13080
13092
|
</div>
|
|
@@ -13239,7 +13251,7 @@ var inviteRejectedNotificationTemplate = `
|
|
|
13239
13251
|
<body>
|
|
13240
13252
|
<div class="container">
|
|
13241
13253
|
<div class="header">
|
|
13242
|
-
<div class="logo">
|
|
13254
|
+
<div class="logo">Metaesthetics</div>
|
|
13243
13255
|
<p>Clinic Management System</p>
|
|
13244
13256
|
</div>
|
|
13245
13257
|
|
|
@@ -13307,11 +13319,11 @@ var inviteRejectedNotificationTemplate = `
|
|
|
13307
13319
|
|
|
13308
13320
|
<div class="footer">
|
|
13309
13321
|
<p>Best regards,<br>
|
|
13310
|
-
<strong>The
|
|
13322
|
+
<strong>The Metaesthetics Team</strong></p>
|
|
13311
13323
|
<hr>
|
|
13312
13324
|
<p style="font-size: 12px; color: #999;">
|
|
13313
|
-
This is an automated notification from
|
|
13314
|
-
<br>\xA9 {{currentYear}}
|
|
13325
|
+
This is an automated notification from Metaesthetics.
|
|
13326
|
+
<br>\xA9 {{currentYear}} Metaesthetics. All rights reserved.
|
|
13315
13327
|
</p>
|
|
13316
13328
|
<p style="font-size: 12px; color: #999;">
|
|
13317
13329
|
<strong>Note:</strong> Practitioner contact information is not shared without their consent.
|
|
@@ -13332,7 +13344,7 @@ var ExistingPractitionerInviteMailingService = class extends BaseMailingService
|
|
|
13332
13344
|
constructor(firestore19, mailgunClient) {
|
|
13333
13345
|
super(firestore19, mailgunClient);
|
|
13334
13346
|
this.DEFAULT_MAILGUN_DOMAIN = "mg.metaesthetics.net";
|
|
13335
|
-
this.DEFAULT_FROM_ADDRESS = "
|
|
13347
|
+
this.DEFAULT_FROM_ADDRESS = "Metaesthetics <no-reply@mg.metaesthetics.net>";
|
|
13336
13348
|
}
|
|
13337
13349
|
/**
|
|
13338
13350
|
* Sends an invitation email to an existing practitioner
|
|
@@ -13761,7 +13773,7 @@ var patientInvitationTemplate = `
|
|
|
13761
13773
|
<body>
|
|
13762
13774
|
<div class="container">
|
|
13763
13775
|
<div class="header">
|
|
13764
|
-
<h1>Welcome to
|
|
13776
|
+
<h1>Welcome to Metaesthetics</h1>
|
|
13765
13777
|
</div>
|
|
13766
13778
|
<div class="content">
|
|
13767
13779
|
<p>Hello {{patientName}},</p>
|
|
@@ -13788,7 +13800,7 @@ var patientInvitationTemplate = `
|
|
|
13788
13800
|
|
|
13789
13801
|
<p>To create your account:</p>
|
|
13790
13802
|
<ol>
|
|
13791
|
-
<li>Download the <strong>
|
|
13803
|
+
<li>Download the <strong>Metaesthetics</strong> app from the App Store (iOS) or Google Play Store (Android)</li>
|
|
13792
13804
|
<li>Open the app and create an account using your email address</li>
|
|
13793
13805
|
<li>When prompted, enter the token shown above</li>
|
|
13794
13806
|
<li>Your profile will be automatically linked to your new account</li>
|
|
@@ -13798,7 +13810,7 @@ var patientInvitationTemplate = `
|
|
|
13798
13810
|
</div>
|
|
13799
13811
|
<div class="footer">
|
|
13800
13812
|
<p>This is an automated message from {{clinicName}}. Please do not reply to this email.</p>
|
|
13801
|
-
<p>© {{currentYear}}
|
|
13813
|
+
<p>© {{currentYear}} Metaesthetics. All rights reserved.</p>
|
|
13802
13814
|
</div>
|
|
13803
13815
|
</div>
|
|
13804
13816
|
</body>
|
|
@@ -13815,7 +13827,7 @@ var PatientInviteMailingService = class extends BaseMailingService {
|
|
|
13815
13827
|
constructor(firestore19, mailgunClient) {
|
|
13816
13828
|
super(firestore19, mailgunClient);
|
|
13817
13829
|
this.DEFAULT_REGISTRATION_URL = "https://metaesthetics.net/patient/register";
|
|
13818
|
-
this.DEFAULT_SUBJECT = "Claim Your Patient Profile -
|
|
13830
|
+
this.DEFAULT_SUBJECT = "Claim Your Patient Profile - Metaesthetics";
|
|
13819
13831
|
this.DEFAULT_MAILGUN_DOMAIN = "mg.metaesthetics.net";
|
|
13820
13832
|
}
|
|
13821
13833
|
/**
|
|
@@ -13840,7 +13852,7 @@ var PatientInviteMailingService = class extends BaseMailingService {
|
|
|
13840
13852
|
const contactName = data.clinic.contactName || "Clinic Administrator";
|
|
13841
13853
|
const contactEmail = data.clinic.contactEmail;
|
|
13842
13854
|
const subject = ((_b = data.options) == null ? void 0 : _b.customSubject) || this.DEFAULT_SUBJECT;
|
|
13843
|
-
const fromAddress = ((_c = data.options) == null ? void 0 : _c.fromAddress) || `
|
|
13855
|
+
const fromAddress = ((_c = data.options) == null ? void 0 : _c.fromAddress) || `Metaesthetics <no-reply@${((_d = data.options) == null ? void 0 : _d.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
13844
13856
|
const currentYear = (/* @__PURE__ */ new Date()).getFullYear().toString();
|
|
13845
13857
|
const patientName = `${data.patient.firstName} ${data.patient.lastName}`;
|
|
13846
13858
|
const templateVariables = {
|
|
@@ -14010,7 +14022,7 @@ var PatientInviteMailingService = class extends BaseMailingService {
|
|
|
14010
14022
|
Logger.warn(
|
|
14011
14023
|
"[PatientInviteMailingService] No fromAddress provided, using default"
|
|
14012
14024
|
);
|
|
14013
|
-
mailgunConfig.fromAddress = `
|
|
14025
|
+
mailgunConfig.fromAddress = `Metaesthetics <no-reply@${this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
14014
14026
|
}
|
|
14015
14027
|
const emailData = {
|
|
14016
14028
|
token: {
|
|
@@ -14066,7 +14078,7 @@ var clinicWelcomeTemplate = `
|
|
|
14066
14078
|
<head>
|
|
14067
14079
|
<meta charset="UTF-8">
|
|
14068
14080
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
14069
|
-
<title>Welcome to
|
|
14081
|
+
<title>Welcome to Metaesthetics</title>
|
|
14070
14082
|
<!--[if mso]>
|
|
14071
14083
|
<noscript>
|
|
14072
14084
|
<xml>
|
|
@@ -14089,7 +14101,7 @@ var clinicWelcomeTemplate = `
|
|
|
14089
14101
|
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
14090
14102
|
<tr>
|
|
14091
14103
|
<td>
|
|
14092
|
-
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">
|
|
14104
|
+
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">Metaesthetics</h1>
|
|
14093
14105
|
</td>
|
|
14094
14106
|
</tr>
|
|
14095
14107
|
</table>
|
|
@@ -14102,7 +14114,7 @@ var clinicWelcomeTemplate = `
|
|
|
14102
14114
|
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #00BB38;">
|
|
14103
14115
|
<tr>
|
|
14104
14116
|
<td style="padding: 20px 48px;">
|
|
14105
|
-
<p style="margin: 0; font-size: 13px; font-weight: 600; color: #ffffff; letter-spacing: 1.5px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Welcome to
|
|
14117
|
+
<p style="margin: 0; font-size: 13px; font-weight: 600; color: #ffffff; letter-spacing: 1.5px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Welcome to Metaesthetics</p>
|
|
14106
14118
|
</td>
|
|
14107
14119
|
</tr>
|
|
14108
14120
|
</table>
|
|
@@ -14119,7 +14131,7 @@ var clinicWelcomeTemplate = `
|
|
|
14119
14131
|
</p>
|
|
14120
14132
|
|
|
14121
14133
|
<p style="margin: 0 0 32px 0; font-size: 16px; color: #555555; line-height: 1.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
14122
|
-
Thank you for registering <strong style="color: #67574A;">{{clinicGroupName}}</strong> with
|
|
14134
|
+
Thank you for registering <strong style="color: #67574A;">{{clinicGroupName}}</strong> with Metaesthetics. Your account has been successfully created and you're now ready to start managing your aesthetic practice.
|
|
14123
14135
|
</p>
|
|
14124
14136
|
|
|
14125
14137
|
<!-- Account Details Card -->
|
|
@@ -14242,7 +14254,7 @@ var clinicWelcomeTemplate = `
|
|
|
14242
14254
|
|
|
14243
14255
|
<!-- Thank You -->
|
|
14244
14256
|
<p style="margin: 0; font-size: 14px; color: #868686; line-height: 1.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
14245
|
-
Thank you for choosing
|
|
14257
|
+
Thank you for choosing Metaesthetics. We look forward to supporting your practice.
|
|
14246
14258
|
</p>
|
|
14247
14259
|
|
|
14248
14260
|
</td>
|
|
@@ -14254,9 +14266,9 @@ var clinicWelcomeTemplate = `
|
|
|
14254
14266
|
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
14255
14267
|
<tr>
|
|
14256
14268
|
<td>
|
|
14257
|
-
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500; color: #67574A; font-family: Georgia, 'Times New Roman', serif;">
|
|
14269
|
+
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500; color: #67574A; font-family: Georgia, 'Times New Roman', serif;">Metaesthetics</p>
|
|
14258
14270
|
<p style="margin: 0 0 16px 0; font-size: 13px; color: #868686; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Premium Aesthetic Services Platform</p>
|
|
14259
|
-
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from
|
|
14271
|
+
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from Metaesthetics. Please do not reply directly to this email.</p>
|
|
14260
14272
|
</td>
|
|
14261
14273
|
</tr>
|
|
14262
14274
|
</table>
|
|
@@ -14269,7 +14281,7 @@ var clinicWelcomeTemplate = `
|
|
|
14269
14281
|
<table role="presentation" width="600" cellspacing="0" cellpadding="0" border="0" style="max-width: 600px;">
|
|
14270
14282
|
<tr>
|
|
14271
14283
|
<td style="padding: 24px 48px; text-align: center;">
|
|
14272
|
-
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">© {{currentYear}}
|
|
14284
|
+
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">© {{currentYear}} Metaesthetics. All rights reserved.</p>
|
|
14273
14285
|
</td>
|
|
14274
14286
|
</tr>
|
|
14275
14287
|
</table>
|
|
@@ -14292,7 +14304,7 @@ var ClinicWelcomeMailingService = class extends BaseMailingService {
|
|
|
14292
14304
|
super(firestore19, mailgunClient);
|
|
14293
14305
|
this.DEFAULT_DASHBOARD_URL = "https://app.metaesthetics.net/dashboard";
|
|
14294
14306
|
this.DEFAULT_SUPPORT_EMAIL = "support@metaesthetics.net";
|
|
14295
|
-
this.DEFAULT_SUBJECT = "Welcome to
|
|
14307
|
+
this.DEFAULT_SUBJECT = "Welcome to Metaesthetics - Your Clinic Registration is Complete";
|
|
14296
14308
|
this.DEFAULT_MAILGUN_DOMAIN = "mg.metaesthetics.net";
|
|
14297
14309
|
}
|
|
14298
14310
|
/**
|
|
@@ -14316,7 +14328,7 @@ var ClinicWelcomeMailingService = class extends BaseMailingService {
|
|
|
14316
14328
|
const dashboardUrl = ((_a = data.options) == null ? void 0 : _a.dashboardUrl) || this.DEFAULT_DASHBOARD_URL;
|
|
14317
14329
|
const supportEmail = ((_b = data.options) == null ? void 0 : _b.supportEmail) || this.DEFAULT_SUPPORT_EMAIL;
|
|
14318
14330
|
const subject = ((_c = data.options) == null ? void 0 : _c.customSubject) || this.DEFAULT_SUBJECT;
|
|
14319
|
-
const fromAddress = ((_d = data.options) == null ? void 0 : _d.fromAddress) || `
|
|
14331
|
+
const fromAddress = ((_d = data.options) == null ? void 0 : _d.fromAddress) || `Metaesthetics <no-reply@${((_e = data.options) == null ? void 0 : _e.mailgunDomain) || this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
14320
14332
|
const currentYear = (/* @__PURE__ */ new Date()).getFullYear().toString();
|
|
14321
14333
|
const templateVariables = {
|
|
14322
14334
|
adminName: data.admin.name,
|
|
@@ -14417,7 +14429,7 @@ var ClinicWelcomeMailingService = class extends BaseMailingService {
|
|
|
14417
14429
|
Logger.warn(
|
|
14418
14430
|
"[ClinicWelcomeMailingService] No fromAddress provided, using default"
|
|
14419
14431
|
);
|
|
14420
|
-
mailgunConfig.fromAddress = `
|
|
14432
|
+
mailgunConfig.fromAddress = `Metaesthetics <no-reply@${this.DEFAULT_MAILGUN_DOMAIN}>`;
|
|
14421
14433
|
}
|
|
14422
14434
|
const emailData = {
|
|
14423
14435
|
admin: {
|
|
@@ -1355,6 +1355,8 @@ interface PractitionerCertification {
|
|
|
1355
1355
|
issueDate: Timestamp | Date;
|
|
1356
1356
|
expiryDate?: Timestamp | Date | null;
|
|
1357
1357
|
verificationStatus: "pending" | "verified" | "rejected";
|
|
1358
|
+
diploma?: string;
|
|
1359
|
+
diplomaNumber?: string;
|
|
1358
1360
|
}
|
|
1359
1361
|
/**
|
|
1360
1362
|
* Interfejs za radno vreme zdravstvenog radnika u klinici
|
|
@@ -1355,6 +1355,8 @@ interface PractitionerCertification {
|
|
|
1355
1355
|
issueDate: Timestamp | Date;
|
|
1356
1356
|
expiryDate?: Timestamp | Date | null;
|
|
1357
1357
|
verificationStatus: "pending" | "verified" | "rejected";
|
|
1358
|
+
diploma?: string;
|
|
1359
|
+
diplomaNumber?: string;
|
|
1358
1360
|
}
|
|
1359
1361
|
/**
|
|
1360
1362
|
* Interfejs za radno vreme zdravstvenog radnika u klinici
|
package/dist/index.d.mts
CHANGED
|
@@ -2020,6 +2020,8 @@ interface PractitionerCertification {
|
|
|
2020
2020
|
issueDate: Timestamp | Date;
|
|
2021
2021
|
expiryDate?: Timestamp | Date | null;
|
|
2022
2022
|
verificationStatus: "pending" | "verified" | "rejected";
|
|
2023
|
+
diploma?: string;
|
|
2024
|
+
diplomaNumber?: string;
|
|
2023
2025
|
}
|
|
2024
2026
|
/**
|
|
2025
2027
|
* Interfejs za radno vreme zdravstvenog radnika u klinici
|
package/dist/index.d.ts
CHANGED
|
@@ -2020,6 +2020,8 @@ interface PractitionerCertification {
|
|
|
2020
2020
|
issueDate: Timestamp | Date;
|
|
2021
2021
|
expiryDate?: Timestamp | Date | null;
|
|
2022
2022
|
verificationStatus: "pending" | "verified" | "rejected";
|
|
2023
|
+
diploma?: string;
|
|
2024
|
+
diplomaNumber?: string;
|
|
2023
2025
|
}
|
|
2024
2026
|
/**
|
|
2025
2027
|
* Interfejs za radno vreme zdravstvenog radnika u klinici
|
package/dist/index.js
CHANGED
|
@@ -12709,7 +12709,9 @@ var practitionerCertificationSchema = import_zod20.z.object({
|
|
|
12709
12709
|
issuingAuthority: import_zod20.z.string().min(2).max(100),
|
|
12710
12710
|
issueDate: import_zod20.z.instanceof(import_firestore35.Timestamp).or(import_zod20.z.date()),
|
|
12711
12711
|
expiryDate: import_zod20.z.instanceof(import_firestore35.Timestamp).or(import_zod20.z.date()).optional().nullable(),
|
|
12712
|
-
verificationStatus: import_zod20.z.enum(["pending", "verified", "rejected"])
|
|
12712
|
+
verificationStatus: import_zod20.z.enum(["pending", "verified", "rejected"]),
|
|
12713
|
+
diploma: import_zod20.z.string().max(200).optional(),
|
|
12714
|
+
diplomaNumber: import_zod20.z.string().max(100).optional()
|
|
12713
12715
|
});
|
|
12714
12716
|
var timeSlotSchema = import_zod20.z.object({
|
|
12715
12717
|
start: import_zod20.z.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format"),
|
package/dist/index.mjs
CHANGED
|
@@ -12730,7 +12730,9 @@ var practitionerCertificationSchema = z20.object({
|
|
|
12730
12730
|
issuingAuthority: z20.string().min(2).max(100),
|
|
12731
12731
|
issueDate: z20.instanceof(Timestamp17).or(z20.date()),
|
|
12732
12732
|
expiryDate: z20.instanceof(Timestamp17).or(z20.date()).optional().nullable(),
|
|
12733
|
-
verificationStatus: z20.enum(["pending", "verified", "rejected"])
|
|
12733
|
+
verificationStatus: z20.enum(["pending", "verified", "rejected"]),
|
|
12734
|
+
diploma: z20.string().max(200).optional(),
|
|
12735
|
+
diplomaNumber: z20.string().max(100).optional()
|
|
12734
12736
|
});
|
|
12735
12737
|
var timeSlotSchema = z20.object({
|
|
12736
12738
|
start: z20.string().regex(/^([01]\d|2[0-3]):([0-5]\d)$/, "Invalid time format"),
|
package/package.json
CHANGED