CHANGE: added team view, with submitted bookings for team members and send form for own bookings
This commit is contained in:
@@ -1,31 +1,75 @@
|
||||
package endpoints
|
||||
|
||||
import (
|
||||
"arbeitszeitmessung/helper"
|
||||
"arbeitszeitmessung/models"
|
||||
"arbeitszeitmessung/templates"
|
||||
"log"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TeamHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var user models.User
|
||||
var err error
|
||||
if helper.GetEnv("GO_ENV", "production") == "debug" {
|
||||
user, err = (*models.User).GetByPersonalNummer(nil, 123)
|
||||
} else {
|
||||
if !Session.Exists(r.Context(), "user") {
|
||||
log.Println("No user in session storage!")
|
||||
http.Error(w, "Not logged in!", http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
user, err = (*models.User).GetByPersonalNummer(nil, Session.GetInt(r.Context(), "user"))
|
||||
}
|
||||
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()
|
||||
templates.TeamPage(teamMembers).Render(r.Context(), w)
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user