package usecase

import (
	"context"
	"lune/talentscale/internal/domain"
	"github.com/google/uuid"
)

type dashboardUsecase struct {
	repo domain.DashboardRepository
}

func NewDashboardUsecase(repo domain.DashboardRepository) domain.DashboardUsecase {
	return &dashboardUsecase{repo: repo}
}

func (u *dashboardUsecase) GetStats(ctx context.Context, companyID uuid.UUID) (*domain.DashboardStats, error) {
	totalUsers, err := u.repo.GetTotalUsers(ctx, companyID)
	if err != nil { return nil, err }

	totalCandidates, err := u.repo.GetTotalCandidates(ctx, companyID)
	if err != nil { return nil, err }

	statusBreakdown, err := u.repo.GetCandidateStatusBreakdown(ctx, companyID)
	if err != nil { return nil, err }

	candidatesPerDay, err := u.repo.GetCandidatesPerDay(ctx, companyID, 14)
	if err != nil { return nil, err }

	recentActivity, err := u.repo.GetRecentActivity(ctx, companyID, 5)
	if err != nil { return nil, err }

	return &domain.DashboardStats{
		TotalUsers:       totalUsers,
		TotalCandidates:  totalCandidates,
		CandidateStatus:  statusBreakdown,
		CandidatesPerDay: candidatesPerDay,
		RecentActivity:   recentActivity,
	}, nil
}
