40 lines
1.2 KiB
Go
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)
|
|
} |