handleIndex war seit dem Produktwechsel unverändert ein Platzhalter aus
Schritt 1 ("Antrag stellen"/"Meine Anträge" — beides bereits in der
Seitenleiste vorhanden, die Startseite selbst zeigte nichts Eigenes).
Zeigt jetzt die Zahl eigener offener Anträge, und für die Fachebene
zusätzlich die Zahl offener Fälle im Posteingang; Betreiber sehen
einen Link zur Plattform statt leerer Antrags-Kacheln, die für sie
ohnehin nicht gelten. Bewusst ohne Wiedervorlage-Zahl — deren
Berechnung vergleicht jeden Genehmigungs-Snapshot gegen den aktuellen
Katalogstand und wäre für eine bei jedem Login geladene Startseite zu
teuer.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package web
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
fmt.Fprint(w, `{"ok":true}`)
|
|
}
|
|
|
|
type indexData struct {
|
|
Title string
|
|
Nav navData
|
|
OffeneAntraege int
|
|
ZeigePosteingang bool
|
|
OffenerPosteingang int
|
|
}
|
|
|
|
// handleIndex ist die Startseite nach der Anmeldung — ein kurzer
|
|
// Überblick statt reiner Navigations-Duplikate (die Links stehen
|
|
// eh schon in der Seitenleiste): eigene offene Anträge, und für die
|
|
// Fachebene zusätzlich die Zahl offener Fälle im Posteingang. Bewusst
|
|
// ohne die Wiedervorlage-Zahl hier — deren Berechnung vergleicht jeden
|
|
// aktiven Genehmigungs-Snapshot gegen den aktuellen Katalogstand
|
|
// (siehe handleWiedervorlageListe) und wäre für eine Startseite, die
|
|
// bei jedem Login geladen wird, zu teuer.
|
|
func (s *Server) handleIndex(w http.ResponseWriter, r *http.Request) {
|
|
user := currentUser(r)
|
|
nav := navFor(r)
|
|
data := indexData{Title: "Start", Nav: nav}
|
|
|
|
if !nav.IsBetreiber {
|
|
eigene, err := s.store.ListAntraegeForUser(r.Context(), user.ID)
|
|
if err == nil {
|
|
for _, a := range eigene {
|
|
if a.Status == "eingereicht" {
|
|
data.OffeneAntraege++
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if nav.IsFachebene {
|
|
data.ZeigePosteingang = true
|
|
alle, err := s.store.ListAntraegeForAccount(r.Context(), user.AccountID)
|
|
if err == nil {
|
|
for _, a := range alle {
|
|
if a.Status == "eingereicht" {
|
|
data.OffenerPosteingang++
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if err := s.templates.ExecuteTemplate(w, "index", data); err != nil {
|
|
http.Error(w, "Seite konnte nicht gerendert werden", http.StatusInternalServerError)
|
|
}
|
|
}
|