package services_astrologer

import (
	dto "astrology-api/dto_astrologer"
)

// DashboardService handles astrologer home dashboard operations.
type DashboardService interface {

	// Dashboard
	GetDashboard(userID uint) (*dto.DashboardResponse, error)

	// Dashboard Statistics
	GetDashboardStatistics(userID uint) (*dto.DashboardStatisticsResponse, error)
	// Status. Each returns the astrologer's flags as they stand after the
	// change, so the endpoint can answer with the new state instead of null.
	UpdateOnlineStatus(userID uint, isOnline bool) (*dto.StatusFlagsResponse, error)
	UpdateChatStatus(userID uint, isAvailable bool) (*dto.StatusFlagsResponse, error)
	UpdateCallStatus(userID uint, isAvailable bool) (*dto.StatusFlagsResponse, error)
	UpdateBusyStatus(userID uint, isBusy bool) (*dto.StatusFlagsResponse, error)
	UpdateQuickDND(userID uint, enable bool) (*dto.StatusFlagsResponse, error)

	// Rest Time. Both return the break they acted on — the one just started,
	// or the one just ended (nil when there was none) — so the endpoints can
	// answer with it instead of a null data.
	StartRestTime(userID uint, req dto.RestTimeRequest) (*dto.RestTimeResponse, error)
	EndRestTime(userID uint) (*dto.RestTimeResponse, error)

	// Offers
	UpdateOffer(userID uint, req dto.OfferRequest) error
}
