package admin import ( "github.com/gin-gonic/gin" "github.com/mattnite/forgejo-tickets/internal/models" "github.com/rs/zerolog/log" ) type DashboardHandler struct { deps Dependencies } func (h *DashboardHandler) Index(c *gin.Context) { var userCount int64 if err := h.deps.DB.Model(&models.User{}).Count(&userCount).Error; err != nil { log.Error().Err(err).Msg("count users error") } var totalTickets int64 if err := h.deps.DB.Model(&models.Ticket{}).Count(&totalTickets).Error; err != nil { log.Error().Err(err).Msg("count tickets error") } var openTickets int64 if err := h.deps.DB.Model(&models.Ticket{}).Where("status = ?", models.TicketStatusOpen).Count(&openTickets).Error; err != nil { log.Error().Err(err).Msg("count open tickets error") } var inProgressTickets int64 if err := h.deps.DB.Model(&models.Ticket{}).Where("status = ?", models.TicketStatusInProgress).Count(&inProgressTickets).Error; err != nil { log.Error().Err(err).Msg("count in_progress tickets error") } var closedTickets int64 if err := h.deps.DB.Model(&models.Ticket{}).Where("status = ?", models.TicketStatusClosed).Count(&closedTickets).Error; err != nil { log.Error().Err(err).Msg("count closed tickets error") } h.deps.Renderer.Render(c.Writer, c.Request, "admin/dashboard", map[string]interface{}{ "UserCount": userCount, "TotalTickets": totalTickets, "OpenTickets": openTickets, "InProgressTickets": inProgressTickets, "ClosedTickets": closedTickets, }) }