forgejo-tickets/internal/handlers/admin/dashboard.go

47 lines
1.5 KiB
Go

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,
})
}