Search Apps Documentation Source Content File Folder Download Copy Actions Download

submit.gno

0.83 Kb ยท 40 lines
 1package forms
 2
 3import (
 4	"chain/runtime"
 5	"time"
 6)
 7
 8// This function allows to submit a form
 9func (db *FormDB) SubmitForm(formID string, answers string) {
10	// Check if form exists
11	form, err := db.GetForm(formID)
12	if err != nil {
13		panic(err)
14	}
15
16	// Check if form was already submitted by this user
17	previousAnswer, err := db.GetAnswer(formID, runtime.CurrentRealm().Address())
18	if previousAnswer != nil {
19		panic(errAlreadySubmitted)
20	}
21
22	// Check time restrictions
23	if !form.IsOpen() {
24		panic(errFormClosed)
25	}
26
27	// Check if answers are formatted correctly
28	if ValidateAnswers(answers, form.Fields) == false {
29		panic(errInvalidAnswers)
30	}
31
32	// Save answers
33	answer := Submission{
34		FormID:      formID,
35		Answers:     answers,
36		Author:      runtime.CurrentRealm().Address(),
37		SubmittedAt: time.Now(),
38	}
39	db.Answers = append(db.Answers, &answer)
40}