@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.
Files changed (62) hide show
  1. package/es/api/resources/Employee.d.ts.map +1 -1
  2. package/es/api/resources/Employee.js +3 -2
  3. package/es/api/resources/Employee.js.map +1 -1
  4. package/es/api/resources/Mail.d.ts +2 -1
  5. package/es/api/resources/Mail.d.ts.map +1 -1
  6. package/es/api/resources/Mail.js +3 -0
  7. package/es/api/resources/Mail.js.map +1 -1
  8. package/es/types/Enum/MailAuto.d.ts +0 -6
  9. package/es/types/Enum/MailAuto.d.ts.map +1 -1
  10. package/es/types/Enum/MailAuto.js +0 -6
  11. package/es/types/Enum/MailAuto.js.map +1 -1
  12. package/es/types/Interface/api/mail/QueryGetSignature.d.ts +6 -0
  13. package/es/types/Interface/api/mail/QueryGetSignature.d.ts.map +1 -0
  14. package/es/types/Interface/api/mail/QueryGetSignature.js +32 -0
  15. package/es/types/Interface/api/mail/QueryGetSignature.js.map +1 -0
  16. package/es/types/index.d.ts +1 -0
  17. package/es/types/index.d.ts.map +1 -1
  18. package/es/types/index.js +1 -0
  19. package/es/types/index.js.map +1 -1
  20. package/es/utils/commercialManagement/templates/body.d.ts.map +1 -1
  21. package/es/utils/commercialManagement/templates/body.js +2 -1
  22. package/es/utils/commercialManagement/templates/body.js.map +1 -1
  23. package/es/utils/email/templates/signature.d.ts +2 -0
  24. package/es/utils/email/templates/signature.d.ts.map +1 -0
  25. package/es/utils/email/templates/signature.js +196 -0
  26. package/es/utils/email/templates/signature.js.map +1 -0
  27. package/es/utils/email.d.ts +2 -0
  28. package/es/utils/email.d.ts.map +1 -0
  29. package/es/utils/email.js +223 -0
  30. package/es/utils/email.js.map +1 -0
  31. package/es/utils/index.d.ts +1 -0
  32. package/es/utils/index.d.ts.map +1 -1
  33. package/es/utils/index.js +1 -0
  34. package/es/utils/index.js.map +1 -1
  35. package/js/api/resources/Employee.js +4 -2
  36. package/js/api/resources/Employee.js.map +1 -1
  37. package/js/api/resources/Mail.js +6 -0
  38. package/js/api/resources/Mail.js.map +1 -1
  39. package/js/types/Enum/MailAuto.js +0 -6
  40. package/js/types/Enum/MailAuto.js.map +1 -1
  41. package/js/types/Interface/api/mail/QueryGetSignature.js +33 -0
  42. package/js/types/Interface/api/mail/QueryGetSignature.js.map +1 -0
  43. package/js/types/index.js +12 -0
  44. package/js/types/index.js.map +1 -1
  45. package/js/utils/commercialManagement/templates/body.js +2 -1
  46. package/js/utils/commercialManagement/templates/body.js.map +1 -1
  47. package/js/utils/email/templates/signature.js +201 -0
  48. package/js/utils/email/templates/signature.js.map +1 -0
  49. package/js/utils/email.js +317 -0
  50. package/js/utils/email.js.map +1 -0
  51. package/js/utils/index.js +12 -0
  52. package/js/utils/index.js.map +1 -1
  53. package/package.json +1 -1
  54. package/ts/api/resources/Employee.ts +3 -2
  55. package/ts/api/resources/Mail.ts +5 -0
  56. package/ts/types/Enum/MailAuto.ts +0 -6
  57. package/ts/types/Interface/api/mail/QueryGetSignature.ts +21 -0
  58. package/ts/types/index.ts +1 -0
  59. package/ts/utils/commercialManagement/templates/body.ts +2 -1
  60. package/ts/utils/email/templates/signature.ts +198 -0
  61. package/ts/utils/email.ts +230 -0
  62. 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,2 @@
1
+ export declare function generateSignature(params: any): string;
2
+ //# sourceMappingURL=email.d.ts.map
@@ -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, '&nbsp;');
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, '&nbsp;'); }\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}"]}
@@ -6,6 +6,7 @@ export * from './decorators';
6
6
  export * from './documents';
7
7
  export * from './balanceSheetModule';
8
8
  export * from './siretValidation';
9
+ export * from './email';
9
10
  export * from './prestation';
10
11
  export * from './task';
11
12
  export * from './social';
@@ -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
@@ -6,6 +6,7 @@ export * from './decorators';
6
6
  export * from './documents';
7
7
  export * from './balanceSheetModule';
8
8
  export * from './siretValidation';
9
+ export * from './email';
9
10
  export * from './prestation';
10
11
  export * from './task';
11
12
  export * from './social';
@@ -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,IAAID,KAAJ,EAAW;QACT,IAAI,CAAC,UAAD,EAAa,cAAb,EAA6BE,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,IAAID,KAAJ,EAAW;QACT,IAAI,CAAC,UAAD,EAAa,cAAb,EAA6BE,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 {\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 (value) {\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 (value) {\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"]}
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"]}
@@ -226,6 +226,12 @@ class Mail extends _Resource.Resource {
226
226
  });
227
227
  }
228
228
 
229
+ getUserSignature(idUser, params) {
230
+ return this.axios.$get(`/mails/${idUser}/signature`, {
231
+ params
232
+ });
233
+ }
234
+
229
235
  }
230
236
 
231
237
  exports.Mail = Mail;