61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"html/template"
|
|
"log"
|
|
"net/http"
|
|
|
|
"streifling.com/jason/sicherheitsunterweisung/packages/data"
|
|
"streifling.com/jason/sicherheitsunterweisung/packages/server"
|
|
"streifling.com/jason/sicherheitsunterweisung/packages/types"
|
|
)
|
|
|
|
func waitForParticipants(sb []*types.Briefing, sp []*types.Participant, cp <-chan *types.Participant, m *http.ServeMux) {
|
|
for p := range cp {
|
|
p.Questions = data.InitQuestions()
|
|
sp = append(sp, p)
|
|
|
|
var i int
|
|
for i = range p.Questions {
|
|
m.HandleFunc("/display-question-"+fmt.Sprintf("%d", p.ID)+"-"+fmt.Sprintf("%d", i)+"/", server.DisplayQuestion(i, p))
|
|
}
|
|
m.HandleFunc("/display-question-"+fmt.Sprintf("%d", p.ID)+"-"+fmt.Sprintf("%d", i+1)+"/", server.DisplayTestResults(sb, p))
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
logins := make([]string, 0)
|
|
participants := make([]*types.Participant, 0)
|
|
briefings := make([]*types.Briefing, 0)
|
|
mux := http.NewServeMux()
|
|
|
|
db, err := data.OpenDB("sicherheitsunterweisung")
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
var i, j int64
|
|
if err := db.GetLastID(&i); err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
j = i
|
|
|
|
participantChan := make(chan *types.Participant)
|
|
defer close(participantChan)
|
|
go waitForParticipants(briefings, participants, participantChan, mux)
|
|
|
|
mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static/"))))
|
|
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
template.Must(template.ParseFiles("templates/index.html", "templates/login.html")).Execute(w, nil)
|
|
})
|
|
mux.HandleFunc("/search/", server.DisplaySearchResults(db))
|
|
mux.HandleFunc("/new-briefing/", server.DisplayForm(&i))
|
|
mux.HandleFunc("/add-participant/", server.AddParticipant(&i, &logins))
|
|
mux.HandleFunc("/submit-form/", server.SubmitForm(db, &i, &j))
|
|
mux.HandleFunc("/internal-login/", server.DisplayTable(db))
|
|
mux.HandleFunc("/external-login/", server.DisplayParticipantForm(&logins, participantChan))
|
|
|
|
log.Fatalln(http.ListenAndServe(":8080", mux))
|
|
}
|