@silexpert/core 1.0.125 → 1.0.126
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/es/api/resources/Employee.d.ts.map +1 -1
- package/es/api/resources/Employee.js +3 -2
- package/es/api/resources/Employee.js.map +1 -1
- package/es/api/resources/Mail.d.ts +2 -1
- package/es/api/resources/Mail.d.ts.map +1 -1
- package/es/api/resources/Mail.js +3 -0
- package/es/api/resources/Mail.js.map +1 -1
- package/es/types/Enum/MailAuto.d.ts +0 -6
- package/es/types/Enum/MailAuto.d.ts.map +1 -1
- package/es/types/Enum/MailAuto.js +0 -6
- package/es/types/Enum/MailAuto.js.map +1 -1
- package/es/types/Interface/api/mail/QueryGetSignature.d.ts +6 -0
- package/es/types/Interface/api/mail/QueryGetSignature.d.ts.map +1 -0
- package/es/types/Interface/api/mail/QueryGetSignature.js +32 -0
- package/es/types/Interface/api/mail/QueryGetSignature.js.map +1 -0
- package/es/types/index.d.ts +1 -0
- package/es/types/index.d.ts.map +1 -1
- package/es/types/index.js +1 -0
- package/es/types/index.js.map +1 -1
- package/es/utils/commercialManagement/templates/body.d.ts.map +1 -1
- package/es/utils/commercialManagement/templates/body.js +2 -1
- package/es/utils/commercialManagement/templates/body.js.map +1 -1
- package/es/utils/email/templates/signature.d.ts +2 -0
- package/es/utils/email/templates/signature.d.ts.map +1 -0
- package/es/utils/email/templates/signature.js +196 -0
- package/es/utils/email/templates/signature.js.map +1 -0
- package/es/utils/email.d.ts +2 -0
- package/es/utils/email.d.ts.map +1 -0
- package/es/utils/email.js +223 -0
- package/es/utils/email.js.map +1 -0
- package/es/utils/index.d.ts +1 -0
- package/es/utils/index.d.ts.map +1 -1
- package/es/utils/index.js +1 -0
- package/es/utils/index.js.map +1 -1
- package/js/api/resources/Employee.js +4 -2
- package/js/api/resources/Employee.js.map +1 -1
- package/js/api/resources/Mail.js +6 -0
- package/js/api/resources/Mail.js.map +1 -1
- package/js/types/Enum/MailAuto.js +0 -6
- package/js/types/Enum/MailAuto.js.map +1 -1
- package/js/types/Interface/api/mail/QueryGetSignature.js +33 -0
- package/js/types/Interface/api/mail/QueryGetSignature.js.map +1 -0
- package/js/types/index.js +12 -0
- package/js/types/index.js.map +1 -1
- package/js/utils/commercialManagement/templates/body.js +2 -1
- package/js/utils/commercialManagement/templates/body.js.map +1 -1
- package/js/utils/email/templates/signature.js +201 -0
- package/js/utils/email/templates/signature.js.map +1 -0
- package/js/utils/email.js +317 -0
- package/js/utils/email.js.map +1 -0
- package/js/utils/index.js +12 -0
- package/js/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/ts/api/resources/Employee.ts +3 -2
- package/ts/api/resources/Mail.ts +5 -0
- package/ts/types/Enum/MailAuto.ts +0 -6
- package/ts/types/Interface/api/mail/QueryGetSignature.ts +21 -0
- package/ts/types/index.ts +1 -0
- package/ts/utils/commercialManagement/templates/body.ts +2 -1
- package/ts/utils/email/templates/signature.ts +198 -0
- package/ts/utils/email.ts +230 -0
- package/ts/utils/index.ts +1 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
const logoClementine = `<% if (brandName === 'Clementine') { %><tr>
|
|
2
|
+
<td
|
|
3
|
+
colspan="3"
|
|
4
|
+
class="logo"
|
|
5
|
+
style=""
|
|
6
|
+
width="850">
|
|
7
|
+
<img
|
|
8
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/logo_2022.png"
|
|
9
|
+
alt="Logo"
|
|
10
|
+
height="32"
|
|
11
|
+
style="padding-bottom: 10px;">
|
|
12
|
+
</td>
|
|
13
|
+
</tr><% } %>`;
|
|
14
|
+
const avatar = `<% if (!forceRole && user?.avatar?.token) { %>
|
|
15
|
+
<td
|
|
16
|
+
class="avatar"
|
|
17
|
+
style="text-align:center; padding: 20px 0 20px 20px; position: relative;"
|
|
18
|
+
width="100">
|
|
19
|
+
<p style="padding: 20px;background-image: url('https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_quotes.png');background-size: 26%;background-position: 81% -3%;background-repeat: no-repeat;">
|
|
20
|
+
<img
|
|
21
|
+
style="max-height: 90px;max-width: 90px; border-radius: 100%; padding-top: 1Opx"
|
|
22
|
+
src="
|
|
23
|
+
<%= hostS3 %>users/<%= user.id %>/<%= user.avatar.token %>
|
|
24
|
+
"
|
|
25
|
+
/>
|
|
26
|
+
</p>
|
|
27
|
+
</td>
|
|
28
|
+
<% } %>`;
|
|
29
|
+
const footer = `<% if(brandName === 'Clementine') { %>
|
|
30
|
+
<tr>
|
|
31
|
+
<td
|
|
32
|
+
style="clear:both; padding-top: 20px; font-size:17px; line-height:14px; color:#ADADAD; text-align: justify; font-family: Arial;"
|
|
33
|
+
colspan="4">
|
|
34
|
+
<table style="width: 100%" width="100%">
|
|
35
|
+
<tr>
|
|
36
|
+
<td style="padding:0 10px 0 0" width="120">
|
|
37
|
+
<a href="https://app.compta-clementine.fr/" target="_blank" style="text-decoration: none; color: #6E6E71; white-space: nowrap;">
|
|
38
|
+
<img
|
|
39
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_connect2.png"
|
|
40
|
+
style="vertical-align: text-top;"
|
|
41
|
+
width="20"
|
|
42
|
+
alt="Connexion"> Connexion
|
|
43
|
+
</a>
|
|
44
|
+
</td>
|
|
45
|
+
<td style="padding:0 10px 0 0" width="170">
|
|
46
|
+
<a href="mailto:<%= supportMail %>" target="_blank" style="text-decoration: none; color: #6E6E71; white-space: nowrap;">
|
|
47
|
+
<img
|
|
48
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_support2.png"
|
|
49
|
+
style="vertical-align: text-top;"
|
|
50
|
+
width="17"
|
|
51
|
+
alt="Support technique"> Support technique
|
|
52
|
+
</a>
|
|
53
|
+
</td>
|
|
54
|
+
<td style="padding:0 5px 0 0" width="24">
|
|
55
|
+
<a href="https://www.youtube.com/channel/UCVnCpcLdRwuYBLvAphHsvig/" target="_blank" style="vertical-align: middle;"><img
|
|
56
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_youtube.png"
|
|
57
|
+
alt="YouTube"
|
|
58
|
+
style="width: 20px"></a>
|
|
59
|
+
</td>
|
|
60
|
+
<td style="padding:0 5px 0 0" width="24">
|
|
61
|
+
<a href="https://www.linkedin.com/company/compta-cl%C3%A9mentine/" target="_blank" style="vertical-align: middle;"><img
|
|
62
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_linkedin.png"
|
|
63
|
+
alt="LinkedIn"
|
|
64
|
+
style="width: 20px"></a>
|
|
65
|
+
</td>
|
|
66
|
+
<td style="padding:0 5px 0 0" width="24">
|
|
67
|
+
<a href="https://www.instagram.com/comptaclementine/" target="_blank" style="vertical-align: middle;"><img
|
|
68
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_instagram.png"
|
|
69
|
+
alt="Instagram"
|
|
70
|
+
style="width: 20px"></a>
|
|
71
|
+
</td>
|
|
72
|
+
<td style="text-align: right; vertical-align: middle; color: #6E6E71" width="430">
|
|
73
|
+
<span>Télécharger l'app</span>
|
|
74
|
+
<a href="https://apps.apple.com/fr/app/clementine/id1119493780" target="_blank" style="vertical-align: middle; margin-left: 10px"><img
|
|
75
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_appstore.png"
|
|
76
|
+
alt="App Store"
|
|
77
|
+
style="width: 20px"></a>
|
|
78
|
+
<a href="https://play.google.com/store/apps/details?id=com.clementine.myclementine&hl=fr" target="_blank" style="vertical-align: middle; margin-left: 10px"><img
|
|
79
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_playstore.png"
|
|
80
|
+
alt="Play Store"
|
|
81
|
+
style="width: 20px"></a>
|
|
82
|
+
</td>
|
|
83
|
+
</tr>
|
|
84
|
+
<tr>
|
|
85
|
+
<td colspan="7" style="padding-top: 12px">
|
|
86
|
+
<span style="text-align: left; text-decoration: none; color: #A0A1A6; white-space: nowrap; float: left;">
|
|
87
|
+
Une question ? Découvrez votre <a href="https://www.compta-clementine.fr/aide/" style="color: #FF7E3C">centre d'aide</a>
|
|
88
|
+
</span>
|
|
89
|
+
<span style="text-align: right; text-decoration: none; color: #A0A1A6; white-space: nowrap; float: right;">
|
|
90
|
+
Jusqu’à 500€ avec notre <a href="https://www.compta-clementine.fr/parrainage/?utm_source=signature&utm_medium=email&utm_campaign=signature&utm_content=cta" style="color: #FF7E3C">programme de parrainage</a>
|
|
91
|
+
</span>
|
|
92
|
+
</td>
|
|
93
|
+
</tr>
|
|
94
|
+
</table>
|
|
95
|
+
</td>
|
|
96
|
+
</tr>
|
|
97
|
+
<% } else if(brandName === 'Pourcentage') { %>
|
|
98
|
+
<tr>
|
|
99
|
+
<td
|
|
100
|
+
style="clear:both; padding-top: 20px; font-size:17px; line-height:14px; color:#ADADAD; text-align: justify; font-family: Arial;"
|
|
101
|
+
colspan="4">
|
|
102
|
+
<table style="width: 100%" width="100%">
|
|
103
|
+
<tr>
|
|
104
|
+
<td style="padding:0 10px 0 0" width="120">
|
|
105
|
+
<a href="https://app.pourcentage.fr/" target="_blank" style="text-decoration: none; color: #6E6E71; white-space: nowrap;">
|
|
106
|
+
<img
|
|
107
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_connect2.png"
|
|
108
|
+
style="vertical-align: text-top;"
|
|
109
|
+
width="20"
|
|
110
|
+
alt="Connexion"> Connexion
|
|
111
|
+
</a>
|
|
112
|
+
</td>
|
|
113
|
+
</table>
|
|
114
|
+
</td>
|
|
115
|
+
</tr>
|
|
116
|
+
<% } %>
|
|
117
|
+
`;
|
|
118
|
+
export const signatureTemplate = `<table
|
|
119
|
+
border="0"
|
|
120
|
+
cellpadding="0"
|
|
121
|
+
cellspacing="0"
|
|
122
|
+
width="850"
|
|
123
|
+
class="signatureClementine">
|
|
124
|
+
|
|
125
|
+
${logoClementine}
|
|
126
|
+
|
|
127
|
+
<tr style="background: #F4F8FB">
|
|
128
|
+
${avatar}
|
|
129
|
+
<td
|
|
130
|
+
class="infos"
|
|
131
|
+
style=" padding: 20px 0 20px 30px;font-size: 17px; font-family: Arial; color:#000"
|
|
132
|
+
width="290"
|
|
133
|
+
colspan="2">
|
|
134
|
+
<table
|
|
135
|
+
border="0"
|
|
136
|
+
cellpadding="0"
|
|
137
|
+
cellspacing="0"
|
|
138
|
+
width="290">
|
|
139
|
+
<tr>
|
|
140
|
+
<td width="290">
|
|
141
|
+
<p style="font-size: 17px; margin:0px 0; padding:0">
|
|
142
|
+
<strong><span style="color:<%= primaryColor %>; font-weight: bold;"><%= user?.firstname ?? '' %> <%= user?.lastname ?? '' %></span></strong>
|
|
143
|
+
</p>
|
|
144
|
+
|
|
145
|
+
<% if(roleSignature) { %>
|
|
146
|
+
<p style="font-size: 17px; margin:0px 0; padding:0">
|
|
147
|
+
<span style="color: #6E6E71; font-weight: bold;"><%= roleSignature %></span></p>
|
|
148
|
+
</p>
|
|
149
|
+
<% } %>
|
|
150
|
+
</td>
|
|
151
|
+
</tr>
|
|
152
|
+
</table>
|
|
153
|
+
|
|
154
|
+
<p style="margin:16px 0; color:#6E6E71; border-top: 2px solid #6E6E71; width: 100px; opacity: 0.2"><!-- --></p><p style="margin:0; padding:0px 0 4px; color:#6E6E71;"><%= user.roles.map((r) => r.idRoles).includes(22) || (user && user.isAll === true) ? 'Nos' : 'Mes' %> horaires :<br/><%= horaires %></p>
|
|
155
|
+
</td>
|
|
156
|
+
|
|
157
|
+
<td class="infos" style="padding: 20px 20px 20px 0px; font-size: 17px; font-family: Arial; color:#000; <%= !user.calendlyUrl ? 'vertical-align: top;' : '' %>"
|
|
158
|
+
width="370">
|
|
159
|
+
<p style="margin:0px 0; padding:2px 0; color:#6E6E71; padding-left: 10px">
|
|
160
|
+
<span style="float:right">Standard : <%= standardPhoneSignature %></span><br/>
|
|
161
|
+
<% if(phoneSignature && phoneSignature !== standardPhoneSignature) { %>
|
|
162
|
+
<span style="float:right">Ligne directe : <%- phoneSignature %></span><br/>
|
|
163
|
+
<% } %>
|
|
164
|
+
</p>
|
|
165
|
+
|
|
166
|
+
<p style="margin:20px 60px 0 0; padding:0px 0 4px; color:#6E6E71; text-align: right; height: 54px;">
|
|
167
|
+
<% if(user.calendlyUrl) { %>
|
|
168
|
+
<img
|
|
169
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_rightArrow.png"
|
|
170
|
+
alt="Prenez rendez-vous ici !">
|
|
171
|
+
<% } %>
|
|
172
|
+
</p>
|
|
173
|
+
|
|
174
|
+
<p style="margin:0; padding:0px 0 4px; color:#6E6E71; text-align: right"><a href="https://www.smileyourpla.net/" style="display: inline-block; color:#6E6E71;" target="_blank"><img
|
|
175
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_smileYourPlanet.png"
|
|
176
|
+
alt="Initiative Smile your planet" height="36"></a>
|
|
177
|
+
<% if(user.calendlyUrl) { %>
|
|
178
|
+
<a href="<%= user.calendlyUrl %>" style="display: inline-block; color:#6E6E71;" target="_blank"><img
|
|
179
|
+
src="https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_rdv_tel.png"
|
|
180
|
+
alt="Demande de rdv téléphonique"></a>
|
|
181
|
+
<% } %>
|
|
182
|
+
</p>
|
|
183
|
+
</td>
|
|
184
|
+
</tr>
|
|
185
|
+
|
|
186
|
+
${footer}
|
|
187
|
+
|
|
188
|
+
<tr>
|
|
189
|
+
<td
|
|
190
|
+
style="clear:both; padding-top: 20px; font-size:14px; line-height:18px; color:#ADADAD; text-align: justify; font-family: Arial;"
|
|
191
|
+
colspan="4">
|
|
192
|
+
Les informations contenues dans ce courrier électronique et ses pièces jointes sont confidentielles et couvertes par le secret professionnel. Si vous n'êtes pas le(s) destinataire(s) ou avez reçu ce courrier électronique par erreur, merci de bien vouloir supprimer l'email et d'en informer l'expéditeur dès que possible. Ce courrier électronique ne peut pas être divulgué, utilisé ou copié par quelqu'un d'autre que le(s) destinataire(s).
|
|
193
|
+
</td>
|
|
194
|
+
</tr>
|
|
195
|
+
</table>`;
|
|
196
|
+
//# sourceMappingURL=signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../../ts/utils/email/templates/signature.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG;;;;;;;;;;;;aAYV,CAAC;AAEd,MAAM,MAAM,GAAG;;;;;;;;;;;;;;UAcL,CAAC;AAEX,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwFd,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;EAO/B,cAAc;;;IAGZ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0DN,MAAM;;;;;;;;;SASD,CAAC","sourcesContent":["const logoClementine = `<% if (brandName === 'Clementine') { %><tr>\n<td\ncolspan=\"3\"\nclass=\"logo\"\nstyle=\"\"\nwidth=\"850\">\n <img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/logo_2022.png\"\n alt=\"Logo\"\n height=\"32\"\n style=\"padding-bottom: 10px;\">\n</td>\n</tr><% } %>`;\n\nconst avatar = `<% if (!forceRole && user?.avatar?.token) { %>\n <td\n class=\"avatar\"\n style=\"text-align:center; padding: 20px 0 20px 20px; position: relative;\"\n width=\"100\">\n <p style=\"padding: 20px;background-image: url('https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_quotes.png');background-size: 26%;background-position: 81% -3%;background-repeat: no-repeat;\">\n <img\n style=\"max-height: 90px;max-width: 90px; border-radius: 100%; padding-top: 1Opx\"\n src=\"\n <%= hostS3 %>users/<%= user.id %>/<%= user.avatar.token %>\n \"\n />\n </p>\n </td>\n <% } %>`;\n\nconst footer = `<% if(brandName === 'Clementine') { %>\n <tr>\n <td\n style=\"clear:both; padding-top: 20px; font-size:17px; line-height:14px; color:#ADADAD; text-align: justify; font-family: Arial;\"\n colspan=\"4\">\n <table style=\"width: 100%\" width=\"100%\">\n <tr>\n <td style=\"padding:0 10px 0 0\" width=\"120\">\n <a href=\"https://app.compta-clementine.fr/\" target=\"_blank\" style=\"text-decoration: none; color: #6E6E71; white-space: nowrap;\">\n <img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_connect2.png\"\n style=\"vertical-align: text-top;\"\n width=\"20\"\n alt=\"Connexion\"> Connexion\n </a>\n </td>\n <td style=\"padding:0 10px 0 0\" width=\"170\">\n <a href=\"mailto:<%= supportMail %>\" target=\"_blank\" style=\"text-decoration: none; color: #6E6E71; white-space: nowrap;\">\n <img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_support2.png\"\n style=\"vertical-align: text-top;\"\n width=\"17\"\n alt=\"Support technique\"> Support technique\n </a>\n </td>\n <td style=\"padding:0 5px 0 0\" width=\"24\">\n <a href=\"https://www.youtube.com/channel/UCVnCpcLdRwuYBLvAphHsvig/\" target=\"_blank\" style=\"vertical-align: middle;\"><img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_youtube.png\"\n alt=\"YouTube\"\n style=\"width: 20px\"></a>\n </td>\n <td style=\"padding:0 5px 0 0\" width=\"24\">\n <a href=\"https://www.linkedin.com/company/compta-cl%C3%A9mentine/\" target=\"_blank\" style=\"vertical-align: middle;\"><img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_linkedin.png\"\n alt=\"LinkedIn\"\n style=\"width: 20px\"></a>\n </td>\n <td style=\"padding:0 5px 0 0\" width=\"24\">\n <a href=\"https://www.instagram.com/comptaclementine/\" target=\"_blank\" style=\"vertical-align: middle;\"><img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_instagram.png\"\n alt=\"Instagram\"\n style=\"width: 20px\"></a>\n </td>\n <td style=\"text-align: right; vertical-align: middle; color: #6E6E71\" width=\"430\">\n <span>Télécharger l'app</span>\n <a href=\"https://apps.apple.com/fr/app/clementine/id1119493780\" target=\"_blank\" style=\"vertical-align: middle; margin-left: 10px\"><img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_appstore.png\"\n alt=\"App Store\"\n style=\"width: 20px\"></a>\n <a href=\"https://play.google.com/store/apps/details?id=com.clementine.myclementine&hl=fr\" target=\"_blank\" style=\"vertical-align: middle; margin-left: 10px\"><img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_playstore.png\"\n alt=\"Play Store\"\n style=\"width: 20px\"></a>\n </td>\n </tr>\n <tr>\n <td colspan=\"7\" style=\"padding-top: 12px\">\n <span style=\"text-align: left; text-decoration: none; color: #A0A1A6; white-space: nowrap; float: left;\">\n Une question ? Découvrez votre <a href=\"https://www.compta-clementine.fr/aide/\" style=\"color: #FF7E3C\">centre d'aide</a>\n </span>\n <span style=\"text-align: right; text-decoration: none; color: #A0A1A6; white-space: nowrap; float: right;\">\n Jusqu’à 500€ avec notre <a href=\"https://www.compta-clementine.fr/parrainage/?utm_source=signature&utm_medium=email&utm_campaign=signature&utm_content=cta\" style=\"color: #FF7E3C\">programme de parrainage</a>\n </span>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <% } else if(brandName === 'Pourcentage') { %>\n <tr>\n <td\n style=\"clear:both; padding-top: 20px; font-size:17px; line-height:14px; color:#ADADAD; text-align: justify; font-family: Arial;\"\n colspan=\"4\">\n <table style=\"width: 100%\" width=\"100%\">\n <tr>\n <td style=\"padding:0 10px 0 0\" width=\"120\">\n <a href=\"https://app.pourcentage.fr/\" target=\"_blank\" style=\"text-decoration: none; color: #6E6E71; white-space: nowrap;\">\n <img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_connect2.png\"\n style=\"vertical-align: text-top;\"\n width=\"20\"\n alt=\"Connexion\"> Connexion\n </a>\n </td>\n </table>\n </td>\n </tr>\n <% } %>\n`;\n\nexport const signatureTemplate = `<table\nborder=\"0\"\ncellpadding=\"0\"\ncellspacing=\"0\"\nwidth=\"850\"\nclass=\"signatureClementine\">\n\n${logoClementine}\n\n<tr style=\"background: #F4F8FB\">\n ${avatar}\n <td\n class=\"infos\"\n style=\" padding: 20px 0 20px 30px;font-size: 17px; font-family: Arial; color:#000\"\n width=\"290\"\n colspan=\"2\">\n <table\n border=\"0\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n width=\"290\">\n <tr>\n <td width=\"290\">\n <p style=\"font-size: 17px; margin:0px 0; padding:0\">\n <strong><span style=\"color:<%= primaryColor %>; font-weight: bold;\"><%= user?.firstname ?? '' %> <%= user?.lastname ?? '' %></span></strong>\n </p>\n\n <% if(roleSignature) { %>\n <p style=\"font-size: 17px; margin:0px 0; padding:0\">\n <span style=\"color: #6E6E71; font-weight: bold;\"><%= roleSignature %></span></p>\n </p>\n <% } %>\n </td>\n </tr>\n </table>\n\n <p style=\"margin:16px 0; color:#6E6E71; border-top: 2px solid #6E6E71; width: 100px; opacity: 0.2\"><!-- --></p><p style=\"margin:0; padding:0px 0 4px; color:#6E6E71;\"><%= user.roles.map((r) => r.idRoles).includes(22) || (user && user.isAll === true) ? 'Nos' : 'Mes' %> horaires :<br/><%= horaires %></p>\n </td>\n \n <td class=\"infos\" style=\"padding: 20px 20px 20px 0px; font-size: 17px; font-family: Arial; color:#000; <%= !user.calendlyUrl ? 'vertical-align: top;' : '' %>\"\n width=\"370\">\n <p style=\"margin:0px 0; padding:2px 0; color:#6E6E71; padding-left: 10px\">\n <span style=\"float:right\">Standard : <%= standardPhoneSignature %></span><br/>\n <% if(phoneSignature && phoneSignature !== standardPhoneSignature) { %>\n <span style=\"float:right\">Ligne directe : <%- phoneSignature %></span><br/>\n <% } %>\n </p>\n \n <p style=\"margin:20px 60px 0 0; padding:0px 0 4px; color:#6E6E71; text-align: right; height: 54px;\">\n <% if(user.calendlyUrl) { %>\n <img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_rightArrow.png\"\n alt=\"Prenez rendez-vous ici !\">\n <% } %>\n </p>\n \n <p style=\"margin:0; padding:0px 0 4px; color:#6E6E71; text-align: right\"><a href=\"https://www.smileyourpla.net/\" style=\"display: inline-block; color:#6E6E71;\" target=\"_blank\"><img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_smileYourPlanet.png\"\n alt=\"Initiative Smile your planet\" height=\"36\"></a>\n <% if(user.calendlyUrl) { %>\n <a href=\"<%= user.calendlyUrl %>\" style=\"display: inline-block; color:#6E6E71;\" target=\"_blank\"><img\n src=\"https://clementine-website.s3.eu-west-3.amazonaws.com/signaturemail_rdv_tel.png\"\n alt=\"Demande de rdv téléphonique\"></a>\n <% } %>\n </p>\n </td>\n </tr>\n \n ${footer}\n\n <tr>\n <td\n style=\"clear:both; padding-top: 20px; font-size:14px; line-height:18px; color:#ADADAD; text-align: justify; font-family: Arial;\"\n colspan=\"4\">\n Les informations contenues dans ce courrier électronique et ses pièces jointes sont confidentielles et couvertes par le secret professionnel. Si vous n'êtes pas le(s) destinataire(s) ou avez reçu ce courrier électronique par erreur, merci de bien vouloir supprimer l'email et d'en informer l'expéditeur dès que possible. Ce courrier électronique ne peut pas être divulgué, utilisé ou copié par quelqu'un d'autre que le(s) destinataire(s).\n </td>\n</tr>\n</table>`;"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../ts/utils/email.ts"],"names":[],"mappings":"AAgHA,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAqHrD"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import * as dayjs from 'dayjs';
|
|
13
|
+
import { orderBy as orderByLodash } from 'lodash';
|
|
14
|
+
import { Role } from '../types/Enum/Role';
|
|
15
|
+
import { getBrandConfig } from './brands';
|
|
16
|
+
import { signatureTemplate } from './email/templates/signature';
|
|
17
|
+
const ejs = require('ejs');
|
|
18
|
+
function intersection(arr) { return arr.reduce((a, b) => a.filter((c) => b.includes(c)), []); }
|
|
19
|
+
function getRoleSignature(user) {
|
|
20
|
+
if (user.positionLabel)
|
|
21
|
+
return user.positionLabel;
|
|
22
|
+
const isStagiaireOrAlternant = user.roles.map((r) => r.id).includes(Role.INTERN) || user.roles.map((r) => r.id).includes(Role.ALTERNATE);
|
|
23
|
+
const isManager = user.roles.map((r) => r.id).includes(Role.MANAGER);
|
|
24
|
+
const isSocial = user.roles.map((r) => r.id).includes(Role.SOCIAL);
|
|
25
|
+
const isJuridic = user.roles.map((r) => r.id).includes(Role.JURIDIC);
|
|
26
|
+
const isFacturation = user.roles.map((r) => r.id).includes(Role.FACTURATION);
|
|
27
|
+
const isExpert = user.roles.map((r) => r.id).includes(Role.EXPERT_ACCOUNTANT);
|
|
28
|
+
const isCS = user.roles.map((r) => r.id).includes(Role.CUSTOMER_SUCCESS);
|
|
29
|
+
const isSales = user.roles.map((r) => r.id).includes(Role.COMMERCIAL);
|
|
30
|
+
const isAdmin = user.roles.map((r) => r.id).includes(Role.ADMIN);
|
|
31
|
+
const isFront = !!intersection([user.roles.map((r) => r.id), [Role.FRONT_OFFICE, Role.FRONT_OFFICE_EXPRESS]]).length;
|
|
32
|
+
if (isSales && isManager) {
|
|
33
|
+
return 'Responsable commercial';
|
|
34
|
+
}
|
|
35
|
+
if (isSales) {
|
|
36
|
+
return `Chargé${user.idCivility === 2 ? 'e' : ''} de clientèle`;
|
|
37
|
+
}
|
|
38
|
+
if (isCS && isManager) {
|
|
39
|
+
return 'Responsable de clientèle';
|
|
40
|
+
}
|
|
41
|
+
if (isCS) {
|
|
42
|
+
return `Chargé${user.idCivility === 2 ? 'e' : ''} de clientèle`;
|
|
43
|
+
}
|
|
44
|
+
if (isFacturation && isStagiaireOrAlternant) {
|
|
45
|
+
return 'Assistant facturation';
|
|
46
|
+
}
|
|
47
|
+
if (isFacturation && isManager) {
|
|
48
|
+
return 'Responsable facturation';
|
|
49
|
+
}
|
|
50
|
+
if (isFacturation) {
|
|
51
|
+
return `Chargé${user.idCivility === 2 ? 'e' : ''} de facturation`;
|
|
52
|
+
}
|
|
53
|
+
if (isJuridic && isStagiaireOrAlternant) {
|
|
54
|
+
return 'Assistant juridique';
|
|
55
|
+
}
|
|
56
|
+
if (isJuridic && isManager) {
|
|
57
|
+
return 'Responsable juridique';
|
|
58
|
+
}
|
|
59
|
+
if (isJuridic) {
|
|
60
|
+
return 'Juriste';
|
|
61
|
+
}
|
|
62
|
+
if (isSocial && isStagiaireOrAlternant) {
|
|
63
|
+
return 'Assistant paie';
|
|
64
|
+
}
|
|
65
|
+
if (isSocial && isManager) {
|
|
66
|
+
return 'Responsable paie';
|
|
67
|
+
}
|
|
68
|
+
if (isSocial) {
|
|
69
|
+
return 'Gestionnaire de paie';
|
|
70
|
+
}
|
|
71
|
+
if (isExpert) {
|
|
72
|
+
return `Expert${user.idCivility === 2 ? 'e' : ''}-comptable`;
|
|
73
|
+
}
|
|
74
|
+
if (isAdmin) {
|
|
75
|
+
return 'Développeur web';
|
|
76
|
+
}
|
|
77
|
+
if (isFront && isManager)
|
|
78
|
+
return 'Responsable comptable';
|
|
79
|
+
if (isFront && isStagiaireOrAlternant)
|
|
80
|
+
return 'Assistant comptable';
|
|
81
|
+
if (isFront)
|
|
82
|
+
return `Comptable dédié${user.idCivility === 2 ? 'e' : ''}`;
|
|
83
|
+
return `Comptable dédié${user.idCivility === 2 ? 'e' : ''}`;
|
|
84
|
+
}
|
|
85
|
+
function getHoraires(user) {
|
|
86
|
+
if (!intersection([user.roles.map((r) => r.id), [Role.FRONT_OFFICE, Role.FRONT_OFFICE_EXPRESS, Role.COMMERCIAL]]).length)
|
|
87
|
+
return 'Du lundi au vendredi de 9h à 19h';
|
|
88
|
+
if (!user.workingSchedules.length)
|
|
89
|
+
return 'Du lundi au vendredi de 9h à 19h';
|
|
90
|
+
let reducedSchedules = user.workingSchedules.reduce((acc, e, index) => {
|
|
91
|
+
const name = `${dayjs(e.morningStart, 'HH:mm:ss').format('HH:mm')}-${dayjs(e.afternoonEnd || e.morningEnd, 'HH:mm:ss').format('HH:mm')}`;
|
|
92
|
+
if (!acc[name])
|
|
93
|
+
acc[name] = [index];
|
|
94
|
+
else
|
|
95
|
+
acc[name].push(index);
|
|
96
|
+
return acc;
|
|
97
|
+
}, {});
|
|
98
|
+
reducedSchedules = orderByLodash(reducedSchedules, (elem) => elem.length, ['desc']);
|
|
99
|
+
let resultHoraire = '';
|
|
100
|
+
let startH;
|
|
101
|
+
let startM;
|
|
102
|
+
let endH;
|
|
103
|
+
let endM;
|
|
104
|
+
let firstDayOfWeek;
|
|
105
|
+
let lastDayOfWeek;
|
|
106
|
+
reducedSchedules.forEach((schedule, index) => {
|
|
107
|
+
startH = dayjs(user.workingSchedules[schedule[0]].morningStart ? user.workingSchedules[schedule[0]].morningStart : user.workingSchedules[schedule[0]].afternoonStart, 'HH:mm:ss').get('hour');
|
|
108
|
+
startM = dayjs(user.workingSchedules[schedule[0]].morningStart ? user.workingSchedules[schedule[0]].morningStart : user.workingSchedules[schedule[0]].afternoonStart, 'HH:mm:ss').get('minute');
|
|
109
|
+
endH = dayjs(user.workingSchedules[schedule[0]].afternoonEnd || user.workingSchedules[schedule[0]].morningEnd, 'HH:mm:ss').get('hour');
|
|
110
|
+
endM = dayjs(user.workingSchedules[schedule[0]].afternoonEnd || user.workingSchedules[schedule[0]].morningEnd, 'HH:mm:ss').get('minute');
|
|
111
|
+
firstDayOfWeek = dayjs().locale('fr').day(user.workingSchedules[schedule[0]].idDay).format('dddd');
|
|
112
|
+
if (!index) {
|
|
113
|
+
// pour le premier index, on affiche l'amplitude horaire la plus commune, du XX au XX de Xh à Xh
|
|
114
|
+
lastDayOfWeek = dayjs().locale('fr').day(user.workingSchedules[user.workingSchedules.length - 1].idDay).format('dddd');
|
|
115
|
+
resultHoraire += `Du ${firstDayOfWeek} au ${lastDayOfWeek} de ${startH}h${startM > 0 ? startM : ''} à ${endH}h${endM > 0 ? endM : ''}`;
|
|
116
|
+
}
|
|
117
|
+
else { // Fonctionnel si uniquement un jour par semaine avec des horaires différents
|
|
118
|
+
resultHoraire += `<br/>Le ${firstDayOfWeek} de ${startH}h${startM > 0 ? startM : ''} à ${endH}h${endM > 0 ? endM : ''}`;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
return resultHoraire;
|
|
122
|
+
}
|
|
123
|
+
function getMailSignature(user, idTypeBrand) {
|
|
124
|
+
const informatiqueMail = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listMails.informatique' }));
|
|
125
|
+
const bonjourMail = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listMails.bonjour' }));
|
|
126
|
+
if (user.roles.map((r) => r.id).includes(Role.ADMIN)) {
|
|
127
|
+
return informatiqueMail;
|
|
128
|
+
}
|
|
129
|
+
if (user && !!intersection([user.roles.map((r) => r.id), [Role.FRONT_OFFICE, Role.FRONT_OFFICE_EXPRESS, Role.COMMERCIAL]]).length)
|
|
130
|
+
return user.email;
|
|
131
|
+
return bonjourMail;
|
|
132
|
+
}
|
|
133
|
+
function getPhoneSignature(user) {
|
|
134
|
+
if (user.phone !== '0383931414') {
|
|
135
|
+
return user.phone.replace(/\B(?=(\d{2})+(?!\d))/g, ' ');
|
|
136
|
+
}
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
export function generateSignature(params) {
|
|
140
|
+
const { forceRole = null, idTypeBrand = 1 } = params, otherParams = __rest(params, ["forceRole", "idTypeBrand"]);
|
|
141
|
+
let { user, } = otherParams;
|
|
142
|
+
const hostS3 = getBrandConfig({
|
|
143
|
+
idTypeBrand,
|
|
144
|
+
objectWaited: 'urlS3',
|
|
145
|
+
});
|
|
146
|
+
const brandName = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'name' }));
|
|
147
|
+
const bonjourMail = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listMails.bonjour' }));
|
|
148
|
+
const socialMail = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listMails.social' }));
|
|
149
|
+
const supportMail = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listMails.support' }));
|
|
150
|
+
const juridiqueMail = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listMails.juridique' }));
|
|
151
|
+
const facturationMail = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listMails.facturation' }));
|
|
152
|
+
const primaryColor = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'colors.primary' }));
|
|
153
|
+
const standardPhoneSignature = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listPhones.contact' }));
|
|
154
|
+
const juridiquePhoneSignature = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listPhones.juridique' }));
|
|
155
|
+
const socialPhoneSignature = getBrandConfig(Object.assign(Object.assign({}, (idTypeBrand ? { idTypeBrand } : {})), { objectWaited: 'listPhones.social' }));
|
|
156
|
+
let roleSignature;
|
|
157
|
+
let mailSignature;
|
|
158
|
+
let phoneSignature;
|
|
159
|
+
let horaires;
|
|
160
|
+
[roleSignature, mailSignature, phoneSignature, horaires] = ['Expert-Comptable', bonjourMail, false, 'Du lundi au vendredi de 9h à 19h'];
|
|
161
|
+
if (!user) { // Signature Clementine
|
|
162
|
+
user = {
|
|
163
|
+
firstname: `L'équipe ${brandName}`,
|
|
164
|
+
isAll: true,
|
|
165
|
+
};
|
|
166
|
+
roleSignature = '';
|
|
167
|
+
}
|
|
168
|
+
else if (forceRole === 'social') { // Signature social
|
|
169
|
+
user = {
|
|
170
|
+
firstname: 'Service social',
|
|
171
|
+
isAll: true,
|
|
172
|
+
};
|
|
173
|
+
mailSignature = socialMail;
|
|
174
|
+
roleSignature = '';
|
|
175
|
+
phoneSignature = socialPhoneSignature;
|
|
176
|
+
}
|
|
177
|
+
else if (forceRole === 'support') { // Signature support
|
|
178
|
+
user = {
|
|
179
|
+
firstname: 'Service Support',
|
|
180
|
+
isAll: true,
|
|
181
|
+
};
|
|
182
|
+
mailSignature = supportMail;
|
|
183
|
+
roleSignature = null;
|
|
184
|
+
}
|
|
185
|
+
else if (forceRole === 'juridique') { // Signature juridique
|
|
186
|
+
user = {
|
|
187
|
+
firstname: 'Service juridique',
|
|
188
|
+
isAll: true,
|
|
189
|
+
};
|
|
190
|
+
mailSignature = juridiqueMail;
|
|
191
|
+
roleSignature = null;
|
|
192
|
+
phoneSignature = juridiquePhoneSignature;
|
|
193
|
+
}
|
|
194
|
+
else if (forceRole === 'facturation') { // Signature facturation
|
|
195
|
+
user = {
|
|
196
|
+
firstname: 'Service facturation',
|
|
197
|
+
isAll: true,
|
|
198
|
+
};
|
|
199
|
+
mailSignature = facturationMail;
|
|
200
|
+
roleSignature = null;
|
|
201
|
+
phoneSignature = standardPhoneSignature;
|
|
202
|
+
}
|
|
203
|
+
else if (user !== 0) { // Signature par défaut
|
|
204
|
+
roleSignature = getRoleSignature(user);
|
|
205
|
+
mailSignature = getMailSignature(user, idTypeBrand);
|
|
206
|
+
horaires = getHoraires(user);
|
|
207
|
+
phoneSignature = getPhoneSignature(user);
|
|
208
|
+
}
|
|
209
|
+
return ejs.render(signatureTemplate, {
|
|
210
|
+
forceRole,
|
|
211
|
+
brandName,
|
|
212
|
+
hostS3,
|
|
213
|
+
user,
|
|
214
|
+
roleSignature,
|
|
215
|
+
mailSignature,
|
|
216
|
+
phoneSignature,
|
|
217
|
+
standardPhoneSignature,
|
|
218
|
+
horaires,
|
|
219
|
+
primaryColor,
|
|
220
|
+
supportMail,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=email.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../ts/utils/email.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAE3B,SAAS,YAAY,CAAI,GAAe,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAExH,SAAS,gBAAgB,CAAC,IAAQ;IAChC,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC,aAAa,CAAC;IAElD,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnJ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE1H,IAAI,OAAO,IAAI,SAAS,EAAE;QAAE,OAAO,wBAAwB,CAAC;KAAE;IAC9D,IAAI,OAAO,EAAE;QAAE,OAAO,SAAS,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;KAAE;IAEjF,IAAI,IAAI,IAAI,SAAS,EAAE;QAAE,OAAO,0BAA0B,CAAC;KAAE;IAC7D,IAAI,IAAI,EAAE;QAAE,OAAO,SAAS,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;KAAE;IAE9E,IAAI,aAAa,IAAI,sBAAsB,EAAE;QAAE,OAAO,uBAAuB,CAAC;KAAE;IAChF,IAAI,aAAa,IAAI,SAAS,EAAE;QAAE,OAAO,yBAAyB,CAAC;KAAE;IACrE,IAAI,aAAa,EAAE;QAAE,OAAO,SAAS,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;KAAE;IAEzF,IAAI,SAAS,IAAI,sBAAsB,EAAE;QAAE,OAAO,qBAAqB,CAAC;KAAE;IAC1E,IAAI,SAAS,IAAI,SAAS,EAAE;QAAE,OAAO,uBAAuB,CAAC;KAAE;IAC/D,IAAI,SAAS,EAAE;QAAE,OAAO,SAAS,CAAC;KAAE;IAEpC,IAAI,QAAQ,IAAI,sBAAsB,EAAE;QAAE,OAAO,gBAAgB,CAAC;KAAE;IACpE,IAAI,QAAQ,IAAI,SAAS,EAAE;QAAE,OAAO,kBAAkB,CAAC;KAAE;IACzD,IAAI,QAAQ,EAAE;QAAE,OAAO,sBAAsB,CAAC;KAAE;IAEhD,IAAI,QAAQ,EAAE;QAAE,OAAO,SAAS,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;KAAE;IAE/E,IAAI,OAAO,EAAE;QAAE,OAAO,iBAAiB,CAAC;KAAE;IAE1C,IAAI,OAAO,IAAI,SAAS;QAAE,OAAO,uBAAuB,CAAC;IACzD,IAAI,OAAO,IAAI,sBAAsB;QAAE,OAAO,qBAAqB,CAAC;IACpE,IAAI,OAAO;QAAE,OAAO,kBAAkB,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzE,OAAO,kBAAkB,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,WAAW,CAAC,IAAQ;IAC3B,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM;QAAE,OAAO,kCAAkC,CAAC;IAEzK,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM;QAAE,OAAO,kCAAkC,CAAC;IAE7E,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAK,EAAE,KAAa,EAAE,EAAE;QACrF,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACzI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;YAC/B,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpF,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,MAAM,CAAC;IACX,IAAI,MAAM,CAAC;IACX,IAAI,IAAI,CAAC;IACT,IAAI,IAAI,CAAC;IACT,IAAI,cAAc,CAAC;IACnB,IAAI,aAAa,CAAC;IAElB,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,KAAa,EAAE,EAAE;QACxD,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9L,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzI,cAAc,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnG,IAAI,CAAC,KAAK,EAAE;YACV,gGAAgG;YAChG,aAAa,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvH,aAAa,IAAI,MAAM,cAAc,OAAO,aAAa,OAAO,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACxI;aAAM,EAAE,6EAA6E;YACpF,aAAa,IAAI,WAAW,cAAc,OAAO,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACzH;IACH,CAAC,CAAC,CAAC;IACH,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAQ,EAAE,WAAkB;IACpD,MAAM,gBAAgB,GAAG,cAAc,iCAClC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,wBAAwB,IACjB,CAAC;IACxB,MAAM,WAAW,GAAG,cAAc,iCAC7B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,mBAAmB,IACZ,CAAC;IAExB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,gBAAgB,CAAC;KAAE;IACvF,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAC1J,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAQ;IACjC,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,EAAE;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;KAAE;IAClG,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAW;IAC3C,MAAM,EACJ,SAAS,GAAG,IAAI,EAAE,WAAW,GAAG,CAAC,KAC/B,MAAM,EAD8B,WAAW,UAC/C,MAAM,EAFJ,4BAEL,CAAS,CAAC;IACX,IAAI,EACF,IAAI,GACL,GAAG,WAAW,CAAC;IAEhB,MAAM,MAAM,GAAG,cAAc,CAAC;QAC5B,WAAW;QACX,YAAY,EAAE,OAAO;KACtB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,cAAc,iCAC3B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,MAAM,IACC,CAAC;IACxB,MAAM,WAAW,GAAG,cAAc,iCAC7B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,mBAAmB,IACZ,CAAC;IACxB,MAAM,UAAU,GAAG,cAAc,iCAC5B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,kBAAkB,IACX,CAAC;IACxB,MAAM,WAAW,GAAG,cAAc,iCAC7B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,mBAAmB,IACZ,CAAC;IACxB,MAAM,aAAa,GAAG,cAAc,iCAC/B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,qBAAqB,IACd,CAAC;IACxB,MAAM,eAAe,GAAG,cAAc,iCACjC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,uBAAuB,IAChB,CAAC;IACxB,MAAM,YAAY,GAAG,cAAc,iCAC9B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,gBAAgB,IACT,CAAC;IACxB,MAAM,sBAAsB,GAAG,cAAc,iCACxC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,oBAAoB,IACb,CAAC;IACxB,MAAM,uBAAuB,GAAG,cAAc,iCACzC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,sBAAsB,IACf,CAAC;IACxB,MAAM,oBAAoB,GAAG,cAAc,iCACtC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACvC,YAAY,EAAE,mBAAmB,IACZ,CAAC;IAExB,IAAI,aAA4B,CAAC;IACjC,IAAI,aAA4B,CAAC;IACjC,IAAI,cAAgC,CAAC;IACrC,IAAI,QAAuB,CAAC;IAC5B,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,WAAW,EAAE,KAAK,EAAE,kCAAkC,CAAC,CAAC;IAExI,IAAI,CAAC,IAAI,EAAE,EAAE,uBAAuB;QAClC,IAAI,GAAG;YACL,SAAS,EAAE,YAAY,SAAS,EAAE;YAClC,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,aAAa,GAAG,EAAE,CAAC;KACpB;SAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,EAAE,mBAAmB;QACtD,IAAI,GAAG;YACL,SAAS,EAAE,gBAAgB;YAC3B,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,aAAa,GAAG,UAAU,CAAC;QAC3B,aAAa,GAAG,EAAE,CAAC;QACnB,cAAc,GAAG,oBAAoB,CAAC;KACvC;SAAM,IAAI,SAAS,KAAK,SAAS,EAAE,EAAE,oBAAoB;QACxD,IAAI,GAAG;YACL,SAAS,EAAE,iBAAiB;YAC5B,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,aAAa,GAAG,WAAW,CAAC;QAC5B,aAAa,GAAG,IAAI,CAAC;KACtB;SAAM,IAAI,SAAS,KAAK,WAAW,EAAE,EAAE,sBAAsB;QAC5D,IAAI,GAAG;YACL,SAAS,EAAE,mBAAmB;YAC9B,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,aAAa,GAAG,aAAa,CAAC;QAC9B,aAAa,GAAG,IAAI,CAAC;QACrB,cAAc,GAAG,uBAAuB,CAAC;KAC1C;SAAM,IAAI,SAAS,KAAK,aAAa,EAAE,EAAE,wBAAwB;QAChE,IAAI,GAAG;YACL,SAAS,EAAE,qBAAqB;YAChC,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,aAAa,GAAG,eAAe,CAAC;QAChC,aAAa,GAAG,IAAI,CAAC;QACrB,cAAc,GAAG,sBAAsB,CAAC;KACzC;SAAM,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,uBAAuB;QAC9C,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvC,aAAa,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACpD,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC1C;IAED,OAAO,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE;QACnC,SAAS;QACT,SAAS;QACT,MAAM;QACN,IAAI;QACJ,aAAa;QACb,aAAa;QACb,cAAc;QACd,sBAAsB;QACtB,QAAQ;QACR,YAAY;QACZ,WAAW;KACZ,CAAC,CAAC;AACL,CAAC","sourcesContent":["import * as dayjs from 'dayjs';\nimport { orderBy as orderByLodash } from 'lodash';\nimport { Role } from '../types/Enum/Role';\nimport { getBrandConfig } from './brands';\nimport { signatureTemplate } from './email/templates/signature';\n\nconst ejs = require('ejs');\n\nfunction intersection<T>(arr: [T[], T[]]) { return arr.reduce((a: T[], b: T[]) => a.filter((c) => b.includes(c)), []); }\n\nfunction getRoleSignature(user:any) {\n if (user.positionLabel) return user.positionLabel;\n\n const isStagiaireOrAlternant = user.roles.map((r: any) => r.id).includes(Role.INTERN) || user.roles.map((r: any) => r.id).includes(Role.ALTERNATE);\n const isManager = user.roles.map((r: any) => r.id).includes(Role.MANAGER);\n\n const isSocial = user.roles.map((r: any) => r.id).includes(Role.SOCIAL);\n const isJuridic = user.roles.map((r: any) => r.id).includes(Role.JURIDIC);\n const isFacturation = user.roles.map((r: any) => r.id).includes(Role.FACTURATION);\n const isExpert = user.roles.map((r: any) => r.id).includes(Role.EXPERT_ACCOUNTANT);\n const isCS = user.roles.map((r: any) => r.id).includes(Role.CUSTOMER_SUCCESS);\n const isSales = user.roles.map((r: any) => r.id).includes(Role.COMMERCIAL);\n const isAdmin = user.roles.map((r: any) => r.id).includes(Role.ADMIN);\n const isFront = !!intersection([user.roles.map((r: any) => r.id), [Role.FRONT_OFFICE, Role.FRONT_OFFICE_EXPRESS]]).length;\n\n if (isSales && isManager) { return 'Responsable commercial'; }\n if (isSales) { return `Chargé${user.idCivility === 2 ? 'e' : ''} de clientèle`; }\n\n if (isCS && isManager) { return 'Responsable de clientèle'; }\n if (isCS) { return `Chargé${user.idCivility === 2 ? 'e' : ''} de clientèle`; }\n\n if (isFacturation && isStagiaireOrAlternant) { return 'Assistant facturation'; }\n if (isFacturation && isManager) { return 'Responsable facturation'; }\n if (isFacturation) { return `Chargé${user.idCivility === 2 ? 'e' : ''} de facturation`; }\n\n if (isJuridic && isStagiaireOrAlternant) { return 'Assistant juridique'; }\n if (isJuridic && isManager) { return 'Responsable juridique'; }\n if (isJuridic) { return 'Juriste'; }\n\n if (isSocial && isStagiaireOrAlternant) { return 'Assistant paie'; }\n if (isSocial && isManager) { return 'Responsable paie'; }\n if (isSocial) { return 'Gestionnaire de paie'; }\n\n if (isExpert) { return `Expert${user.idCivility === 2 ? 'e' : ''}-comptable`; }\n\n if (isAdmin) { return 'Développeur web'; }\n\n if (isFront && isManager) return 'Responsable comptable';\n if (isFront && isStagiaireOrAlternant) return 'Assistant comptable';\n if (isFront) return `Comptable dédié${user.idCivility === 2 ? 'e' : ''}`;\n return `Comptable dédié${user.idCivility === 2 ? 'e' : ''}`;\n}\n\nfunction getHoraires(user:any) { // On affiche les horaires uniquement pour les front, et pas pour les TVA\n if (!intersection([user.roles.map((r: any) => r.id), [Role.FRONT_OFFICE, Role.FRONT_OFFICE_EXPRESS, Role.COMMERCIAL]]).length) return 'Du lundi au vendredi de 9h à 19h';\n\n if (!user.workingSchedules.length) return 'Du lundi au vendredi de 9h à 19h';\n\n let reducedSchedules = user.workingSchedules.reduce((acc: any, e:any, index: number) => {\n const name = `${dayjs(e.morningStart, 'HH:mm:ss').format('HH:mm')}-${dayjs(e.afternoonEnd || e.morningEnd, 'HH:mm:ss').format('HH:mm')}`;\n if (!acc[name]) acc[name] = [index];\n else acc[name].push(index);\n return acc;\n }, {});\n\n reducedSchedules = orderByLodash(reducedSchedules, (elem) => elem.length, ['desc']);\n\n let resultHoraire = '';\n let startH;\n let startM;\n let endH;\n let endM;\n let firstDayOfWeek;\n let lastDayOfWeek;\n\n reducedSchedules.forEach((schedule: any, index: number) => {\n startH = dayjs(user.workingSchedules[schedule[0]].morningStart ? user.workingSchedules[schedule[0]].morningStart : user.workingSchedules[schedule[0]].afternoonStart, 'HH:mm:ss').get('hour');\n startM = dayjs(user.workingSchedules[schedule[0]].morningStart ? user.workingSchedules[schedule[0]].morningStart : user.workingSchedules[schedule[0]].afternoonStart, 'HH:mm:ss').get('minute');\n endH = dayjs(user.workingSchedules[schedule[0]].afternoonEnd || user.workingSchedules[schedule[0]].morningEnd, 'HH:mm:ss').get('hour');\n endM = dayjs(user.workingSchedules[schedule[0]].afternoonEnd || user.workingSchedules[schedule[0]].morningEnd, 'HH:mm:ss').get('minute');\n firstDayOfWeek = dayjs().locale('fr').day(user.workingSchedules[schedule[0]].idDay).format('dddd');\n if (!index) {\n // pour le premier index, on affiche l'amplitude horaire la plus commune, du XX au XX de Xh à Xh\n lastDayOfWeek = dayjs().locale('fr').day(user.workingSchedules[user.workingSchedules.length - 1].idDay).format('dddd');\n resultHoraire += `Du ${firstDayOfWeek} au ${lastDayOfWeek} de ${startH}h${startM > 0 ? startM : ''} à ${endH}h${endM > 0 ? endM : ''}`;\n } else { // Fonctionnel si uniquement un jour par semaine avec des horaires différents\n resultHoraire += `<br/>Le ${firstDayOfWeek} de ${startH}h${startM > 0 ? startM : ''} à ${endH}h${endM > 0 ? endM : ''}`;\n }\n });\n return resultHoraire;\n}\n\nfunction getMailSignature(user:any, idTypeBrand:number) {\n const informatiqueMail = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listMails.informatique',\n }) as unknown as string;\n const bonjourMail = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listMails.bonjour',\n }) as unknown as string;\n\n if (user.roles.map((r: any) => r.id).includes(Role.ADMIN)) { return informatiqueMail; }\n if (user && !!intersection([user.roles.map((r: any) => r.id), [Role.FRONT_OFFICE, Role.FRONT_OFFICE_EXPRESS, Role.COMMERCIAL]]).length) return user.email;\n return bonjourMail;\n}\n\nfunction getPhoneSignature(user:any) {\n if (user.phone !== '0383931414') { return user.phone.replace(/\\B(?=(\\d{2})+(?!\\d))/g, ' '); }\n return false;\n}\n\nexport function generateSignature(params: any): string {\n const {\n forceRole = null, idTypeBrand = 1, ...otherParams\n } = params;\n let {\n user,\n } = otherParams;\n\n const hostS3 = getBrandConfig({\n idTypeBrand,\n objectWaited: 'urlS3',\n });\n\n const brandName = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'name',\n }) as unknown as string;\n const bonjourMail = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listMails.bonjour',\n }) as unknown as string;\n const socialMail = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listMails.social',\n }) as unknown as string;\n const supportMail = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listMails.support',\n }) as unknown as string;\n const juridiqueMail = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listMails.juridique',\n }) as unknown as string;\n const facturationMail = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listMails.facturation',\n }) as unknown as string;\n const primaryColor = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'colors.primary',\n }) as unknown as string;\n const standardPhoneSignature = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listPhones.contact',\n }) as unknown as string;\n const juridiquePhoneSignature = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listPhones.juridique',\n }) as unknown as string;\n const socialPhoneSignature = getBrandConfig({\n ...(idTypeBrand ? { idTypeBrand } : {}),\n objectWaited: 'listPhones.social',\n }) as unknown as string;\n\n let roleSignature: string | null;\n let mailSignature: string | null;\n let phoneSignature: string | boolean;\n let horaires: string | null;\n [roleSignature, mailSignature, phoneSignature, horaires] = ['Expert-Comptable', bonjourMail, false, 'Du lundi au vendredi de 9h à 19h'];\n\n if (!user) { // Signature Clementine\n user = {\n firstname: `L'équipe ${brandName}`,\n isAll: true,\n };\n roleSignature = '';\n } else if (forceRole === 'social') { // Signature social\n user = {\n firstname: 'Service social',\n isAll: true,\n };\n mailSignature = socialMail;\n roleSignature = '';\n phoneSignature = socialPhoneSignature;\n } else if (forceRole === 'support') { // Signature support\n user = {\n firstname: 'Service Support',\n isAll: true,\n };\n mailSignature = supportMail;\n roleSignature = null;\n } else if (forceRole === 'juridique') { // Signature juridique\n user = {\n firstname: 'Service juridique',\n isAll: true,\n };\n mailSignature = juridiqueMail;\n roleSignature = null;\n phoneSignature = juridiquePhoneSignature;\n } else if (forceRole === 'facturation') { // Signature facturation\n user = {\n firstname: 'Service facturation',\n isAll: true,\n };\n mailSignature = facturationMail;\n roleSignature = null;\n phoneSignature = standardPhoneSignature;\n } else if (user !== 0) { // Signature par défaut\n roleSignature = getRoleSignature(user);\n mailSignature = getMailSignature(user, idTypeBrand);\n horaires = getHoraires(user);\n phoneSignature = getPhoneSignature(user);\n }\n\n return ejs.render(signatureTemplate, {\n forceRole,\n brandName,\n hostS3,\n user,\n roleSignature,\n mailSignature,\n phoneSignature,\n standardPhoneSignature,\n horaires,\n primaryColor,\n supportMail,\n });\n}"]}
|
package/es/utils/index.d.ts
CHANGED
package/es/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
|
package/es/utils/index.js
CHANGED
package/es/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC","sourcesContent":["export * from './objectUtils';\nexport * from './stringUtils';\nexport * from './brands';\nexport * from './webmail';\nexport * from './decorators';\nexport * from './documents';\nexport * from './balanceSheetModule';\nexport * from './siretValidation';\nexport * from './prestation';\nexport * from './task';\nexport * from './social';\nexport * from './commercialManagement/document';\nexport * from './commercialManagement/recurrence';\nexport * from './amount';\nexport * from './quotation';"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC","sourcesContent":["export * from './objectUtils';\nexport * from './stringUtils';\nexport * from './brands';\nexport * from './webmail';\nexport * from './decorators';\nexport * from './documents';\nexport * from './balanceSheetModule';\nexport * from './siretValidation';\nexport * from './email';\nexport * from './prestation';\nexport * from './task';\nexport * from './social';\nexport * from './commercialManagement/document';\nexport * from './commercialManagement/recurrence';\nexport * from './amount';\nexport * from './quotation';"]}
|
|
@@ -7,13 +7,15 @@ exports.Employee = undefined;
|
|
|
7
7
|
|
|
8
8
|
var _lodash = require("lodash");
|
|
9
9
|
|
|
10
|
+
var _classValidator = require("class-validator");
|
|
11
|
+
|
|
10
12
|
var _Resource = require("../Resource");
|
|
11
13
|
|
|
12
14
|
class Employee extends _Resource.Resource {
|
|
13
15
|
create(payload) {
|
|
14
16
|
const formData = new FormData();
|
|
15
17
|
(0, _lodash.forEach)(payload, (value, key) => {
|
|
16
|
-
if (value) {
|
|
18
|
+
if ((0, _classValidator.isDefined)(value) || key === 'writeDpae') {
|
|
17
19
|
if (['dpaeFile', 'contractFile'].includes(key)) {
|
|
18
20
|
formData.append(key, value);
|
|
19
21
|
} else {
|
|
@@ -39,7 +41,7 @@ class Employee extends _Resource.Resource {
|
|
|
39
41
|
update(id, payload) {
|
|
40
42
|
const formData = new FormData();
|
|
41
43
|
(0, _lodash.forEach)(payload, (value, key) => {
|
|
42
|
-
if (value) {
|
|
44
|
+
if ((0, _classValidator.isDefined)(value) || key === 'writeDpae') {
|
|
43
45
|
if (['dpaeFile', 'contractFile'].includes(key)) {
|
|
44
46
|
formData.append(key, value);
|
|
45
47
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Employee.js","mappings":";;;;;;;AACA;;AAUA;;AAEM,MAAOA,QAAP,SAAwBC,kBAAxB,CAAgC;EAC7BC,MAAM,CAACC,OAAD,EAAiC;IAC5C,MAAMC,QAAQ,GAAG,IAAIC,QAAJ,EAAjB;IACA,qBAAQF,OAAR,EAAiB,CAACG,KAAD,EAAQC,GAAR,KAAe;MAC9B,
|
|
1
|
+
{"version":3,"file":"Employee.js","mappings":";;;;;;;AACA;;AACA;;AAUA;;AAEM,MAAOA,QAAP,SAAwBC,kBAAxB,CAAgC;EAC7BC,MAAM,CAACC,OAAD,EAAiC;IAC5C,MAAMC,QAAQ,GAAG,IAAIC,QAAJ,EAAjB;IACA,qBAAQF,OAAR,EAAiB,CAACG,KAAD,EAAQC,GAAR,KAAe;MAC9B,IAAI,+BAAUD,KAAV,KAAoBC,GAAG,KAAK,WAAhC,EAA6C;QAC3C,IAAI,CAAC,UAAD,EAAa,cAAb,EAA6BC,QAA7B,CAAsCD,GAAtC,CAAJ,EAAgD;UAC9CH,QAAQ,CAACK,MAAT,CAAgBF,GAAhB,EAAqBD,KAArB;QACD,CAFD,MAEO;UACLF,QAAQ,CAACK,MAAT,CAAgBF,GAAhB,EAAqB,GAAGD,KAAK,EAA7B;QACD;MACF;IACF,CARD;IASA,OAAO,KAAKI,KAAL,CAAWC,KAAX,CAAiB,YAAjB,EAA+BP,QAA/B,EAAyC;MAC9CQ,OAAO,EAAE;QAAE,gBAAgB;MAAlB;IADqC,CAAzC,CAAP;EAGD;;EAEMC,MAAM,CAACC,SAAD,EAAkB;IAC7B,OAAO,KAAKJ,KAAL,CAAWK,IAAX,CAAgB,cAAcD,SAAS,YAAvC,CAAP;EACD;;EAEME,GAAG,CAACC,EAAD,EAAW;IACnB,OAAO,KAAKP,KAAL,CAAWK,IAAX,CAAgB,cAAcE,EAAE,EAAhC,CAAP;EACD;;EAEMC,MAAM,CACXD,EADW,EAEXd,OAFW,EAEqB;IAEhC,MAAMC,QAAQ,GAAG,IAAIC,QAAJ,EAAjB;IACA,qBAAQF,OAAR,EAAiB,CAACG,KAAD,EAAQC,GAAR,KAAe;MAC9B,IAAI,+BAAUD,KAAV,KAAoBC,GAAG,KAAK,WAAhC,EAA6C;QAC3C,IAAI,CAAC,UAAD,EAAa,cAAb,EAA6BC,QAA7B,CAAsCD,GAAtC,CAAJ,EAAgD;UAC9CH,QAAQ,CAACK,MAAT,CAAgBF,GAAhB,EAAqBD,KAArB;QACD,CAFD,MAEO;UACLF,QAAQ,CAACK,MAAT,CAAgBF,GAAhB,EAAqB,GAAGD,KAAK,EAA7B;QACD;MACF;IACF,CARD;IASA,OAAO,KAAKI,KAAL,CAAWS,IAAX,CAAgB,cAAcF,EAAE,EAAhC,EAAoCb,QAApC,EAA8C;MACnDQ,OAAO,EAAE;QAAE,gBAAgB;MAAlB;IAD0C,CAA9C,CAAP;EAGD;;EAEMQ,MAAM,CAACH,EAAD,EAAW;IACtB,OAAO,KAAKP,KAAL,CAAWW,OAAX,CAAmB,cAAcJ,EAAE,EAAnC,CAAP;EACD;;EAEMK,WAAW,CAChBR,SADgB,EAEhBS,MAFgB,EAGhBC,WAHgB,EAGS;IAEzB,OAAO,KAAKd,KAAL,CAAWK,IAAX,CAAgB,cAAcD,SAAS,YAAvC,EAAmDW,gCACpDD,WAAW,GAAG;MAAEA;IAAF,CAAH,GAAqB,EADoB,GACjB;MACvCD,MAAM,kCAAOA,MAAP,GAAa;QAAEG,UAAU,EAAE;MAAd,CAAb;IADiC,CADiB,CAAnD,CAAP;EAID;;EAEMC,6BAA6B,CAClCC,UADkC,EAElCzB,OAFkC,EAEK;IAEvC,OAAO,KAAKO,KAAL,CAAWC,KAAX,CACL,aAAaiB,UAAU,oBADlB,EAELzB,OAFK,CAAP;EAID;;EAEM0B,qBAAqB,CAC1BD,UAD0B,EAE1BE,iBAF0B,EAED;IAEzB,OAAO,KAAKpB,KAAL,CAAWW,OAAX,CACL,aAAaO,UAAU,sBAAsBE,iBAAiB,EADzD,CAAP;EAGD;;AA5EmC;;QAAzB9B,Q,GAAAA,Q","names":["Employee","Resource","create","payload","formData","FormData","value","key","includes","append","axios","$post","headers","getAll","idSociety","$get","get","id","update","$put","delete","$delete","getPaginate","params","cancelToken","Object","isPaginate","updateOrCreateWorkingSchedule","idEmployee","deleteWorkingSchedule","idWorkingSchedule"],"sourceRoot":"","sources":["../../../ts/api/resources/Employee.ts"],"sourcesContent":["import { CancelToken } from 'axios';\nimport { forEach } from 'lodash';\nimport { isDefined } from 'class-validator';\nimport {\n BasePaginate,\n IEmployee,\n IWorkingSchedule,\n CreateEmployee,\n QueryEmployeeSearch,\n UpdateEmployee,\n UpdateOrCreateWorkingSchedule,\n} from '../../types';\nimport { Resource } from '../Resource';\n\nexport class Employee extends Resource {\n public create(payload: Partial<CreateEmployee>): Promise<IEmployee> {\n const formData = new FormData();\n forEach(payload, (value, key) => {\n if (isDefined(value) || key === 'writeDpae') {\n if (['dpaeFile', 'contractFile'].includes(key)) {\n formData.append(key, value as File);\n } else {\n formData.append(key, `${value}`);\n }\n }\n });\n return this.axios.$post('/employees', formData, {\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n }\n\n public getAll(idSociety: number): Promise<IEmployee[]> {\n return this.axios.$get(`/societies/${idSociety}/employees`);\n }\n\n public get(id: number): Promise<IEmployee> {\n return this.axios.$get(`/employees/${id}`);\n }\n\n public update(\n id: number,\n payload: Partial<UpdateEmployee>,\n ): Promise<IEmployee> {\n const formData = new FormData();\n forEach(payload, (value, key) => {\n if (isDefined(value) || key === 'writeDpae') {\n if (['dpaeFile', 'contractFile'].includes(key)) {\n formData.append(key, value as File);\n } else {\n formData.append(key, `${value}`);\n }\n }\n });\n return this.axios.$put(`/employees/${id}`, formData, {\n headers: { 'Content-Type': 'multipart/form-data' },\n });\n }\n\n public delete(id: number): Promise<true> {\n return this.axios.$delete(`/employees/${id}`);\n }\n\n public getPaginate(\n idSociety: number,\n params?: QueryEmployeeSearch,\n cancelToken?: CancelToken,\n ): Promise<BasePaginate<Employee>> {\n return this.axios.$get(`/societies/${idSociety}/employees`, {\n ...(cancelToken ? { cancelToken } : {}),\n params: { ...params, isPaginate: true },\n });\n }\n\n public updateOrCreateWorkingSchedule(\n idEmployee: number,\n payload?: UpdateOrCreateWorkingSchedule,\n ): Promise<IWorkingSchedule> {\n return this.axios.$post(\n `employees/${idEmployee}/working-schedules`,\n payload,\n );\n }\n\n public deleteWorkingSchedule(\n idEmployee: number,\n idWorkingSchedule: number,\n ): Promise<true> {\n return this.axios.$delete(\n `employees/${idEmployee}/working-schedules/${idWorkingSchedule}`,\n );\n }\n}\n"]}
|
package/js/api/resources/Mail.js
CHANGED