diff --git a/main.go b/main.go index 4441a97..39a1f9e 100644 --- a/main.go +++ b/main.go @@ -322,7 +322,22 @@ func trainingListHandler(w http.ResponseWriter, r *http.Request) { return } - err = tmpl.ExecuteTemplate(w, "training_list.html", trainings) + trainers, err := fetchTrainers() + if err != nil { + log.Printf("Error fetching trainers: %v", err) + http.Error(w, "Database error", http.StatusInternalServerError) + return + } + + data := struct { + Trainings []Training + Trainers []Trainer + }{ + Trainings: trainings, + Trainers: trainers, + } + + err = tmpl.ExecuteTemplate(w, "training_list.html", data) if err != nil { log.Printf("Error in templating page training_list.html: %v", err) http.Error(w, fmt.Sprintf("Error in templating page %v", err), http.StatusInternalServerError) @@ -608,11 +623,39 @@ func addTrainingHandler(w http.ResponseWriter, r *http.Request) { } } +func assignTrainerHandler(w http.ResponseWriter, r *http.Request) { + log.Println("Handling trainer assignment to training") + if r.Method != http.MethodPost { + http.Error(w, "Invalid request method", http.StatusMethodNotAllowed) + return + } + + trainingID := r.FormValue("training_id") + trainerID := r.FormValue("trainer_id") + + if trainingID == "" || trainerID == "" { + log.Println("Missing training ID or trainer ID") + http.Error(w, "Training ID and Trainer ID are required", http.StatusBadRequest) + return + } + + _, err := db.Exec("INSERT OR IGNORE INTO training_trainers (training_id, trainer_id) VALUES (?, ?)", trainingID, trainerID) + if err != nil { + log.Printf("Error assigning trainer to training: %v", err) + http.Error(w, "Database error", http.StatusInternalServerError) + return + } + + log.Println("Trainer assigned to training successfully") + http.Redirect(w, r, "/trainings", http.StatusSeeOther) +} + func initServerHandlers() { http.Handle("/", redirectIfNoAdmin(http.HandlerFunc(homeHandler))) http.Handle("/trainings", redirectIfNoAdmin(http.HandlerFunc(trainingListHandler))) http.Handle("/trainings/add", redirectIfNoAdmin(http.HandlerFunc(addTrainingHandler))) + http.Handle("/trainings/assign_trainer", redirectIfNoAdmin(http.HandlerFunc(assignTrainerHandler))) http.Handle("/trainers", redirectIfNoAdmin(http.HandlerFunc(trainerListHandler))) http.Handle("/trainers/add", redirectIfNoAdmin(http.HandlerFunc(addTrainerHandler))) diff --git a/templates/training_list.html b/templates/training_list.html index 457889f..3c70006 100644 --- a/templates/training_list.html +++ b/templates/training_list.html @@ -2,7 +2,7 @@
| Title | @@ -12,10 +12,11 @@End | Status | Trainers | +Actions |
|---|---|---|---|---|
| {{.Title}} | {{.TrainingType}} | @@ -32,10 +33,59 @@ No trainers assigned {{end}} ++ + |