Sprechstunden löschen und Raumbeschränkungen beachten
This commit is contained in:
parent
2ce7a1fae1
commit
56b4a3ab34
7 changed files with 88 additions and 10 deletions
|
@ -91,6 +91,7 @@ func (b *BaseHandler) AddOfficeHourHandler(w http.ResponseWriter, req *http.Requ
|
|||
errors = append(errors, fmt.Sprintf("Sprechstunden dürfen nur alle %d Minuten starten.", models.MinuteGranularity))
|
||||
}
|
||||
}
|
||||
date := models.Date{week, day, hour, minute}
|
||||
duration, err := strconv.Atoi(req.FormValue("dauer"))
|
||||
if err != nil {
|
||||
errors = append(errors, "Die Dauer muss eine ganze Zahl sein.")
|
||||
|
@ -113,6 +114,13 @@ func (b *BaseHandler) AddOfficeHourHandler(w http.ResponseWriter, req *http.Requ
|
|||
}
|
||||
info := req.FormValue("info")
|
||||
|
||||
allowed, err := b.officeHourRepo.AllowedAt(date, duration, room, true)
|
||||
fmt.Println(allowed)
|
||||
if err != nil {
|
||||
errors = append(errors, fmt.Sprintf("Fehler beim Abfragen der Raumkapazität: %s", err.Error()))
|
||||
} else if !allowed {
|
||||
errors = append(errors, "In dem Raum muss noch Platz für weitere Sprechstunden sein.")
|
||||
}
|
||||
if len(errors) != 0 {
|
||||
var data maskData = maskData{
|
||||
courses,
|
||||
|
@ -135,7 +143,7 @@ func (b *BaseHandler) AddOfficeHourHandler(w http.ResponseWriter, req *http.Requ
|
|||
} else {
|
||||
officeHour := models.OfficeHour{0,
|
||||
models.Tutor{0, name, email.Address},
|
||||
models.Date{week, day, hour, minute},
|
||||
date,
|
||||
room,
|
||||
course,
|
||||
info,
|
||||
|
|
|
@ -13,20 +13,20 @@ func GetTimetable(officeHours []models.OfficeHour) (timetable map[models.Date]ma
|
|||
for _, officeHour := range officeHours {
|
||||
var slot int = 0
|
||||
for minute := 0; minute < officeHour.Duration; minute += models.MinuteGranularity { // find slot id
|
||||
_, exists := fullTimetable[models.Date{0, officeHour.Day, officeHour.Hour + (officeHour.Minute+minute)/60, (officeHour.Minute + minute) % 60}]
|
||||
_, exists := fullTimetable[models.GetEndDate(officeHour.Date, minute, true)]
|
||||
if exists {
|
||||
_, exists := fullTimetable[models.Date{0, officeHour.Day, officeHour.Hour + (officeHour.Minute+minute)/60, (officeHour.Minute + minute) % 60}][slot]
|
||||
_, exists := fullTimetable[models.GetEndDate(officeHour.Date, minute, true)][slot]
|
||||
if exists {
|
||||
slot += 1
|
||||
minute = 0
|
||||
continue
|
||||
}
|
||||
} else {
|
||||
fullTimetable[models.Date{0, officeHour.Day, officeHour.Hour + (officeHour.Minute+minute)/60, (officeHour.Minute + minute) % 60}] = make(map[int]models.OfficeHour)
|
||||
fullTimetable[models.GetEndDate(officeHour.Date, minute, true)] = make(map[int]models.OfficeHour)
|
||||
}
|
||||
}
|
||||
for minute := 0; minute < officeHour.Duration; minute += models.MinuteGranularity { // write officeHour id to timetable
|
||||
fullTimetable[models.Date{0, officeHour.Day, officeHour.Hour + (officeHour.Minute+minute)/60, (officeHour.Minute + minute) % 60}][slot] = officeHour
|
||||
fullTimetable[models.GetEndDate(officeHour.Date, minute, true)][slot] = officeHour
|
||||
}
|
||||
}
|
||||
slots = []int{1, 1, 1, 1, 1}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue