package domain

import (
	"context"
	"github.com/google/uuid"
)

type DashboardStats struct {
	TotalUsers         int                    `json:"total_users"`
	TotalCandidates    int                    `json:"total_candidates"`
	CandidateStatus    map[string]int         `json:"candidate_status"`
	CandidatesPerDay   []CandidatesPerDayStat `json:"candidates_per_day"`
	RecentActivity     []ActivityLog          `json:"recent_activity"`
}

type CandidatesPerDayStat struct {
	Date  string `json:"date"`
	Count int    `json:"count"`
}

type ActivityLog struct {
	ID        uuid.UUID `json:"id"`
	User      string    `json:"user"`
	Action    string    `json:"action"`
	Timestamp string    `json:"timestamp"`
}

type DashboardUsecase interface {
	GetStats(ctx context.Context, companyID uuid.UUID) (*DashboardStats, error)
}

type DashboardRepository interface {
	GetTotalUsers(ctx context.Context, companyID uuid.UUID) (int, error)
	GetTotalCandidates(ctx context.Context, companyID uuid.UUID) (int, error)
	GetCandidateStatusBreakdown(ctx context.Context, companyID uuid.UUID) (map[string]int, error)
	GetCandidatesPerDay(ctx context.Context, companyID uuid.UUID, days int) ([]CandidatesPerDayStat, error)
	GetRecentActivity(ctx context.Context, companyID uuid.UUID, limit int) ([]ActivityLog, error)
}
