46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package endpoints
|
|
|
|
import (
|
|
"arbeitszeitmessung/helper"
|
|
"arbeitszeitmessung/models"
|
|
"arbeitszeitmessung/templates"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
func TeamPresenceHandler(w http.ResponseWriter, r *http.Request){
|
|
helper.RequiresLogin(Session, w, r)
|
|
helper.SetCors(w)
|
|
switch r.Method {
|
|
case http.MethodGet:
|
|
teamPresence(w, r)
|
|
break
|
|
case http.MethodOptions:
|
|
// just support options header for non GET Requests from SWAGGER
|
|
w.WriteHeader(http.StatusOK)
|
|
break
|
|
default:
|
|
http.Error(w, "Method not allowed!", http.StatusMethodNotAllowed)
|
|
break
|
|
}
|
|
}
|
|
|
|
func teamPresence(w http.ResponseWriter, r *http.Request){
|
|
user, err := (*models.User).GetUserFromSession(nil, Session, r.Context())
|
|
if err != nil {
|
|
log.Println("Error getting user!", err)
|
|
}
|
|
team, err := user.GetTeamMembers()
|
|
teamPresence := make(map[bool][]models.User)
|
|
for _, user := range team {
|
|
present := user.CheckAnwesenheit()
|
|
teamPresence[present] = append(teamPresence[present], user)
|
|
}
|
|
|
|
|
|
if(err != nil){
|
|
log.Println("Error getting team", err)
|
|
}
|
|
templates.TeamPresencePage(teamPresence).Render(r.Context(), w)
|
|
}
|