From 32ab162f99571f0ebc2f854e0319ac516fb546a1 Mon Sep 17 00:00:00 2001
From: Alexis POYEN <apoyen@grandlyon.com>
Date: Thu, 28 May 2020 14:41:33 +0200
Subject: [PATCH] Resolve "Prevent duplacated name of election"

---
 internal/models/election.go           | 10 ++++++++++
 web/components/management/election.js |  7 +++++++
 2 files changed, 17 insertions(+)

diff --git a/internal/models/election.go b/internal/models/election.go
index 970cfd4..e62a10a 100644
--- a/internal/models/election.go
+++ b/internal/models/election.go
@@ -74,6 +74,16 @@ func (d *DataHandler) postElection(w http.ResponseWriter, r *http.Request) {
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 		return
 	}
+
+	var elections []Election
+	d.db.Find(&elections)
+	for _, val := range elections {
+		if o.Name == val.Name {
+			http.Error(w, "Name Already exist.", 409)
+			return
+		}
+	}
+
 	d.db.Create(&o)
 	d.db.Last(&o)
 	json.NewEncoder(w).Encode(o)
diff --git a/web/components/management/election.js b/web/components/management/election.js
index a7b7f3e..ffbcb2a 100644
--- a/web/components/management/election.js
+++ b/web/components/management/election.js
@@ -256,6 +256,12 @@ class Election {
           }),
         }
       );
+      if (response.status == 409) {
+        throw new Error(
+          `The name of the election already exist (status ${response.status})`
+
+        );
+      }
       if (response.status !== 200) {
         throw new Error(
           `Election could not be updated or created (status ${response.status})`
@@ -266,6 +272,7 @@ class Election {
     } catch (e) {
       Messages.Show("is-warning", e.message);
       console.error(e);
+      return
     }
     Common.toggleModal("election-modal", "election-modal-card");
     this.activateElection(election);
-- 
GitLab