improve dashboard page
This commit is contained in:
parent
dd7f2ebe3e
commit
081499ca59
5 changed files with 89 additions and 55 deletions
|
|
@ -1,18 +1,45 @@
|
|||
package handler
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"net/http"
|
||||
|
||||
"git.juancwu.dev/juancwu/budgit/internal/ctxkeys"
|
||||
"git.juancwu.dev/juancwu/budgit/internal/service"
|
||||
"git.juancwu.dev/juancwu/budgit/internal/ui"
|
||||
"git.juancwu.dev/juancwu/budgit/internal/ui/pages"
|
||||
)
|
||||
|
||||
type dashboardHandler struct{}
|
||||
type dashboardHandler struct {
|
||||
spaceService *service.SpaceService
|
||||
expenseService *service.ExpenseService
|
||||
}
|
||||
|
||||
func NewDashboardHandler() *dashboardHandler {
|
||||
return &dashboardHandler{}
|
||||
func NewDashboardHandler(ss *service.SpaceService, es *service.ExpenseService) *dashboardHandler {
|
||||
return &dashboardHandler{
|
||||
spaceService: ss,
|
||||
expenseService: es,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *dashboardHandler) DashboardPage(w http.ResponseWriter, r *http.Request) {
|
||||
ui.Render(w, r, pages.Dashboard())
|
||||
user := ctxkeys.User(r.Context())
|
||||
spaces, err := h.spaceService.GetSpacesForUser(user.ID)
|
||||
if err != nil {
|
||||
slog.Error("failed to get spaces for user", "error", err, "user_id", user.ID)
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
var totalBalance int
|
||||
for _, space := range spaces {
|
||||
balance, err := h.expenseService.GetBalanceForSpace(space.ID)
|
||||
if err != nil {
|
||||
slog.Error("failed to get balance for space", "error", err, "space_id", space.ID)
|
||||
continue
|
||||
}
|
||||
totalBalance += balance
|
||||
}
|
||||
|
||||
ui.Render(w, r, pages.Dashboard(spaces, totalBalance))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue