diff --git a/klice.go b/klice.go index e309f71..41c33a4 100644 --- a/klice.go +++ b/klice.go @@ -206,6 +206,7 @@ func qrHandler(w http.ResponseWriter, r *http.Request) { FinalClue: "", Coordinates: "", Solution: "", + Wrong: false, } // get penalties for this task and team @@ -238,6 +239,20 @@ func qrHandler(w http.ResponseWriter, r *http.Request) { db.Exec("UPDATE penalties SET minutes = 30 WHERE team_id = ? AND task_id = ?", teamID, taskID) db.Exec("UPDATE teams SET penalty = penalty + 30 WHERE id = ?", teamID) db.Exec("UPDATE teams SET last_cipher = ? WHERE id = ?", order+1, teamID) + } else if answer := r.FormValue("solution"); answer != "" { // answer submission + var correctAnswer string + err = db.QueryRow("SELECT solution FROM CIPHERS WHERE id = ?", cipherID).Scan(&correctAnswer) + if err != nil { + http.Error(w, "Could not retrieve solution", http.StatusInternalServerError) + return + } + if strings.EqualFold(strings.TrimSpace(answer), strings.TrimSpace(correctAnswer)) { + // correct answer, move to next task + db.Exec("UPDATE teams SET last_cipher = ? WHERE id = ?", order+1, teamID) + help = 2 + } else { + CipherTemplateData.Wrong = true + } } } diff --git a/templates.go b/templates.go index 84161bd..c3a1b7b 100644 --- a/templates.go +++ b/templates.go @@ -12,6 +12,7 @@ type CipherTemplateS struct { Coordinates string Solution string Help int + Wrong bool } var CipherTemplate = template.Must(template.ParseFiles("templates/assignment.html")) diff --git a/templates/assignment.html b/templates/assignment.html index c0db094..c79d6df 100644 --- a/templates/assignment.html +++ b/templates/assignment.html @@ -27,8 +27,9 @@ {{end}}
Špatné řešení, zkus to znovu.
{{end}} {{else}}