From 51cf3ab12fc54c0b7de2555a294e2e495c3f7b87 Mon Sep 17 00:00:00 2001
From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com>
Date: Wed, 31 Mar 2021 15:48:21 +0200
Subject: [PATCH] fix: add admin mail sending fo new structures

---
 src/configuration/config.ts                   |  4 ++++
 .../mail-templates/adminStructureCreate.ejs   |  3 +++
 .../mail-templates/adminStructureCreate.json  |  3 +++
 src/structures/services/structures.service.ts |  3 +++
 src/users/users.service.ts                    | 24 +++++++++++++++----
 5 files changed, 33 insertions(+), 4 deletions(-)
 create mode 100644 src/mailer/mail-templates/adminStructureCreate.ejs
 create mode 100644 src/mailer/mail-templates/adminStructureCreate.json

diff --git a/src/configuration/config.ts b/src/configuration/config.ts
index e9d940409..3d6969e35 100644
--- a/src/configuration/config.ts
+++ b/src/configuration/config.ts
@@ -45,5 +45,9 @@ export const config = {
       ejs: 'structureJoinRequest.ejs',
       json: 'structureJoinRequest.json',
     },
+    adminStructureCreate: {
+      ejs: 'adminStructureCreate.ejs',
+      json: 'adminStructureCreate.json',
+    },
   },
 };
diff --git a/src/mailer/mail-templates/adminStructureCreate.ejs b/src/mailer/mail-templates/adminStructureCreate.ejs
new file mode 100644
index 000000000..41d58470f
--- /dev/null
+++ b/src/mailer/mail-templates/adminStructureCreate.ejs
@@ -0,0 +1,3 @@
+Bonjour<br />
+<br />
+Une nouvelle structure a été créé: <strong><%= name %></strong>.
diff --git a/src/mailer/mail-templates/adminStructureCreate.json b/src/mailer/mail-templates/adminStructureCreate.json
new file mode 100644
index 000000000..6411161d6
--- /dev/null
+++ b/src/mailer/mail-templates/adminStructureCreate.json
@@ -0,0 +1,3 @@
+{
+  "subject": "Nouvelle structure"
+}
diff --git a/src/structures/services/structures.service.ts b/src/structures/services/structures.service.ts
index ac2e32d26..5f1f1fec7 100644
--- a/src/structures/services/structures.service.ts
+++ b/src/structures/services/structures.service.ts
@@ -40,6 +40,9 @@ export class StructuresService {
     user.structuresLink.push(createdStructure._id);
     user.save();
 
+    // Senc admin notification mail
+    this.userService.sendAdminNewStructureMail(createdStructure.structureName);
+
     return createdStructure;
   }
 
diff --git a/src/users/users.service.ts b/src/users/users.service.ts
index 3086c0c10..e4a081cb3 100644
--- a/src/users/users.service.ts
+++ b/src/users/users.service.ts
@@ -140,7 +140,7 @@ export class UsersService {
 
   /**
    * Send to all admins validation email for structures
-   * a new account.
+   * new account.
    */
   private async sendAdminStructureValidationMail(): Promise<any> {
     const config = this.mailerService.config;
@@ -156,6 +156,24 @@ export class UsersService {
     });
   }
 
+  /**
+   * Send to all admins notification email for new structures
+   */
+  public async sendAdminNewStructureMail(structureName: string): Promise<any> {
+    const config = this.mailerService.config;
+    const ejsPath = this.mailerService.getTemplateLocation(config.templates.adminStructureCreate.ejs);
+    const jsonConfig = this.mailerService.loadJsonConfig(config.templates.adminStructureCreate.json);
+
+    const html = await ejs.renderFile(ejsPath, {
+      config,
+      name: structureName,
+    });
+    const admins = await this.getAdmins();
+    admins.forEach((admin) => {
+      this.mailerService.send(admin.email, jsonConfig.subject, html);
+    });
+  }
+
   /**
    * Send to all admins mail for aptic duplicated data
    */
@@ -509,8 +527,6 @@ export class UsersService {
   }
 
   public async searchUsers(searchString: string) {
-    return this.userModel
-    .find( {email: new RegExp(searchString, 'i') })
-    .exec();
+    return this.userModel.find({ email: new RegExp(searchString, 'i') }).exec();
   }
 }
-- 
GitLab