44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package system
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
v1 "management/internal/erpserver/service/v1"
|
|
"management/internal/pkg/middleware"
|
|
"management/internal/pkg/tpl"
|
|
)
|
|
|
|
type homeHandler struct {
|
|
render tpl.Renderer
|
|
mi middleware.Middleware
|
|
usersvc v1.UserService
|
|
loginLogsvc v1.LoginLogService
|
|
}
|
|
|
|
func NewHomeHandler(render tpl.Renderer, mi middleware.Middleware, usersvc v1.UserService, loginLogsvc v1.LoginLogService) *homeHandler {
|
|
return &homeHandler{
|
|
render: render,
|
|
mi: mi,
|
|
usersvc: usersvc,
|
|
loginLogsvc: loginLogsvc,
|
|
}
|
|
}
|
|
|
|
func (h *homeHandler) Home(w http.ResponseWriter, r *http.Request) {
|
|
h.render.HTML(w, r, "home/home.tmpl", nil)
|
|
}
|
|
|
|
func (h *homeHandler) Dashboard(w http.ResponseWriter, r *http.Request) {
|
|
ctx := r.Context()
|
|
auth := h.mi.AuthUser(ctx)
|
|
user, _ := h.usersvc.Get(ctx, auth.ID)
|
|
t := h.loginLogsvc.LoginLatestTime(ctx, auth.Email)
|
|
c := h.loginLogsvc.LoginCount(ctx, auth.Email)
|
|
h.render.HTML(w, r, "home/dashboard.tmpl", map[string]any{
|
|
"Auth": auth,
|
|
"User": user,
|
|
"LastLoginTime": t,
|
|
"LoginCount": c,
|
|
})
|
|
}
|