package repositories_astrologer

import (
	models "astrology-api/models/astrologermodel"
	"time"
)

// StatisticsRepository manages astrologer's dashboard statistics.
type StatisticsRepository interface {

	// CRUD
	// Get today's statistics
	GetTodayStatistics(
		astrologerID uint,
	) (*models.AstrologerDailyStatistics, error)
	// Get statistics by primary key
	GetStatisticsByID(
		id uint,
	) (*models.AstrologerDailyStatistics, error)
	// Get statistics by date
	GetStatisticsByDate(
		astrologerID uint,
		date time.Time,
	) (*models.AstrologerDailyStatistics, error)
	// Create statistics
	CreateTodayStatistics(
		stats *models.AstrologerDailyStatistics,
	) error
	// Update statistics
	UpdateTodayStatistics(
		stats *models.AstrologerDailyStatistics,
	) error
	// Delete statistics (Soft Delete)
	DeleteStatistics(
		id uint,
	) error
	// Online Activity
	UpdateOnlineMinutes(
		astrologerID uint,
		minutes int,
	) error

	// Chat
	IncrementChatCount(
		astrologerID uint,
	) error

	// Call
	IncrementCallCount(
		astrologerID uint,
	) error

	// Earnings
	UpdateEarnings(
		astrologerID uint,
		amount float64,
	) error

	// Rating
	UpdateRating(
		astrologerID uint,
		rating float64,
	) error

	// Performance
	UpdateAcceptanceRate(
		astrologerID uint,
		rate float64,
	) error

	UpdateResponseRate(
		astrologerID uint,
		rate float64,
	) error

	// Dashboard
	GetDashboardStatistics(
		astrologerID uint,
	) (*models.AstrologerDailyStatistics, error)
}
