package server import ( "fmt" "html/template" "io" "log" "net/http" "os" "streifling.com/jason/sicherheitsunterweisung/packages/db" "streifling.com/jason/sicherheitsunterweisung/packages/types" ) func DisplayTable(db *db.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { bs, err := db.ReadAll() if err != nil { _ = fmt.Errorf("DisplayTable: %v\n", err) return } template.Must(template.ParseFiles("templates/index.html", "templates/table.html")).Execute(w, bs) } } func DisplayResults(db *db.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { bs, err := db.ReadByName(r.PostFormValue("search")) if err != nil { _ = fmt.Errorf("DisplayResults: db.ReadByName(r.PostFormValue()): %v\n", err) return } template.Must(template.ParseFiles("templates/table.html")).ExecuteTemplate(w, "rows", bs) } } func DisplayForm(i *int64) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { template.Must(template.ParseFiles("templates/form.html")).ExecuteTemplate(w, "content", i) } } func AddParticipant(i *int64) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { *i++ template.Must(template.ParseFiles("templates/form.html")).ExecuteTemplate(w, "participant", i) } } func SubmitForm(db *db.DB, i, j *int64) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { b := new(types.Briefing) b.FirstName = r.PostFormValue("instructor-first") b.LastName = r.PostFormValue("instructor-last") b.Date = r.PostFormValue("date") b.Time = r.PostFormValue("time") b.State = r.PostFormValue("state") b.Location = r.PostFormValue("location") for ; *j <= *i; *j++ { b.Participants = append(b.Participants, types.Participant{ ID: *j, Person: types.Person{ FirstName: r.PostFormValue("participant-first-" + fmt.Sprint(*j)), LastName: r.PostFormValue(("participant-last-" + fmt.Sprint(*j))), }, Company: r.PostFormValue(("participant-company-" + fmt.Sprint(*j))), }) } log.Println(b) db.WriteBriefing(b) bs, err := db.ReadAll() if err != nil { _ = fmt.Errorf("SubmitForm: db.ReadAll(): %v\n", err) return } template.Must(template.ParseFiles("templates/index.html", "templates/table.html")).Execute(w, bs) } } func Upload(db *db.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { r.ParseMultipartForm(10 << 20) // 10 MiB tmpFile, handler, err := r.FormFile("questionaire") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } defer tmpFile.Close() file, err := os.Create(handler.Filename) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } defer file.Close() if _, err := io.Copy(file, tmpFile); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } } }