47 lines
1.5 KiB
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,
|
|
})
|
|
}
|