Skip to content

Commit

Permalink
🚧 go slots
Browse files Browse the repository at this point in the history
  • Loading branch information
obcode committed May 14, 2024
1 parent 27bb38f commit 9022be7
Show file tree
Hide file tree
Showing 5 changed files with 189 additions and 12 deletions.
140 changes: 136 additions & 4 deletions graph/generated/generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion graph/model/models_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion graph/plan.graphqls
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ type SemesterConfig {
days: [ExamDay!]!
starttimes: [Starttime!]!
slots: [Slot!]!
goSlots: [[Int!]!]
goSlotsRaw: [[Int!]!]
goSlots: [Slot!]!
goDay0: Time!
}

type ExamDay {
Expand Down
51 changes: 46 additions & 5 deletions plexams/plexams.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func (p *Plexams) setGoSlots() {
log.Error().Interface("goSlots", goSlotsRaw).Msg("cannot get go slots from config")
return
}
goSlots := make([][]int, 0, len(goSlotsRaw))
goSlotsII := make([][]int, 0, len(goSlotsRaw))
for _, goSlotRaw := range goSlotsRaw {
goSlot := make([]int, 0, 2)
for _, intRaw := range goSlotRaw.([]interface{}) {
Expand All @@ -131,14 +131,54 @@ func (p *Plexams) setGoSlots() {
}
goSlot = append(goSlot, number)
}
goSlots = append(goSlots, goSlot)
goSlotsII = append(goSlotsII, goSlot)
}

p.semesterConfig.GoSlotsRaw = goSlotsII

// Calculate real slots
offset := 0
for i, day := range p.semesterConfig.Days {
if p.semesterConfig.GoDay0.Year() == day.Date.Year() &&
p.semesterConfig.GoDay0.Month() == day.Date.Month() &&
p.semesterConfig.GoDay0.Day() == day.Date.Day() {
offset = i
break
}
}

type slotNumber struct {
day, slot int
}

slotsMap := make(map[slotNumber]*model.Slot)
for _, slot := range p.semesterConfig.Slots {
slotsMap[slotNumber{
day: slot.DayNumber,
slot: slot.SlotNumber,
}] = slot
}

for k, v := range slotsMap {
fmt.Printf("slot[%v] = %v\n", k, v)
}

goSlots := make([]*model.Slot, 0, len(goSlotsII))

for _, goSlot := range goSlotsII {
goSlots = append(goSlots, slotsMap[slotNumber{
day: goSlot[0] + offset,
slot: goSlot[1],
}])
}

// offSet := (p.semesterConfig.GoDay0.Sub(p.semesterConfig.Days[0].Date).Hours() / 24)
fmt.Printf("day0 = %v, goday0 = %v, offset = %v\n", p.semesterConfig.Days[0].Date, p.semesterConfig.GoDay0, offset)
p.semesterConfig.GoSlots = goSlots
}

func (p *Plexams) GetGoSlots() [][]int {
return p.semesterConfig.GoSlots
return p.semesterConfig.GoSlotsRaw
}

func (p *Plexams) GetAllSemesterNames(ctx context.Context) ([]*model.Semester, error) {
Expand Down Expand Up @@ -170,8 +210,8 @@ func (p *Plexams) setSemesterConfig() {
plan := viper.GetStringMap("semesterConfig")
if len(plan) > 0 {
// Days from ... until, no saturdays, no sundays
from := viper.GetTime("semesterConfig.from")
until := viper.GetTime("semesterConfig.until")
from := viper.GetTime("semesterConfig.from").Local()
until := viper.GetTime("semesterConfig.until").Local()
days := make([]*model.ExamDay, 0)
day := from
number := 1
Expand Down Expand Up @@ -213,6 +253,7 @@ func (p *Plexams) setSemesterConfig() {
Days: days,
Starttimes: starttimes,
Slots: slots,
GoDay0: viper.GetTime("semesterConfig.goDay0").Local(),
}
}
p.setGoSlots()
Expand Down
2 changes: 1 addition & 1 deletion plexams/prepare_groups.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ func setPossibleSlots(semesterConfig *model.SemesterConfig, group *model.ExamGro
possibleSlotsPerExam := make([][]*model.Slot, 0)
for _, exam := range group.Exams {
possibleSlotsPerExam = append(possibleSlotsPerExam,
CalculatedAllowedSlots(semesterConfig.Slots, semesterConfig.GoSlots, exam.IsGO(), exam.Constraints))
CalculatedAllowedSlots(semesterConfig.Slots, semesterConfig.GoSlotsRaw, exam.IsGO(), exam.Constraints))
}
group.ExamGroupInfo.PossibleSlots = mergeAllowedSlots(possibleSlotsPerExam)
}
Expand Down

0 comments on commit 9022be7

Please sign in to comment.