diff --git a/controllers/addOfficeHourHandlers.go b/controllers/addOfficeHourHandlers.go index 089abcd..dcbcb27 100644 --- a/controllers/addOfficeHourHandlers.go +++ b/controllers/addOfficeHourHandlers.go @@ -155,7 +155,7 @@ func (b *BaseHandler) AddOfficeHourHandler(w http.ResponseWriter, req *http.Requ } officeHour, _ = b.officeHourRepo.FindById(id) b.requestRepo.Add(officeHour, models.RequestActivate) - tmpl, _ := template.ParseFiles("template/addSuccess.html") + tmpl, err := template.ParseFiles("templates/addSuccess.html") tmpl.Execute(w, struct{}{}) } } diff --git a/controllers/deleteOfficeHourHandler.go b/controllers/deleteOfficeHourHandler.go new file mode 100644 index 0000000..e0d29ae --- /dev/null +++ b/controllers/deleteOfficeHourHandler.go @@ -0,0 +1,29 @@ +// deleteOfficeHourHandler +package controllers + +import ( + "html/template" + "net/http" + "sprechstundentool/models" + "strconv" +) + +func (b *BaseHandler) DeleteOfficeHourHandler(w http.ResponseWriter, req *http.Request) { + if req.FormValue("id") != "" { + id, err := strconv.Atoi(req.FormValue("id")) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + } + officeHour, err := b.officeHourRepo.FindById(id) + if err != nil { + w.WriteHeader(http.StatusBadRequest) + } + _, err = b.requestRepo.Add(officeHour, models.RequestDelete) + tmpl, _ := template.New("deleteSuccess.html").ParseFiles("templates/deleteSuccess.html") + tmpl.Execute(w, struct{}{}) + } else { + officeHours, _ := b.officeHourRepo.GetAll(true) + timetable, slots := GetTimetable(officeHours) + b.writeTimetablePage(w, req, printTimetable(timetable, slots, true)) + } +} diff --git a/controllers/getHandlers.go b/controllers/getHandlers.go index 6ca0560..4aa4359 100644 --- a/controllers/getHandlers.go +++ b/controllers/getHandlers.go @@ -20,7 +20,8 @@ func (b *BaseHandler) GetByRoomHandler(w http.ResponseWriter, req *http.Request) return } officeHours, _ := b.officeHourRepo.FindByRoom(room, true) - b.writeTimetablePage(w, req, printTimetable(GetTimetable(officeHours))) + timetable, slots := GetTimetable(officeHours) + b.writeTimetablePage(w, req, printTimetable(timetable, slots, false)) } func (b *BaseHandler) GetByCourseHandler(w http.ResponseWriter, req *http.Request) { @@ -34,7 +35,8 @@ func (b *BaseHandler) GetByCourseHandler(w http.ResponseWriter, req *http.Reques return } officeHours, _ := b.officeHourRepo.FindByCourse(course, true) - b.writeTimetablePage(w, req, printTimetable(GetTimetable(officeHours))) + timetable, slots := GetTimetable(officeHours) + b.writeTimetablePage(w, req, printTimetable(timetable, slots, false)) } func (b *BaseHandler) writeTimetablePage(w http.ResponseWriter, req *http.Request, timetable template.HTML) { diff --git a/controllers/timetable.go b/controllers/timetable.go index bb044e7..37a0da6 100644 --- a/controllers/timetable.go +++ b/controllers/timetable.go @@ -47,10 +47,13 @@ func GetTimetable(officeHours []models.OfficeHour) (timetable map[models.Date]ma return fullTimetable, slots } -func printTimetable(timetable map[models.Date]map[int]models.OfficeHour, slots []int) template.HTML { +func printTimetable(timetable map[models.Date]map[int]models.OfficeHour, slots []int, deleteIcons bool) template.HTML { var tableBody string - tableCell, _ := template.ParseFiles("templates/td.html") + tableCell, _ := template.New("td.html"). + Funcs(template.FuncMap{"mod": func(i int, j int) int { return i % j }, + "add": func(i int, j int) int { return i + j }, + "divide": func(i int, j int) int { return i / j }}).ParseFiles("templates/td.html") for hour := 8; hour < 19; hour += 1 { for minute := 0; minute < 60; minute += models.MinuteGranularity { tableBody += "