Korrigiere Zählung paralleler Sprechstunden

This commit is contained in:
Gonne 2022-09-19 18:32:15 +02:00
parent e1c5ccab3a
commit d91de014e9
2 changed files with 16 additions and 8 deletions

View file

@ -40,7 +40,7 @@ func main() {
roomRepo := repositories.NewRoomRepo(db)
courseRepo := repositories.NewCourseRepo(db)
tutorRepo := repositories.NewTutorRepo(db)
officeHourRepo := repositories.NewOfficeHourRepo(db, roomRepo, tutorRepo, courseRepo)
officeHourRepo := repositories.NewOfficeHourRepo(db, roomRepo, tutorRepo, courseRepo, conf)
requestRepo := repositories.NewRequestRepo(db, officeHourRepo, conf)
h := controllers.NewBaseHandler(roomRepo, officeHourRepo, courseRepo, tutorRepo, requestRepo, conf)

View file

@ -4,6 +4,8 @@ package repositories
import (
"database/sql"
"fmt"
"log"
"sprechstundentool/config"
"sprechstundentool/models"
)
@ -12,14 +14,16 @@ type OfficeHourRepo struct {
roomRepo *RoomRepo
tutorRepo *TutorRepo
courseRepo *CourseRepo
config config.Config
}
func NewOfficeHourRepo(db *sql.DB, roomRepo *RoomRepo, tutorRepo *TutorRepo, courseRepo *CourseRepo) *OfficeHourRepo {
func NewOfficeHourRepo(db *sql.DB, roomRepo *RoomRepo, tutorRepo *TutorRepo, courseRepo *CourseRepo, conf config.Config) *OfficeHourRepo {
return &OfficeHourRepo{
db: db,
roomRepo: roomRepo,
tutorRepo: tutorRepo,
courseRepo: courseRepo,
config: conf,
}
}
@ -168,14 +172,18 @@ func (r *OfficeHourRepo) NumberByTimeSpanAndRoom(date models.Date, duration int,
return 0, err
}
var count int
// iterate over all points in the new officehour to get the maximum parallel officehours
for minute := 0; minute < duration; minute += r.config.Date.MinuteGranularity {
var minuteCount int = 0
for _, officeHour := range officeHours {
if models.DateLess(models.GetEndDate(officeHour.Date, officeHour.Duration, false), date) || models.GetEndDate(officeHour.Date, officeHour.Duration, false) == date {
continue
// increase count if officehour starts before this point in time and ends later
if models.DateLess(officeHour.Date, models.GetEndDate(date, minute, false)) && models.DateLess(models.GetEndDate(date, minute, false), models.GetEndDate(officeHour.Date, officeHour.Duration, false)) {
minuteCount += 1
}
if models.DateLess(models.GetEndDate(date, duration, false), officeHour.Date) || models.GetEndDate(date, duration, false) == officeHour.Date {
continue
}
count += 1
if minuteCount > count {
count = minuteCount
}
}
return count, nil
}