From b7e69504076f5ce6687d2a49c4fc86c12286aa7b Mon Sep 17 00:00:00 2001 From: Alexis POYEN <punkylibre@localhost.localdomain> Date: Wed, 17 Jun 2020 10:35:11 +0200 Subject: [PATCH] Feat : post votes --- web/components/vote/votes.js | 60 +++++++++++++++++++++++++++++++- web/services/model/vote-model.js | 4 +-- 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/web/components/vote/votes.js b/web/components/vote/votes.js index f1a63df..ed5c48d 100644 --- a/web/components/vote/votes.js +++ b/web/components/vote/votes.js @@ -101,6 +101,11 @@ class Vote { .addEventListener("click", function () { voteHandler.loadVotes(); }); + document + .getElementById(`votes-save`) + .addEventListener("click", function () { + voteHandler.saveVotes(); + }); } async refreshBreadCrumb() { @@ -156,7 +161,10 @@ class Vote { }); let candidateLists = await this.CandidateListModel.getCandidateLists(); candidateLists = candidateLists.filter((candidateList) => { - return candidateList.AreaID == voteHandler.AreaID; + return ( + candidateList.AreaID == voteHandler.AreaID && + candidateList.RoundID == voteHandler.RoundID + ); }); const markup = candidateLists @@ -195,4 +203,54 @@ class Vote { } }); } + + async saveVotes() { + let voteHandler = this; + let candidateLists = await this.CandidateListModel.getCandidateLists(); + candidateLists = candidateLists.filter((candidateList) => { + return ( + candidateList.AreaID == voteHandler.AreaID && + candidateList.RoundID == voteHandler.RoundID + ); + }); + + let votes = await this.VoteModel.getVotes(); + votes = votes.filter((vote) => { + return vote.DeskRoundID == voteHandler.DeskRoundID; + }); + + let method; + if (votes.length == 0) method = "POST"; + else method = "PUT"; + + candidateLists.forEach((candidateList) => { + voteHandler.VoteModel.saveVote( + method, + voteHandler.DeskRoundID, + candidateList.ID, + parseInt( + document.getElementById(candidateList.ID + "-vote-voice").value + ), + false, + false + ); + }); + + this.VoteModel.saveVote( + method, + this.DeskRoundID, + null, + parseInt(document.getElementById("blank-vote-voice").value), + true, + false + ); + this.VoteModel.saveVote( + method, + this.DeskRoundID, + null, + parseInt(document.getElementById("null-vote-voice").value), + false, + true + ); + } } diff --git a/web/services/model/vote-model.js b/web/services/model/vote-model.js index ff95c02..cffb361 100644 --- a/web/services/model/vote-model.js +++ b/web/services/model/vote-model.js @@ -46,7 +46,6 @@ class VoteModel { async saveVote( method, - ID, DeskRoundID, CandidateListID, VoiceNumber, @@ -54,13 +53,12 @@ class VoteModel { NullVote ) { try { - const response = await fetch("/api/Vote/" + ID, { + const response = await fetch("/api/Vote/", { method: method, headers: new Headers({ "XSRF-Token": this.current_user.xsrftoken, }), body: JSON.stringify({ - ID: ID, DeskRoundID: DeskRoundID, CandidateListID: CandidateListID, VoiceNumber: VoiceNumber, -- GitLab