mailer


Logs | Files | GitLab


1
commit 14a1279efef75c94351d39dc3c7c92440743fcc9
2
Author: Connor Etherington <[email protected]>
3
Date:   Fri Apr 14 06:30:10 2023 +0200
4
5
    Auto-Commit Update 14.04.2023 - 06:30:10
6
---
7
 {config => .bkp/config}/clients.json               |   2 +
8
 .env                                               |   1 +
9
 clients/clients.json                               |  30 ++
10
 clients/concise/inputs/main.json                   |   1 +
11
 clients/concise/templates/main.html                |  99 +++++
12
 clients/freepaid/inputs/affiliate-register.json    |   1 +
13
 clients/freepaid/inputs/passwordReset.json         |   1 +
14
 clients/freepaid/inputs/user-register.json         |   1 +
15
 .../{passwordReset.js => passwordReset.html}       |   4 +-
16
 .../{user-register.js => postPayment.html}         |  21 +-
17
 clients/freepaid/templates/user-register.html      | 255 +++++++++++++
18
 clients/freepaid/templates/welcomeMail.js          |  23 ++
19
 methods/.sendMail.js                               | 136 +++++++
20
 methods/main.js                                    |  97 +++++
21
 methods/mkMail.js                                  |  89 +++++
22
 methods/mkTemplates.js                             |  67 ----
23
 methods/updateDB.js                                | 108 ++++++
24
 models/client.js                                   |   1 +
25
 models/template.js                                 |   3 +-
26
 package.json                                       |   2 +
27
 routes/api.js                                      |  45 +++
28
 server.js                                          | 138 +++----
29
 yarn.lock                                          | 402 +++++++++++++++++++++
30
 23 files changed, 1352 insertions(+), 175 deletions(-)
