Basdat/internal/controllers/manager_controller.go
2025-12-20 00:01:08 +07:00

40 lines
1.2 KiB
Go

// internal/controllers/manager_controller.go
package controllers
import (
"lost-and-found/internal/models"
"lost-and-found/internal/repositories"
"lost-and-found/internal/utils"
"net/http"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type ManagerController struct {
itemRepo *repositories.ItemRepository
claimRepo *repositories.ClaimRepository
}
func NewManagerController(db *gorm.DB) *ManagerController {
return &ManagerController{
itemRepo: repositories.NewItemRepository(db),
claimRepo: repositories.NewClaimRepository(db),
}
}
func (c *ManagerController) GetDashboardStats(ctx *gin.Context) {
totalItems, _ := c.itemRepo.CountAll()
pendingClaims, _ := c.claimRepo.CountByStatus(models.ClaimStatusPending)
verifiedItems, _ := c.itemRepo.CountByStatus(models.ItemStatusVerified)
expiredItems, _ := c.itemRepo.CountByStatus(models.ItemStatusExpired)
stats := map[string]interface{}{
"total_items": totalItems,
"pending_claims": pendingClaims,
"verified": verifiedItems,
"expired": expiredItems,
}
utils.SuccessResponse(ctx, http.StatusOK, "Manager dashboard stats", stats)
}