package endpoints import ( "arbeitszeitmessung/models" "arbeitszeitmessung/templates" "log" "net/http" "time" ) func TeamHandler(w http.ResponseWriter, r *http.Request) { showWeeks(w, r) // user, err := (*models.User).GetUserFromSession(nil, Session, r.Context()) // if err != nil { // log.Println("No user found with the given personal number!") // http.Redirect(w, r, "/user/login", http.StatusSeeOther) // return // } // var userWorkDays []models.WorkDay // userWorkDays = (*models.WorkDay).GetWorkDays(nil, user.CardUID, time.Date(2025, time.February, 24, 0, 0, 0, 0, time.Local), time.Date(2025, time.February, 24+7, 0, 0, 0, 0, time.Local)) // log.Println("User:", user) // teamMembers, err := user.GetTeamMembers() // getWeeksTillNow(time.Now().AddDate(0, 0, -14)) // templates.TeamPage(teamMembers, userWorkDays).Render(r.Context(), w) } func showWeeks(w http.ResponseWriter, r *http.Request) { user, err := (*models.User).GetUserFromSession(nil, Session, r.Context()) if err != nil { log.Println("No user found with the given personal number!") http.Redirect(w, r, "/user/login", http.StatusSeeOther) return } var workWeeks []models.WorkWeek teamMembers, err := user.GetTeamMembers() for _, member := range teamMembers { weeks := (*models.WorkWeek).GetSendWeeks(nil, member) workWeeks = append(workWeeks, weeks...) } // Somehow use this for the own users weeks // lastSub := member.GetLastSubmission() // weeks := getWeeksTillNow(lastSub) // for _, week := range weeks { // workWeek := (*models.WorkWeek).GetWeek(nil, member, week) // workWeeks = append(workWeeks, workWeek) // } lastSub := user.GetLastSubmission() // userWorkDays := (*models.WorkDay).GetWorkDays(nil, user.CardUID, lastSub, lastSub.AddDate(0, 0, 7)) userWeek := (*models.WorkWeek).GetWeek(nil, user, lastSub) templates.TeamPage(workWeeks, userWeek).Render(r.Context(), w) } func getWeeksTillNow(lastWeek time.Time) []time.Time { var weeks []time.Time if lastWeek.After(time.Now()) { log.Println("Timestamp is after today, no weeks till now!") return weeks } if lastWeek.Weekday() != time.Monday { if lastWeek.Weekday() == time.Sunday { lastWeek = lastWeek.AddDate(0, 0, -6) } else { lastWeek = lastWeek.AddDate(0, 0, -int(lastWeek.Weekday()-1)) } } if time.Since(lastWeek) < 24*5*time.Hour { log.Println("Timestamp in running week, cannot split!") } for t := lastWeek; t.Before(time.Now()); t = t.Add(7 * 24 * time.Hour) { weeks = append(weeks, t) } log.Println(weeks) return weeks }