31
32
diff --git a/config/clients.json b/.bkp/config/clients.json
33
similarity index 89%
34
rename from config/clients.json
35
rename to .bkp/config/clients.json
36
index 2a6ed24..a8a130e 100644
37
--- a/config/clients.json
38
+++ b/.bkp/config/clients.json
39
@@ -2,6 +2,7 @@
40
   {
41
     "name": "FREEPAID",
42
     "token": "SPk2xehvDx8SV9GR6hCjsDCCC2ZjIexxNg3ZlSuKRyd1yH82kymg9mVS1yfnUIYkDDEsBPZgh64vqvWE",
43
+    "sender": "[email protected]",
44
     "config": {
45
       "host": "mail.supersim.co.za",
46
       "port": 465,
47
@@ -15,6 +16,7 @@
48
   {
49
     "name": "CONCISE",
50
     "token": "ss0n08iyc9ohbjSCkGlt0ZJduRg6E1M6lM2QfTY0GtqoXlX0MnQAMvKhFpjr0bvemQhq8g852L0AjDLJ",
51
+    "sender": "[email protected]",
52
     "config": {
53
       "host": "smtp-relay.sendinblue.com",
54
       "port": 587,
55
diff --git a/.env b/.env
56
index 809d8c0..9b30338 100644
57
--- a/.env
58
+++ b/.env
59
@@ -1,3 +1,4 @@
60
 
61
 URI="mongodb+srv://a4to:c1b120d56bb97eb37fbc45f009e33f03f2840@mycondb.bt5st8l.mongodb.net/mailer?retryWrites=true"
62
+token='oiouoiok'
63
 
64
diff --git a/clients/clients.json b/clients/clients.json
65
new file mode 100644
66
index 0000000..a8a130e
67
--- /dev/null
68
+++ b/clients/clients.json
69
@@ -0,0 +1,30 @@
70
+[
71
+  {
72
+    "name": "FREEPAID",
73
+    "token": "SPk2xehvDx8SV9GR6hCjsDCCC2ZjIexxNg3ZlSuKRyd1yH82kymg9mVS1yfnUIYkDDEsBPZgh64vqvWE",
74
+    "sender": "[email protected]",
75
+    "config": {
76
+      "host": "mail.supersim.co.za",
77
+      "port": 465,
78
+      "secure": true,
79
+      "auth": {
80
+        "user": "[email protected]",
81
+        "pass": "springbokke6"
82
+      }
83
+    }
84
+  },
85
+  {
86
+    "name": "CONCISE",
87
+    "token": "ss0n08iyc9ohbjSCkGlt0ZJduRg6E1M6lM2QfTY0GtqoXlX0MnQAMvKhFpjr0bvemQhq8g852L0AjDLJ",
88
+    "sender": "[email protected]",
89
+    "config": {
90
+      "host": "smtp-relay.sendinblue.com",
91
+      "port": 587,
92
+      "secure": false,
93
+      "auth": {
94
+        "user": "[email protected]",
95
+        "pass": "qbEw1zXxDg6hC9MQ"
96
+      }
97
+    }
98
+  }
99
+]
100
diff --git a/clients/concise/inputs/main.json b/clients/concise/inputs/main.json
101
new file mode 100644
102
index 0000000..fe51488
103
--- /dev/null
104
+++ b/clients/concise/inputs/main.json
105
@@ -0,0 +1 @@
106
+[]
107
diff --git a/clients/concise/templates/main.html b/clients/concise/templates/main.html
108
new file mode 100644
109
index 0000000..376f038
110
--- /dev/null
111
+++ b/clients/concise/templates/main.html
112
@@ -0,0 +1,99 @@
113
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
114
+<html>
115
+<head>
116
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
117
+<title>SuperSIM</title>
118
+<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700" rel="stylesheet">
119
+<style type="text/css">
120
+html { -webkit-text-size-adjust: none; -ms-text-size-adjust: none;}
121
+
122
+	@media only screen and (min-device-width: 750px) {
123
+		.table750 {width: 750px !important;}
124
+	}
125
+	@media only screen and (max-device-width: 750px), only screen and (max-width: 750px){
126
+      table[class="table750"] {width: 100% !important;}
127
+      .mob_b {width: 93% !important; max-width: 93% !important; min-width: 93% !important;}
128
+      .mob_b1 {width: 100% !important; max-width: 100% !important; min-width: 100% !important;}
129
+      .mob_left {text-align: left !important;}
130
+      .mob_soc {width: 50% !important; max-width: 50% !important; min-width: 50% !important;}
131
+      .mob_menu {width: 50% !important; max-width: 50% !important; min-width: 50% !important; box-shadow: inset -1px -1px 0 0 rgba(255, 255, 255, 0.2); }
132
+ 	}
133
+   @media only screen and (max-device-width: 550px), only screen and (max-width: 550px){
134
+      .mod_div {display: block !important;}
135
+   }
136
+	.table750 {width: 750px;}
137
+</style>
138
+</head>
139
+<body style="margin: 0; padding: 0;">
140
+
141
+<table cellpadding="0" cellspacing="0" border="0" width="100%" style="background: #f3f3f3; min-width: 350px; font-size: 1px; line-height: normal;">
142
+ 	<tr>
143
+   	<td align="center" valign="top">
144
+   		<!--[if (gte mso 9)|(IE)]>
145
+         <table border="0" cellspacing="0" cellpadding="0">
146
+         <tr><td align="center" valign="top" width="750"><![endif]-->
147
+   		<table cellpadding="0" cellspacing="0" border="0" width="750" class="table750" style="width: 100%; max-width: 750px; min-width: 350px; background: #f3f3f3;">
148
+   			<tr>
149
+               <td width="3%" style="width: 3%; max-width: 3%; min-width: 10px;">&nbsp;</td>
150
+   				<td align="center" valign="top" style="background: #ffffff;">
151
+
152
+                  <table cellpadding="0" cellspacing="0" border="0" width="100%" style="width: 100% !important; min-width: 100%; max-width: 100%; background: #f3f3f3;">
153
+                     <tr>
154
+                        <td align="right" valign="top">
155
+                           <div style="height: 22px; line-height: 22px; font-size: 20px;">&nbsp;</div>
156
+                        </td>
157
+                     </tr>
158
+                  </table>
159
+
160
+                  <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88% !important; min-width: 88%; max-width: 88%;">
161
+                     <tr>
162
+                        <td align="left" valign="top">
163
+                           <div style="height: 9px; line-height: 39px; font-size: 37px;">&nbsp;</div>
164
+                           <a href="#" target="_blank" style="display: block; max-width: 128px;">
165
+                           </a>
166
+                           <div style="height: 10px; line-height: 80px; font-size: 78px;">&nbsp;</div>
167
+                        </td>
168
+                     </tr>
169
+                  </table>
170
+
171
+
172
+                  <table cellpadding="0" cellspacing="0" border="0" width="88%" style="width: 88% !important; min-width: 88%; max-width: 88%;">
173
+                     <tr>
174
+                        <td align="left" valign="top">
175
+                           <div style="height: 35px; line-height: 35px; font-size: 33px;">&nbsp;</div>
176
+                           <font face="'Source Sans Pro', sans-serif" color="#333333" style="font-size: 20px; line-height: 32px;">
177
+                              <span style="font-family: 'Source Sans Pro', Arial, Tahoma, Geneva, sans-serif; color: #333333; font-size: 20px; line-height: 30px;">
178
+
179
+
180
+                                 ${message}
181
+
182
+
183
+                              </span>
184
+                           </font>
185
+                           <div style="height: 32px; line-height: 32px; font-size: 30px;">&nbsp;</div>
186
+                           <table class="mob_btn" cellpadding="0" cellspacing="0" border="0" style="background: #27cbcc; border-radius: 4px;">
187
+                              <tr>
188
+                                <img width="200" border="0" style="display: block; width: 200px;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3kAAADrCAYAAADUtl8AAAAAxnpUWHRSYXcgcHJvZmlsZSB0eXBl IGV4aWYAAHjabVBRDsMgCP3nFDsCClU8Dq4u2Q12/KHQpN36EuAJ+ERgfN4veEzkxMBbldJKQQM3 blmNCDp0+YS8/EJtSJG95GH0uJQtNVu8DaV4TEc+LhwxqbHtJCTPKPRroXHoy49QPERzomxkD6EW QpS9kEJA/VtYmtTzF/rAK8QNpuuhuibC/zNX296+2TuU86BEaJ6IfQCaRkC6iJrV2bg4W5ualZjE FnK3pwPwBeB8WkHm8VQrAAABhGlDQ1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw0AcxV9TRZGKgx1EHTJU QbCLinSsVShChVArtOpgcukXNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APE1cVJ0UVK/F9SaBHjwXE/ 3t173L0DhEaFaVZXHNB020wnE2I2tyr2vELACMKYQExmljEnSSn4jq97BPh6F+VZ/uf+HP1q3mJA QCSOM8O0iTeIZzdtg/M+cZiVZJX4nHjSpAsSP3Jd8fiNc9FlgWeGzUx6njhMLBY7WOlgVjI14hni iKrplC9kPVY5b3HWKjXWuid/YSivryxzneYokljEEiSIUFBDGRXYiNKqk2IhTfsJH/+w65fIpZCr DEaOBVShQXb94H/wu1urMD3lJYUSQPeL43yMAT27QLPuON/HjtM8AYLPwJXe9lcbQOyT9HpbixwB A9vAxXVbU/aAyx1g6MmQTdmVgjSFQgF4P6NvygGDt0Dfmtdbax+nD0CGukrdAAeHwHiRstd93t3b 2du/Z1r9/QAH0XLiQxBBrwAADXhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBi ZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1s bnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDQuNC4wLUV4aXYyIj4KIDxy ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4 LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcE1NPSJo dHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9u cy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgIHhtbG5zOkdJTVA9 Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcv ZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlm Zi8xLjAvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4 bXBNTTpEb2N1bWVudElEPSJnaW1wOmRvY2lkOmdpbXA6NTc2NDc5MjktMTcwNC00YjQzLThmZmIt MmVkNGY5NzVkNWU5IgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjg3YTMzNmU0LTc3ZGEt NGJjMi1hZDI4LTY0NjI1MzA5N2NlNiIKICAgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAu ZGlkOjM4NTFmNGFiLTZmNzktNDJjZS04Mjk3LTIyZDc5ZjE4MjhlNCIKICAgR0lNUDpBUEk9IjIu MCIKICAgR0lNUDpQbGF0Zm9ybT0iTGludXgiCiAgIEdJTVA6VGltZVN0YW1wPSIxNjc3NTMwNjIx MTc5ODA4IgogICBHSU1QOlZlcnNpb249IjIuMTAuMzQiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5n IgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCIK ICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMzowMjoyN1QyMjo0MzozNiswMjowMCIKICAgeG1wOk1v ZGlmeURhdGU9IjIwMjM6MDI6MjdUMjI6NDM6MzYrMDI6MDAiPgogICA8eG1wTU06SGlzdG9yeT4K ICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAg ICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4NDMx YTQyMC04ZWY3LTRhMzItYTU1MC1mYTFlNDU5OGZiNDciCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdl bnQ9IkdpbXAgMi4xMCAoTGludXgpIgogICAgICBzdEV2dDp3aGVuPSIyMDIzLTAyLTI3VDIyOjQz OjQxKzAyOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpE ZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PqyawXMA AAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQfnAhsUKykVoGzN AAAgAElEQVR42uzdd3gU1f4/8Pek95AGJAFCAkivAnopQmgWVECKiqigcgGVKwkYBUSaoF8EEsSC YgHBjgXFK1WaSichQAg1CUlI79lks+38/vCSn2iym8n2zfvlk+fehzkzOzvz2XPOZ8o5ABERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERE5HMkRv5ROpxOFhYXIyclBUVERiouLa/8qKytRXV0NhUKB 6upqVFVVQaPRQKvV1v5pNBqr7LezszOcnJzg7OwMZ2dnuLu71/55enrCx8cHvr6+8PX1hb+/P4KD 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 KCsrq41bhUKB6upqKJVKqFQqqFSq2vjV6XQQQpgsfv8aj05OTnB1dYWHh0dtXHp6esLb27s2Jn19 fREYGHhLXHKEaCIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IrIFCSJBNPvffwkiQfCIEBERERER2aH9Yr9oK9oK/O2/tqKt2C/2M9kjIiIiIiKyB2kiTYwVY/+R 3P39v7FirEgTaUz2iIiIiIiIbFGJKBFLxBKDyd3f/1silogSUcJkj4iICIDEQ0BERLZgk9gklmAJ 0pFe5/In8SQAYDM217m8LdpiCZZgqjS1ybRtOp1OZGdnIys7Gzk5OaisVKC6ugpCAH5+fvD384O/ vz86dGiPFi1aWO24VFZWivT0dGRmZaG4uBjV1UqoVSp4eXvDx8cbfn5+iIqMQkREG7i4uFhkP3Nz c8Wx48eRn5+PoKAg3DV4MIKDg60eO5cvXxYnT52GQqFARJs2GDx4EDw8PBwyptPS0sTRY8dRWlqK oKBADBw4EOFhYWb/rhdSU8XJkyehUFShZYsWGDLkLgQEBDjUMVYoFOLgwUPIzMqEh7sHevfpjR7d u8v+jlVVVWLvvn3IyclBUGAQoqOHIigoyCLH6uzZc+L06dOoUdUgMjISQ4YMgZurq0U+W6vViuzs G7iRcwM5OTmoqKhETY0SGo0WPj7e8PXxha+fL1qFhyMyKspi+yWHC7sVRERkTYkiUcQgBlMxtc7l QzAECUhAb6m3dLP8HMzBQRy8pVw60jEVUzFUDBXxiK8t72gyMzPFrt17cPTYUdw5YCAqKioatN7g u4aILl274s47+uPuu+9GWGio2Y6PTqcTSUlnsHPXTpw4cRL97/wXhDB8o9XNzQ0TH35YRA8dipEj RqBDhw5m2cdvv/tO3Hf/A6iurq79N1cXF2zf/qMYM+ZBq8XNG/+3Sjw4dtwt/9amdWtkZmaK1q1b N3i/Ll++LN5a/zZOnDyJsrIyo/bJy9MTfv7+8PPzQ8sWLdCzZw/06tkTPXv1greXV6OP1bq33hL3 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 iIg64b+QNWNYKPCl5gAAAABJRU5ErkJggg==" />
189
+                              </tr>
190
+                           </table>
191
+                           <div style="height: 45px; line-height: 45px; font-size: 43px;">&nbsp;</div>
192
+                        </td>
193
+                     </tr>
194
+                  </table>
195
+
196
+                  <table cellpadding="0" cellspacing="0" border="0" width="100%" style="width: 100% !important; min-width: 100%; min-height: 30px;max-width: 100%; background: #f3f3f3;">
197
+         </table>
198
+                  </table>
199
+
200
+               </td>
201
+               <td width="3%" style="width: 3%; max-width: 3%; min-width: 10px;">&nbsp;</td>
202
+            </tr>
203
+         </table>
204
+         <!--[if (gte mso 9)|(IE)]>
205
+         </td></tr>
206
+         </table><![endif]-->
207
+      </td>
208
+   </tr>
209
+</table>
210
+</body>
211
+</html>
212
diff --git a/clients/freepaid/inputs/affiliate-register.json b/clients/freepaid/inputs/affiliate-register.json
213
new file mode 100644
214
index 0000000..53a9f1f
215
--- /dev/null
216
+++ b/clients/freepaid/inputs/affiliate-register.json
217
@@ -0,0 +1 @@
218
+[ "agency", "agent", "link" ]
219
diff --git a/clients/freepaid/inputs/passwordReset.json b/clients/freepaid/inputs/passwordReset.json
220
new file mode 100644
221
index 0000000..53627d7
222
--- /dev/null
223
+++ b/clients/freepaid/inputs/passwordReset.json
224
@@ -0,0 +1 @@
225
+[ "from", "bName", "to", "email", "subject", "html" ]
226
diff --git a/clients/freepaid/inputs/user-register.json b/clients/freepaid/inputs/user-register.json
227
new file mode 100644
228
index 0000000..53627d7
229
--- /dev/null
230
+++ b/clients/freepaid/inputs/user-register.json
231
@@ -0,0 +1 @@
232
+[ "from", "bName", "to", "email", "subject", "html" ]
233
diff --git a/clients/freepaid/templates/passwordReset.js b/clients/freepaid/templates/passwordReset.html
234
similarity index 99%
235
rename from clients/freepaid/templates/passwordReset.js
236
rename to clients/freepaid/templates/passwordReset.html
237
index f80ac5b..d55b908 100644
238
--- a/clients/freepaid/templates/passwordReset.js
239
+++ b/clients/freepaid/templates/passwordReset.html
240
@@ -1,4 +1,4 @@
241
-module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
242
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
243
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
244
 
245
 <head>
246
@@ -243,4 +243,4 @@ module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN
247
 </body>
248
 
249
 </html>
250
-`
251
+
252
diff --git a/clients/freepaid/templates/user-register.js b/clients/freepaid/templates/postPayment.html
253
similarity index 89%
254
rename from clients/freepaid/templates/user-register.js
255
rename to clients/freepaid/templates/postPayment.html
256
index a3527d6..45d2a1c 100644
257
--- a/clients/freepaid/templates/user-register.js
258
+++ b/clients/freepaid/templates/postPayment.html
259
@@ -1,5 +1,5 @@
260
-module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
261
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
262
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
263
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" style=" background-color: #c9c9c9">
264
 
265
 <head>
266
     <!--[if gte mso 9]> <xml> <o:OfficeDocumentSettings> <o:AllowPNG/> <o:PixelsPerInch>96</o:PixelsPerInch> </o:OfficeDocumentSettings> </xml> <![endif]-->
267
@@ -78,7 +78,7 @@ module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN
268
                                                             <table width="100%" cellpadding="0" cellspacing="0" border="0">
269
                                                                 <tr>
270
                                                                     <td style="padding-right: 0px;padding-left: 0px;" align="center">
271
-                                                                        <a href="\${baseUrl}" target="_blank"> <img align="center" border="0" src="\${logo}" alt="\${baseName}" title="30GBServices" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: inline-block !important;border: none;height: auto;float: none;width: 34%;max-width: 197.2px;" width="197.2" class="v-src-width v-src-max-width" /> </a>
272
+                                                                        <a href="${baseUrl}" target="_blank"> <img align="center" border="0" src="${logo}" alt="${baseName}" title="30GBServices" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: inline-block !important;border: none;height: auto;float: none;width: 34%;max-width: 197.2px;" width="197.2" class="v-src-width v-src-max-width" /> </a>
273
                                                                     </td>
274
                                                                 </tr>
275
                                                             </table>
276
@@ -111,7 +111,13 @@ module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN
277
                                                     <tr>
278
                                                         <td style="overflow-wrap:break-word;padding:40px 40px 30px;font-family:'Lato',sans-serif;word-break: break-all; word-wrap: break-word;" align="left">
279
                                                             <div class="v-line-height" style="line-height: 180%; text-align: left; word-wrap: break-word;margin-right:10%">
280
-                                                            \${message}
281
+                                                                <p style="font-size: 14px; line-height: 180%;">Hi <b>${name} ${surname}</b>,</p>
282
+                                                                <p style="font-size: 12px; line-height: 180%;">Congratulations, and thank you for your registration.</p>
283
+                                                                <p style="font-size: 12px; line-height: 180%;word-break: break-all; word-wrap: break-word;"><br />Please confirm your E-mail address by going to the following URL:<br /><a href="${baseUrl}verification/${_id}/${uniqueId}">${baseUrl}verification/${_id}/${uniqueId}</a></p>
284
+                                                                <p style="font-size: 12px; line-height: 180%;"><br />* In future, you will be asked for your E-mail and password before logging into the website</p>
285
+                                                                <p style="font-size: 12px; line-height: 180%;">* Keep your password safe.</p>
286
+                                                                <p style="font-size: 12px; line-height: 180%;"> </p>
287
+                                                                <p style="font-size: 12px; line-height: 180%;">You can login to the website anytime at the login page.</p>
288
                                                             </div>
289
                                                         </td>
290
                                                     </tr>
291
@@ -123,7 +129,7 @@ module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN
292
 																	<td style="overflow-wrap:break-word;word-break:break-word;padding:0px 40px;font-family:'Lato',sans-serif;" align="left">
293
 																		<div align="left">
294
 																			<!--[if mso]><div class="mso-container"><![endif]-->
295
-                                      <a href="\${link}" target="_blank" style="box-sizing: border-box;display: inline-block;font-family:'Lato',sans-serif;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #199013; border-radius: 5px;-webkit-border-radius: 5px; -moz-border-radius: 5px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none; box-shadow: 0 0 2px 1px rgba(0,0,0,0.6);">
296
+                                      <a href="${baseUrl}verification/${_id}/${uniqueId}" target="_blank" style="box-sizing: border-box;display: inline-block;font-family:'Lato',sans-serif;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #199013; border-radius: 5px;-webkit-border-radius: 5px; -moz-border-radius: 5px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none; box-shadow: 0 0 2px 1px rgba(0,0,0,0.6);">
297
 																				<span class="v-line-height" style="display:block;padding:10px 20px;line-height:120%;">
298
 																					<span style="font-size: 18px; line-height: 21.6px;">Verify E-Mail</span>
299
 																				</span>
300
@@ -158,7 +164,7 @@ module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN
301
 															</tbody>
302
 														</table>
303
                     <div class="u-row-container" style="padding: 0px;background-color: transparent">
304
-                        <div class="u-row" style="box-shadow: 0px 0px 10px 0px rgb(0 0 0 / 10%);Margin: 0 auto;min-width: 320px;max-width: 600px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #eeeeee; padding-bottom:10px;border-top: 2px solid rgba(0, 0, 0, 0.125);">
305
+														<div class="u-row" style="box-shadow: 0px 0px 10px 0px rgb(0 0 0 / 10%);Margin: 0 auto;min-width: 100%;max-width: 600px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #eeeeee; padding-bottom:10px;border-top: 2px solid rgba(0, 0, 0, 0.125);">
306
                             <div style="border-collapse: collapse;display: table;width: 100%;height: 100%;background-color: transparent;">
307
                                 <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px;"><tr style="background-color: #eeeeee;"><![endif]-->
308
                                 <!--[if (mso)|(IE)]><td align="center" width="300" style="width: 300px;padding: 20px 20px 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
309
@@ -172,7 +178,7 @@ module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN
310
                                                     <tr>
311
                                                         <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:'Lato',sans-serif;" align="left">
312
                                                             <div class="v-line-height" style="line-height: 140%; text-align: left; word-wrap: break-word;">
313
-                                                                <p style="font-size: 14px; line-height: 140%;"><span style="font-size: 12px; line-height: 16.8px; color: #000000;">\${from}</span></p>
314
+                                                                <p style="font-size: 14px; line-height: 140%;"><span style="font-size: 12px; line-height: 16.8px; color: #000000;">${bName}</span></p>
315
                                                                 <p style="font-size: 14px; line-height: 140%;"><span style="font-size: 12px; line-height: 16.8px; color: #000000;">© All Rights Reserved</span></p>
316
                                                             </div>
317
                                                         </td>
318
@@ -243,4 +249,3 @@ module.exports = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN
319
 </body>
320
 
321
 </html>
322
-`
323
diff --git a/clients/freepaid/templates/user-register.html b/clients/freepaid/templates/user-register.html
324
new file mode 100644
325
index 0000000..ba4b495
326
--- /dev/null
327
+++ b/clients/freepaid/templates/user-register.html
328
@@ -0,0 +1,255 @@
329
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
330
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" style=" background-color: #c9c9c9">
331
+
332
+<head>
333
+    <!--[if gte mso 9]> <xml> <o:OfficeDocumentSettings> <o:AllowPNG/> <o:PixelsPerInch>96</o:PixelsPerInch> </o:OfficeDocumentSettings> </xml> <![endif]-->
334
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
335
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
336
+    <meta name="x-apple-disable-message-reformatting">
337
+    <!--[if !mso]><!-->
338
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
339
+    <!--<![endif]-->
340
+    <title></title>
341
+    <style type="text/css">
342
+        @media only screen and (min-width: 620px) { .u-row { width: 600px !important; } .u-row .u-col { vertical-align: top; } .u-row .u-col-50 { width: 300px !important; } .u-row .u-col-100 { width: 600px !important; } } @media (max-width: 620px) { .u-row-container { max-width: 100% !important; padding-left: 0px !important; padding-right: 0px !important; } .u-row .u-col { min-width: 320px !important; max-width: 100% !important; display: block !important; } .u-row { width: calc(100% - 40px) !important; } .u-col { width: 100% !important; } .u-col > div { margin: 0 auto; } } body { margin: 0; padding: 0; } table, tr, td { vertical-align: top; border-collapse: collapse; } p { margin: 0; } .ie-container table, .mso-container table { table-layout: fixed; } * { line-height: inherit; } a[x-apple-data-detectors='true'] { color: inherit !important; text-decoration: none !important; } table, td { color: #000000; } #u_body a { color: #03ff; text-decoration: underline; } @media (max-width: 480px) { #u_content_image_1 .v-src-width { width: auto !important; } #u_content_image_1 .v-src-max-width { max-width: 47% !important; } #u_content_text_4 .v-line-height { line-height: 130% !important; } }
343
+    </style>
344
+    <!--[if !mso]><!-->
345
+    <link href="https://fonts.googleapis.com/css?family=Lato:400,700&display=swap" rel="stylesheet" type="text/css">
346
+    <!--<![endif]-->
347
+</head>
348
+
349
+<body class="clean-body u_body" style="margin: 0;padding: 0;-webkit-text-size-adjust: 100%;background-color: #c9c9c9;color: #000000">
350
+    <!--[if IE]><div class="ie-container"><![endif]-->
351
+    <!--[if mso]><div class="mso-container"><![endif]-->
352
+    <table id="u_body" style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #c9c9c9;width:100%" cellpadding="0" cellspacing="0">
353
+        <tbody>
354
+            <tr style="vertical-align: top">
355
+                <td style="word-break: break-word;border-collapse: collapse !important;vertical-align: top">
356
+                    <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #c9c9c9;"><![endif]-->
357
+                    <div class="u-row-container" style="padding: 0px;background-color: #c9c9c9">
358
+                        <div class="u-row" style="margin: 0 auto;min-width: 320px;max-width: 600px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #c9c9c9;">
359
+                            <div style="border-collapse: collapse;display: table;width: 100%;height: 100%;background-color: transparent;">
360
+                                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #c9c9c9;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px;"><tr style="background-color: #c9c9c9;"><![endif]-->
361
+                                <!--[if (mso)|(IE)]><td align="center" width="600" style="width: 600px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
362
+                                <div class="u-col u-col-100" style="max-width: 320px;min-width: 600px;display: table-cell;vertical-align: top;">
363
+                                    <div style="height: 100%;width: 100% !important;">
364
+                                        <!--[if (!mso)&(!IE)]><!-->
365
+                                        <div style="height: 100%; padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;">
366
+                                            <!--<![endif]-->
367
+                                            <table style="font-family:'Lato',sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
368
+                                                <tbody>
369
+                                                    <tr>
370
+                                                        <td style="overflow-wrap:break-word;word-break:break-word;padding:15px;font-family:'Lato',sans-serif;" align="left">
371
+                                                            <table height="0px" align="center" border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;border-top: 1px solid #c9c9c9;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%">
372
+                                                                <tbody>
373
+                                                                    <tr style="vertical-align: top">
374
+                                                                        <td style="word-break: break-word;border-collapse: collapse !important;vertical-align: top;font-size: 0px;line-height: 0px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%"> <span>&#160;</span> </td>
375
+                                                                    </tr>
376
+                                                                </tbody>
377
+                                                            </table>
378
+                                                        </td>
379
+                                                    </tr>
380
+                                                </tbody>
381
+                                            </table>
382
+                                            <!--[if (!mso)&(!IE)]><!-->
383
+                                        </div>
384
+                                        <!--<![endif]-->
385
+                                    </div>
386
+                                </div>
387
+                                <!--[if (mso)|(IE)]></td><![endif]-->
388
+                                <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
389
+                            </div>
390
+                        </div>
391
+                    </div>
392
+                    <div class="u-row-container" style="padding: 0px;background-color: transparent">
393
+                        <div class="u-row" style="box-shadow: 0px 0px 10px 0px rgb(0 0 0 / 10%);Margin: 0 auto;min-width: 320px;max-width: 600px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #eeeeee;box-shadow: 0px 0px 10px 0px rgb(0 0 0 / 10%); border-bottom: 2px solid rgba(0, 0, 0, 0.125);">
394
+                            <div style="border-collapse: collapse;display: table;width: 100%;height: 100%;background-color: transparent;">
395
+                                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px;"><tr style="background-color: #ffffff;"><![endif]-->
396
+                                <!--[if (mso)|(IE)]><td align="center" width="600" style="width: 600px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
397
+                                <div class="u-col u-col-100" style="max-width: 320px;min-width: 600px;display: table-cell;vertical-align: top;">
398
+                                    <div style="height: 100%;width: 100% !important;">
399
+                                        <!--[if (!mso)&(!IE)]><!-->
400
+                                        <div style="height: 100%; padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;">
401
+                                            <!--<![endif]-->
402
+                                            <table id="u_content_image_1" style="font-family:'Lato',sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
403
+                                                <tbody>
404
+                                                    <tr>
405
+                                                        <td style="overflow-wrap:break-word;word-break:break-word;padding:25px 10px;font-family:'Lato',sans-serif;" align="left">
406
+                                                            <table width="100%" cellpadding="0" cellspacing="0" border="0">
407
+                                                                <tr>
408
+                                                                    <td style="padding-right: 0px;padding-left: 0px;" align="center">
409
+                                                                        <a href="${baseUrl}" target="_blank"> <img align="center" border="0" src="${logo}" alt="${baseName}" title="30GBServices" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: inline-block !important;border: none;height: auto;float: none;width: 34%;max-width: 197.2px;" width="197.2" class="v-src-width v-src-max-width" /> </a>
410
+                                                                    </td>
411
+                                                                </tr>
412
+                                                            </table>
413
+                                                        </td>
414
+                                                    </tr>
415
+                                                </tbody>
416
+                                            </table>
417
+                                            <!--[if (!mso)&(!IE)]><!-->
418
+                                        </div>
419
+                                        <!--<![endif]-->
420
+                                    </div>
421
+                                </div>
422
+                                <!--[if (mso)|(IE)]></td><![endif]-->
423
+                                <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
424
+                            </div>
425
+                        </div>
426
+                    </div>
427
+                    <div class="u-row-container" style="padding: 0px;background-color: transparent">
428
+                        <div class="u-row" style="box-shadow: 0px 0px 10px 0px rgb(0 0 0 / 10%);Margin: 0 auto;min-width: 320px;max-width: 600px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #ffffff;">
429
+                            <div style="border-collapse: collapse;display: table;width: 100%;height: 100%;background-color: transparent;">
430
+                                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px;"><tr style="background-color: #ffffff;"><![endif]-->
431
+                                <!--[if (mso)|(IE)]><td align="center" width="600" style="width: 600px;padding: 0px;border-top: 0px dashed transparent;border-left: 0px dashed transparent;border-right: 0px dashed transparent;border-bottom: 0px dashed transparent;" valign="top"><![endif]-->
432
+                                <div class="u-col u-col-100" style="max-width: 320px;min-width: 600px;display: table-cell;vertical-align: top;">
433
+                                    <div style="height: 100%;width: 100% !important;">
434
+                                        <!--[if (!mso)&(!IE)]><!-->
435
+                                        <div style="height: 100%; padding: 0px;border-top: 0px dashed transparent;border-left: 0px dashed transparent;border-right: 0px dashed transparent;border-bottom: 0px dashed transparent;">
436
+                                            <!--<![endif]-->
437
+                                            <table id="u_content_text_4" style="font-family:'Lato',sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
438
+                                                <tbody>
439
+                                                    <tr>
440
+                                                        <td style="overflow-wrap:break-word;padding:40px 40px 30px;font-family:'Lato',sans-serif;word-break: break-all; word-wrap: break-word;" align="left">
441
+                                                            <div class="v-line-height" style="line-height: 180%; text-align: left; word-wrap: break-word;margin-right:10%">
442
+                                                                <p style="font-size: 14px; line-height: 180%;">Hi <b>${name} ${surname}</b>,</p>
443
+                                                                <p style="font-size: 12px; line-height: 180%;">Congratulations, and thank you for your registration.</p>
444
+                                                                <p style="font-size: 12px; line-height: 180%;word-break: break-all; word-wrap: break-word;"><br />Please confirm your E-mail address by going to the following URL:<br /><a href="${link}">${link}</a></p>
445
+                                                                <p style="font-size: 12px; line-height: 180%;"><br />* In future, you will be asked for your E-mail and password before logging into the website</p>
446
+                                                                <p style="font-size: 12px; line-height: 180%;">* Keep your password safe.</p>
447
+                                                                <p style="font-size: 12px; line-height: 180%;"> </p>
448
+                                                                <p style="font-size: 12px; line-height: 180%;">You can login to the website anytime at the login page.</p>
449
+                                                            </div>
450
+                                                        </td>
451
+                                                    </tr>
452
+                                                </tbody>
453
+                                            </table>
454
+														<table style="font-family:'Lato',sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
455
+															<tbody>
456
+																<tr>
457
+																	<td style="overflow-wrap:break-word;word-break:break-word;padding:0px 40px;font-family:'Lato',sans-serif;" align="left">
458
+																		<div align="left">
459
+																			<!--[if mso]><div class="mso-container"><![endif]-->
460
+                                      <a href="${link}" target="_blank" style="box-sizing: border-box;display: inline-block;font-family:'Lato',sans-serif;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #199013; border-radius: 5px;-webkit-border-radius: 5px; -moz-border-radius: 5px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none; box-shadow: 0 0 2px 1px rgba(0,0,0,0.6);">
461
+																				<span class="v-line-height" style="display:block;padding:10px 20px;line-height:120%;">
462
+																					<span style="font-size: 18px; line-height: 21.6px;">Verify E-Mail</span>
463
+																				</span>
464
+																			</a>
465
+																			<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #f9f9f9;"><![endif]-->
466
+																		</div>
467
+																	</td>
468
+																</tr>
469
+															</tbody>
470
+														</table>
471
+														<table style="font-family:'Lato',sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
472
+															<tbody>
473
+																<tr>
474
+																	<td style="overflow-wrap:break-word;word-break:break-word;padding:40px 40px 30px;font-family:'Lato',sans-serif;" align="left">
475
+																		<div class="v-line-height" style="line-height: 140%; text-align: left; word-wrap: break-word;">
476
+																			<p style="font-size: 14px; line-height: 140%;">
477
+																				<span style="color: #888888; font-size: 14px; line-height: 19.6px;">
478
+																					<em>
479
+																						<span style="font-size: 16px; line-height: 22.4px;">Please ignore this email if you did not recently register with us</span>
480
+																					</em>
481
+																				</span>
482
+																				<br />
483
+																				<span style="color: #888888; font-size: 14px; line-height: 19.6px;">
484
+																					<em>
485
+																						<span style="font-size: 16px; line-height: 22.4px;">&nbsp;</span>
486
+																					</em>
487
+																				</span>
488
+																			</p>
489
+																		</div>
490
+																	</td>
491
+																</tr>
492
+															</tbody>
493
+														</table>
494
+                    <div class="u-row-container" style="padding: 0px;background-color: transparent">
495
+														<div class="u-row" style="box-shadow: 0px 0px 10px 0px rgb(0 0 0 / 10%);Margin: 0 auto;min-width: 100%;max-width: 600px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #eeeeee; padding-bottom:10px;border-top: 2px solid rgba(0, 0, 0, 0.125);">
496
+                            <div style="border-collapse: collapse;display: table;width: 100%;height: 100%;background-color: transparent;">
497
+                                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: transparent;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px;"><tr style="background-color: #eeeeee;"><![endif]-->
498
+                                <!--[if (mso)|(IE)]><td align="center" width="300" style="width: 300px;padding: 20px 20px 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
499
+                                <div class="u-col u-col-50" style="max-width: 320px;min-width: 300px;display: table-cell;vertical-align: top;">
500
+                                    <div style="height: 100%;width: 100% !important;">
501
+                                        <!--[if (!mso)&(!IE)]><!-->
502
+                                        <div style="height: 100%; padding: 7px 20px 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;">
503
+                                            <!--<![endif]-->
504
+                                            <table style="font-family:'Lato',sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
505
+                                              <tbody>
506
+                                                <tr>
507
+                                                  <td style="overflow-wrap:break-word;word-break:break-word;padding:10px;font-family:'Lato',sans-serif;" align="left">
508
+                                                    <div class="v-line-height" style="line-height: 140%; text-align: left; word-wrap: break-word;">
509
+                                                      <p style="font-size: 14px; line-height: 140%;">
510
+                                                        <span style="font-size: 12px; line-height: 16.8px; color: #000000;">${from}</span>
511
+                                                      </p>
512
+                                                      <p style="font-size: 14px; line-height: 140%;">
513
+                                                        <span style="font-size: 12px; line-height: 16.8px; color: #000000;">© All Rights Reserved</span>
514
+                                                      </p>
515
+                                                    </div>
516
+                                                  </td>
517
+                                                </tr>
518
+                                              </tbody>
519
+                                            </table>
520
+                                            <!--[if (!mso)&(!IE)]><!-->
521
+                                        </div>
522
+                                        <!--<![endif]-->
523
+                                    </div>
524
+                                </div>
525
+                                <!--[if (mso)|(IE)]></td><![endif]-->
526
+                                <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
527
+                            </div>
528
+                        </div>
529
+                    </div>
530
+                                <!--[if (mso)|(IE)]></td><![endif]-->
531
+                                <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
532
+                            </div>
533
+                        </div>
534
+                    </div>
535
+                </td>
536
+            </tr>
537
+        </tbody>
538
+    </table>
539
+    <table id="u_body" style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #c9c9c9;width:100%" cellpadding="0" cellspacing="0">
540
+        <tbody>
541
+            <tr style="vertical-align: top">
542
+                <td style="word-break: break-word;border-collapse: collapse !important;vertical-align: top">
543
+                    <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color: #c9c9c9;"><![endif]-->
544
+                    <div class="u-row-container" style="padding: 0px;background-color: #c9c9c9">
545
+                        <div class="u-row" style="margin: 0 auto;min-width: 320px;max-width: 600px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #c9c9c9;">
546
+                            <div style="border-collapse: collapse;display: table;width: 100%;height: 100%;background-color: transparent;">
547
+                                <!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding: 0px;background-color: #c9c9c9;" align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px;"><tr style="background-color: #c9c9c9;"><![endif]-->
548
+                                <!--[if (mso)|(IE)]><td align="center" width="600" style="width: 600px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;" valign="top"><![endif]-->
549
+                                <div class="u-col u-col-100" style="max-width: 320px;min-width: 600px;display: table-cell;vertical-align: top;">
550
+                                    <div style="height: 100%;width: 100% !important;">
551
+                                        <!--[if (!mso)&(!IE)]><!-->
552
+                                        <div style="height: 100%; padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;">
553
+                                            <!--<![endif]-->
554
+                                            <table style="font-family:'Lato',sans-serif;" role="presentation" cellpadding="0" cellspacing="0" width="100%" border="0">
555
+                                                <tbody>
556
+                                                    <tr>
557
+                                                        <td style="overflow-wrap:break-word;word-break:break-word;padding:15px;font-family:'Lato',sans-serif;" align="left">
558
+                                                            <table height="0px" align="center" border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;border-top: 1px solid #c9c9c9;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%">
559
+                                                                <tbody>
560
+                                                                    <tr style="vertical-align: top">
561
+                                                                        <td style="word-break: break-word;border-collapse: collapse !important;vertical-align: top;font-size: 0px;line-height: 0px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%"> <span>&#160;</span> </td>
562
+                                                                    </tr>
563
+                                                                </tbody>
564
+                                                            </table>
565
+                                                        </td>
566
+                                                    </tr>
567
+                                                </tbody>
568
+                                            </table>
569
+                                            <!--[if (!mso)&(!IE)]><!-->
570
+                                        </div>
571
+                                        <!--<![endif]-->
572
+                                    </div>
573
+                                </div>
574
+                                <!--[if (mso)|(IE)]></td><![endif]-->
575
+                                <!--[if (mso)|(IE)]></tr></table></td></tr></table><![endif]-->
576
+                            </div>
577
+                        </div>
578
+                    </div>
579
+    <!--[if mso]></div><![endif]-->
580
+    <!--[if IE]></div><![endif]-->
581
+</body>
582
+
583
+</html>
584
diff --git a/clients/freepaid/templates/welcomeMail.js b/clients/freepaid/templates/welcomeMail.js
585
new file mode 100644
586
index 0000000..a752a4f
587
--- /dev/null
588
+++ b/clients/freepaid/templates/welcomeMail.js
589
@@ -0,0 +1,23 @@
590
+
591
+
592
+module.exports = async (recipient, link, html) => {
593
+
594
+  let baseName = recipient.agency.replace(/^/, 'https://').replace(/https?:\/\//g, '').replace(/\/$/, '');
595
+  let from = baseName.slice(0, 1).toString().toUpperCase() + baseName.slice(1).split('.')[0].replace('data', ' Data').replace('gbservices', 'GB Services');
596
+  let subject  = `Welcome to the ${from} family!`;
597
+  let { name, surname } = recipient;
598
+
599
+  const baseUrl = recipient.agency.replace(/^/, 'https://');
600
+  let logo;
601
+
602
+  logo = baseName + '.png';
603
+  logo = `${baseUrl}/img/logos/${logo}`;
604
+
605
+
606
+
607
+const mailOptions = {
608
+  from: `"${from}" <[email protected]>`,
609
+  to: recipient.email,
610
+  subject,
611
+  html
612
+};
613
diff --git a/methods/.sendMail.js b/methods/.sendMail.js
614
new file mode 100644
615
index 0000000..75c74bc
616
--- /dev/null
617
+++ b/methods/.sendMail.js
618
@@ -0,0 +1,136 @@
619
+
620
+const fs = require('fs');
621
+const Template = require('../models/template');
622
+const Client = require('../models/client');
623
+const path = require('path');
624
+const nodemailer = require('nodemailer');
625
+require('colors');
626
+
627
+
628
+const freepaid = (recipient, link) => {
629
+
630
+  let baseName = recipient.agency.replace(/^/, 'https://').replace(/https?:\/\//g, '').replace(/\/$/, '');
631
+  let from = baseName.slice(0, 1).toString().toUpperCase() + baseName.slice(1).split('.')[0].replace('data', ' Data').replace('gbservices', 'GB Services');
632
+  let subject  = `Welcome to the ${from} family!`;
633
+  let { name, surname, agency } = recipient;
634
+
635
+  const baseUrl = agency.replace(/https?:\/\//g, '').replace(/^/, 'https://');
636
+  let logo;
637
+
638
+  logo = baseName + '.png';
639
+  logo = `${baseUrl}/img/logos/${logo}`;
640
+
641
+
642
+  return { from, subject, name, surname, logo, link };
643
+
644
+};
645
+
646
+
647
+module.exports = async (recipient, link, type) => {
648
+
649
+
650
+
651
+  const { from, to, subject, html	} = array;
652
+    const info = await transporter.sendMail({
653
+      from: `${from} <[email protected]>`, to, subject, html
654
+    }).then((info) => {
655
+    console.log(`Email sent to ${to}. ID: ${info}`);
656
+  }).catch((err) => {
657
+    console.log(err);
658
+  });
659
+}
660
+
661
+
662
+const mailOptions = {
663
+  from: `"${from}" <[email protected]>`,
664
+  to: recipient.email,
665
+  subject,
666
+  html
667
+};
668
+
669
+
670
+//    await mail({from: bName, to: email, subject:'E-mail Verification - ' + bName, html: `
671
+//
672
+//
673
+//
674
+//
675
+//
676
+//
677
+//
678
+//
679
+//
680
+//
681
+//
682
+//
683
+//
684
+//
685
+//
686
+//
687
+//
688
+//const sendMail = async (req, res) => {
689
+//
690
+//
691
+//
692
+//
693
+//const sendMail = async (client, token, type, recipient, html) => {
694
+//
695
+//  client = await getClient(client, token);
696
+//
697
+//  if (!client) { return { error: 'Invalid client' } }
698
+//  else if (client.token !== token) { return { error: 'Invalid token' } }
699
+//  else { const transporter = nodemailer.createTransport(client.config) }
700
+//
701
+//  switch (client.name) {
702
+//    case 'html':
703
+//
704
+//
705
+//
706
+//
707
+//let subject, html, baseName;
708
+//
709
+//const transporter = nodemailer.createTransport(config);
710
+//
711
+//const sendMail = (type, recipient, token) => {
712
+//
713
+//  const
714
+//
715
+//  switch (type) {
716
+//    case 'user-register':
717
+//      l
718
+//
719
+//
720
+//
721
+//  let { agency, user, to, type, link } = array;
722
+//
723
+//  let baseName = agency;
724
+//  let from = agency.slice(0, 1).toString().toUpperCase() + agency.slice(1).split('.')[0].replace('data', ' Data').replace('gbservices', 'GB Services');
725
+//
726
+//  let { name, surname } = user;
727
+//
728
+//  const baseUrl = `https://${agency}/`;
729
+//  let logo;
730
+//
731
+//  logo = baseName + '.png';
732
+//  logo = `${baseUrl}img/logos/${logo}`;
733
+//
734
+//  if(type == 'userReg' || type == 'affiliateReg') {
735
+//    subject = 'Welcome to ' + from;
736
+//    html = register({ from, name, surname, link, baseUrl, baseName, logo });
737
+//  } else if(type == 'userReset' || type == 'affiliateReset') {
738
+//    subject = 'Password Reset - ' + from;
739
+//    html = reset({ from, name, surname, link, baseUrl, baseName, logo });
740
+//  } else { return; }
741
+//
742
+//
743
+//
744
+//  const info = await transporter.sendMail({
745
+//    from: `${from} <[email protected]>`, to, subject, html
746
+//  }).then((info) => {
747
+//    console.log(`Email sent to ${to}. ID: ${info}`);
748
+//  }).catch((err) => {
749
+//    console.log(err);
750
+//  });
751
+//
752
+//  return info;
753
+//}
754
+//
755
diff --git a/methods/main.js b/methods/main.js
756
new file mode 100644
757
index 0000000..ed25cda
758
--- /dev/null
759
+++ b/methods/main.js
760
@@ -0,0 +1,97 @@
761
+
762
+const Client = require('../models/client');
763
+const Template = require('../models/template');
764
+const nodemailer = require('nodemailer');
765
+const { mkConfig, mkMail } = require('./mkMail');
766
+const { updateCliets, updateTemplates } = require('./updateDB');
767
+require('colors');
768
+
769
+const getClient = (name, token) => {
770
+  const client = Client.findOne({ name, token });
771
+  if(!client) return false;
772
+  return client;
773
+}
774
+
775
+
776
+const getTemplate = async (name, token, type) => {
777
+
778
+  const client = await getClient(name, token);
779
+  if(!client) return false;
780
+
781
+  const template = await Template.findOne({ client: client._id});
782
+  if(!template) return false;
783
+
784
+  const html = template.emails.find(e => e.name === type).html;
785
+  if(!html) return false;
786
+
787
+  const requires = template.emails.find(e => e.name === type).requires;
788
+  if(!requires) return false;
789
+
790
+  return { html, requires };
791
+
792
+}
793
+
794
+const mail = async (recipient, link, name, token, type) => {
795
+
796
+  const { html, requires } = await getTemplate(name, token, type);
797
+  if(!html || !requires) return false;
798
+
799
+  const client = await getClient(name, token);
800
+  if(!client) return false;
801
+
802
+  const transporter = nodemailer.createTransport(client.config);
803
+  if(!transporter) return false;
804
+
805
+  const inputs = mkConfig(client, recipient, link);
806
+  if(!inputs) return false;
807
+
808
+  const mail = mkMail(client, type, inputs);
809
+  if(!mail) return false;
810
+
811
+  const { from, to, subject, Html	} = mail;
812
+  if(!from || !to || !subject || !Html) return false;
813
+
814
+  const info = await transporter.sendMail({ from, to, subject, html: Html });
815
+  if(!info) return false;
816
+
817
+  console.log(`Message sent: ${info.messageId}`.green);
818
+
819
+  for(var obj in info) {
820
+    Object.keys(info[obj]).forEach(key => {
821
+      console.log(key.green + ': ' + info[obj][key]);
822
+    });
823
+  }
824
+  return info;
825
+}
826
+
827
+const test = async (recipient, link, name, token, type) => {
828
+
829
+  const { html, requires } = await getTemplate(name, token, type);
830
+  if(!html || !requires) return false;
831
+
832
+  const client = await getClient(name, token);
833
+  if(!client) return false;
834
+
835
+  const transporter = nodemailer.createTransport(client.config);
836
+  if(!transporter) return false;
837
+
838
+  const inputs = mkConfig(client, recipient, link);
839
+  if(!inputs) return false;
840
+
841
+  const mail = mkMail(client, type, inputs);
842
+  if(!mail) return false;
843
+
844
+  const { from, to, subject, Html	} = mail;
845
+  if(!from || !to || !subject || !Html) return false;
846
+
847
+  console.log('From: '.green + from);
848
+  console.log('To: '.green + to);
849
+  console.log('Subject: '.green + subject);
850
+  console.log('Html: '.green + Html);
851
+
852
+  return true;
853
+
854
+}
855
+
856
+module.exports = { getClient, getTemplate, mail, test, updateCliets, updateTemplates };
857
+
858
diff --git a/methods/mkMail.js b/methods/mkMail.js
859
new file mode 100644
860
index 0000000..857af98
861
--- /dev/null
862
+++ b/methods/mkMail.js
863
@@ -0,0 +1,89 @@
864
+
865
+const Template = require('../models/template');
866
+
867
+const mkConfig = (client, recipient, link) => {
868
+
869
+  try {
870
+    if (client.name == 'FREEPAID') {
871
+      let { name, surname, agency } = recipient,
872
+      logo, baseName = recipient.agency.replace(/^/, 'https://').replace(/https?:\/\//g, '').replace(/\/$/, ''),
873
+      from = baseName.slice(0, 1).toString().toUpperCase() + baseName.slice(1).split('.')[0].replace('data', ' Data').replace('gbservices', 'GB Services'),
874
+      subject  = `Welcome to the ${from} family!`, baseUrl = agency.replace(/https?:\/\//g, '').replace(/^/, 'https://');
875
+
876
+      logo = baseName + '.png';
877
+      logo = `${baseUrl}/img/logos/${logo}`;
878
+
879
+      return { from, subject, name, surname, logo, link, baseUrl, agency, baseName };
880
+
881
+    } else if (client.name == 'CONCISE') {
882
+
883
+      return
884
+    }
885
+
886
+  } catch (err) {
887
+    console.log(err);
888
+  }
889
+
890
+}
891
+
892
+
893
+const mkMail = (client, type, inputs) => {
894
+
895
+  try {
896
+    if (client.name == 'FREEPAID') {
897
+
898
+      const templates = await Template.findOne({ client: client._id });
899
+      const { from, subject, name, surname, logo, link, baseUrl, agency, baseName } = inputs;
900
+
901
+      if(type == 'user-register') {
902
+
903
+        const template = templates.find(t => t.name == 'user-register');
904
+        if (!template) return false;
905
+
906
+        const html = template.html.replace(/\${name}/g, name)
907
+                                  .replace(/\${surname}/g, surname)
908
+                                  .replace(/\${logo}/g, logo)
909
+                                  .replace(/\${link}/g, link)
910
+                                  .replace(/\${baseUrl}/g, baseUrl)
911
+                                  .replace(/\${agency}/g, agency)
912
+                                  .replace(/\${baseName}/g, baseName)
913
+                                  .replace(/\${from}/g, from);
914
+
915
+        const to = `${from} <${client.sender}>`;
916
+
917
+        return { from, to, subject, Html: html };
918
+
919
+      } else if (type == 'affiliate-register') {
920
+
921
+        const template = templates.find(t => t.name == 'affiliate-register');
922
+        if (!template) return false;
923
+
924
+        const html = template.html.replace(/\${name}/g, name)
925
+                                  .replace(/\${surname}/g, surname)
926
+                                  .replace(/\${logo}/g, logo)
927
+                                  .replace(/\${link}/g, link)
928
+                                  .replace(/\${baseUrl}/g, baseUrl)
929
+                                  .replace(/\${agency}/g, agency)
930
+                                  .replace(/\${baseName}/g, baseName)
931
+                                  .replace(/\${from}/g, from);
932
+
933
+        const to = `${from} <${client.sender}>`;
934
+
935
+        return { from, to, subject, Html: html };
936
+
937
+      }
938
+
939
+    } else if (client.name == 'CONCISE') {
940
+
941
+      return
942
+
943
+    }
944
+
945
+  } catch (err) {
946
+    console.log(err);
947
+  }
948
+
949
+}
950
+
951
+module.exports = { mkConfig, mkMail };
952
+
953
diff --git a/methods/mkTemplates.js b/methods/mkTemplates.js
954
deleted file mode 100644
955
index 5d172b8..0000000
956
--- a/methods/mkTemplates.js
957
+++ /dev/null
958
@@ -1,67 +0,0 @@
959
-
960
-const fs = require('fs');
961
-const Template = require('../models/template');
962
-const Client = require('../models/client');
963
-
964
-const freepaidTemplates = fs.readdirSync('../clients/freepaid/templates');
965
-const conciseTemplate = fs.readdirSync('../clients/concise/templates');
966
-
967
-const main = async (clientName) => {
968
-
969
-  const client = await Client.findOne({ name: clientName });
970
-
971
-  if (!client) {
972
-    console.log('Client not found');
973
-    return;
974
-  } else if (client.name === 'FREEPAID') {
975
-
976
-    freepaidTemplates.forEach(async (template) => {
977
-
978
-      const templateName = template.split('.')[0];
979
-      const templatePath = `../clients/freepaid/templates/${template}`;
980
-      const templateContent = fs.readFileSync(templatePath, 'utf8');
981
-
982
-      const template = Template.findOne({ client: client._id, });
983
-
984
-      if (!template) {
985
-        const newTemplate = new Template({
986
-          client: client._id,
987
-          emails: [{ name: templateName, html: templateContent }]
988
-        });
989
-        await newTemplate.save();
990
-      } else {
991
-        template.emails.push({ name: templateName, html: templateContent });
992
-        await template.save();
993
-      }
994
-
995
-    });
996
-
997
-  } else if (client.name === 'CONCISE') {
998
-
999
-    conciseTemplates.forEach(async (template) => {