Skip to content
Snippets Groups Projects

Resolve "Capture votes"

Merged Alexis POYEN requested to merge 47-capture-votes into master
7 files
+ 413
22
Compare changes
  • Side-by-side
  • Inline
Files
7
+ 30
11
@@ -35,7 +35,7 @@ func (d *DataHandler) handleVote(w http.ResponseWriter, r *http.Request) {
case "PUT":
switch auth.GetLoggedUserTechnical(w, r).Role {
case "ADMIN", "CAPTURER":
d.putVote(w, r, id)
d.putVote(w, r)
case "VISUALIZER":
http.Error(w, ErrorNotAuthorizeMethodOnRessource, http.StatusMethodNotAllowed)
default:
@@ -112,23 +112,32 @@ func (d *DataHandler) postVote(w http.ResponseWriter, r *http.Request) {
}
func (d *DataHandler) putVote(w http.ResponseWriter, r *http.Request, id int) {
var o Vote
if err := d.db.First(&o, id).Error; err != nil {
http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
return
}
func (d *DataHandler) putVote(w http.ResponseWriter, r *http.Request) {
var vote Vote
err := json.NewDecoder(r.Body).Decode(&vote)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// check that objects are the same
if o.CandidateListID != vote.CandidateListID || o.DeskRoundID != vote.DeskRoundID {
http.Error(w, "Les objets ne correspondent pas", http.StatusInternalServerError)
return
var o Vote
if vote.Blank {
if err := d.db.Where("blank = true and desk_round_id = ?", vote.DeskRoundID).Find(&o).Error; err != nil {
http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
return
}
} else if vote.NullVote {
if err := d.db.Where("null_vote = true and desk_round_id = ?", vote.DeskRoundID).Find(&o).Error; err != nil {
http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
return
}
} else {
if err := d.db.Where("candidate_list_id = ? and desk_round_id = ?", vote.CandidateListID, vote.DeskRoundID).Find(&o).Error; err != nil {
http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
return
}
}
o.VoiceNumber = vote.VoiceNumber
d.db.Save(&o)
json.NewEncoder(w).Encode(o)
@@ -143,6 +152,16 @@ func (d *DataHandler) deleteVote(w http.ResponseWriter, r *http.Request, id int)
return
}
d.db.Delete(&o)
// Set completed to false for deskRound
var deskRound DeskRound
if err := d.db.First(&deskRound, o.DeskRoundID).Error; err != nil {
http.Error(w, ErrorParentNotFound, http.StatusNotFound)
return
}
deskRound.Completed = false
d.db.Save(&deskRound)
} else {
http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
}
Loading