package repositories_astrologer

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

// OfferRepository handles astrologer promotional offers.
type OfferRepository interface {

	// Basic CRUD
	// Get astrologer's offer settings
	GetOffer(astrologerID uint) (*models.AstrologerOfferSetting, error)

	// Get offer by primary key
	GetOfferByID(id uint) (*models.AstrologerOfferSetting, error)

	// Create new offer
	CreateOffer(offer *models.AstrologerOfferSetting) error

	// Update existing offer
	UpdateOffer(offer *models.AstrologerOfferSetting) error

	// Soft delete offer
	DeleteOffer(id uint) error

	// PO@5 Offer
	EnablePO5Offer(astrologerID uint, amount float64) error

	DisablePO5Offer(astrologerID uint) error
	// Free Chat Offer

	EnableFreeChatOffer(astrologerID uint, minutes int) error
	//Free Chat Offer

	DisableFreeChatOffer(astrologerID uint) error
	// Free Call Offer
	EnableFreeCallOffer(astrologerID uint, minutes int) error

	DisableFreeCallOffer(astrologerID uint) error
	// Campaign Offer
	EnableCampaign(astrologerID uint, title string, description string) error

	DisableCampaign(astrologerID uint) error
	// Status
	GetActiveOffer(astrologerID uint) (*models.AstrologerOfferSetting, error)

	HasActiveOffer(astrologerID uint) (bool, error)
	// Utility
	UpdatePriority(astrologerID uint, priority int) error
}
