diff --git a/Backend/endpoints/team_presence.go b/Backend/endpoints/team_presence.go
new file mode 100644
index 0000000..5ca18e0
--- /dev/null
+++ b/Backend/endpoints/team_presence.go
@@ -0,0 +1,45 @@
+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)
+}
diff --git a/Backend/helper/web.go b/Backend/helper/web.go
index 0bae9bf..32fca7a 100644
--- a/Backend/helper/web.go
+++ b/Backend/helper/web.go
@@ -1,6 +1,7 @@
package helper
import (
+ "context"
"net/http"
"os"
@@ -20,6 +21,7 @@ func SetCors(w http.ResponseWriter) {
}
func RequiresLogin(session *scs.SessionManager, w http.ResponseWriter, r *http.Request) {
+ r = r.WithContext(context.WithValue(r.Context(), "session", session))
if GetEnv("GO_ENV", "production") == "debug" {
return
}
diff --git a/Backend/main.go b/Backend/main.go
index 9077586..969ab60 100644
--- a/Backend/main.go
+++ b/Backend/main.go
@@ -51,7 +51,7 @@ func main() {
server.HandleFunc("/user/login", endpoints.LoginHandler)
server.HandleFunc("/user/settings", endpoints.UserSettingsHandler)
server.HandleFunc("/team", endpoints.TeamHandler)
- server.HandleFunc("/team/presence", endpoints.TeamHandler)
+ server.HandleFunc("/team/presence", endpoints.TeamPresenceHandler)
server.Handle("/", http.RedirectHandler("/time", http.StatusPermanentRedirect))
server.Handle("/static/", http.StripPrefix("/static/", fs))
diff --git a/Backend/models/user.go b/Backend/models/user.go
index 1e0155f..e5f5bd0 100644
--- a/Backend/models/user.go
+++ b/Backend/models/user.go
@@ -167,6 +167,15 @@ func (u *User) GetTeamMembers() ([]User, error) {
return teamMembers, nil
}
+func (u *User) IsTeamLeader() bool {
+ team, err := u.GetTeamMembers()
+ if err != nil {
+ log.Println("Error getting team Members", err)
+ return false
+ }
+ return len(team) > 0
+}
+
func (u *User) GetWeek(tsFrom time.Time) WorkWeek {
var bookings []WorkDay
weekStart := tsFrom.AddDate(0, 0, -1*int(tsFrom.Local().Weekday())-1)
diff --git a/Backend/templates/headerComponent.templ b/Backend/templates/headerComponent.templ
index bff5766..bfb040f 100644
--- a/Backend/templates/headerComponent.templ
+++ b/Backend/templates/headerComponent.templ
@@ -1,9 +1,14 @@
package templates
+
+
templ headerComponent() {
}
diff --git a/Backend/templates/headerComponent_templ.go b/Backend/templates/headerComponent_templ.go
index e3cf58d..4710b0a 100644
--- a/Backend/templates/headerComponent_templ.go
+++ b/Backend/templates/headerComponent_templ.go
@@ -29,7 +29,17 @@ func headerComponent() templ.Component {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
- templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "")
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Zeitverwaltung Abrechnung ")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ if true {
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "
Anwesenheit ")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "
Einstellungen ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
diff --git a/Backend/templates/pages.templ b/Backend/templates/pages.templ
index ba80498..0867308 100644
--- a/Backend/templates/pages.templ
+++ b/Backend/templates/pages.templ
@@ -115,3 +115,27 @@ templ NavPage() {
}
+
+templ TeamPresencePage(teamPresence map[bool][]models.User) {
+ @Base()
+ @headerComponent()
+
+
+
Anwesend
+
+ for _, user := range teamPresence[true] {
+
+ @userPresenceComponent(user, true)
+ }
+
+
+
+
Nicht Anwesend
+
+ for _, user := range teamPresence[false] {
+ @userPresenceComponent(user, false)
+ }
+
+
+
+}
diff --git a/Backend/templates/pages_templ.go b/Backend/templates/pages_templ.go
index c16ffac..d93ac8d 100644
--- a/Backend/templates/pages_templ.go
+++ b/Backend/templates/pages_templ.go
@@ -344,4 +344,61 @@ func NavPage() templ.Component {
})
}
+func TeamPresencePage(teamPresence map[bool][]models.User) templ.Component {
+ return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
+ templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
+ if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
+ return templ_7745c5c3_CtxErr
+ }
+ templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
+ if !templ_7745c5c3_IsBuffer {
+ defer func() {
+ templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
+ if templ_7745c5c3_Err == nil {
+ templ_7745c5c3_Err = templ_7745c5c3_BufErr
+ }
+ }()
+ }
+ ctx = templ.InitializeContext(ctx)
+ templ_7745c5c3_Var11 := templ.GetChildren(ctx)
+ if templ_7745c5c3_Var11 == nil {
+ templ_7745c5c3_Var11 = templ.NopComponent
+ }
+ ctx = templ.ClearChildren(ctx)
+ templ_7745c5c3_Err = Base().Render(ctx, templ_7745c5c3_Buffer)
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ templ_7745c5c3_Err = headerComponent().Render(ctx, templ_7745c5c3_Buffer)
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "Anwesend
")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ for _, user := range teamPresence[true] {
+ templ_7745c5c3_Err = userPresenceComponent(user, true).Render(ctx, templ_7745c5c3_Buffer)
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "
Nicht Anwesend
")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ for _, user := range teamPresence[false] {
+ templ_7745c5c3_Err = userPresenceComponent(user, false).Render(ctx, templ_7745c5c3_Buffer)
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "
")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ return nil
+ })
+}
+
var _ = templruntime.GeneratedTemplate
diff --git a/Backend/templates/teamComponents.templ b/Backend/templates/teamComponents.templ
index ab917cb..9cebb77 100644
--- a/Backend/templates/teamComponents.templ
+++ b/Backend/templates/teamComponents.templ
@@ -56,3 +56,14 @@ templ employeComponent(week models.WorkWeek) {
}
+
+templ userPresenceComponent(user models.User, present bool){
+
+ if present {
+
Anwesend
+ } else {
+
Abwesend
+ }
+
{user.Vorname} {user.Name}
+
+}
diff --git a/Backend/templates/teamComponents_templ.go b/Backend/templates/teamComponents_templ.go
index c096fc6..2a56f46 100644
--- a/Backend/templates/teamComponents_templ.go
+++ b/Backend/templates/teamComponents_templ.go
@@ -250,4 +250,74 @@ func employeComponent(week models.WorkWeek) templ.Component {
})
}
+func userPresenceComponent(user models.User, present bool) templ.Component {
+ return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
+ templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
+ if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
+ return templ_7745c5c3_CtxErr
+ }
+ templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
+ if !templ_7745c5c3_IsBuffer {
+ defer func() {
+ templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
+ if templ_7745c5c3_Err == nil {
+ templ_7745c5c3_Err = templ_7745c5c3_BufErr
+ }
+ }()
+ }
+ ctx = templ.InitializeContext(ctx)
+ templ_7745c5c3_Var15 := templ.GetChildren(ctx)
+ if templ_7745c5c3_Var15 == nil {
+ templ_7745c5c3_Var15 = templ.NopComponent
+ }
+ ctx = templ.ClearChildren(ctx)
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ if present {
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "
Anwesend
")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ } else {
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "
Abwesend
")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "
")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ var templ_7745c5c3_Var16 string
+ templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(user.Vorname)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/teamComponents.templ`, Line: 67, Col: 17}
+ }
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, " ")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ var templ_7745c5c3_Var17 string
+ templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(user.Name)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/teamComponents.templ`, Line: 67, Col: 29}
+ }
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "
")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ return nil
+ })
+}
+
var _ = templruntime.GeneratedTemplate