package domain

import (
	"go.uber.org/zap"
)

var MongoDBLogger *zap.Logger

type ResponseWDataFactory[T any] struct {
	Data T `json:"data"`
	Response
}

type Response struct {
	Message    string      `json:"message"`
	Data       interface{} `json:"data,omitempty"`
	Success    bool        `json:"success"`
	StatusCode int         `json:"status_code"`
	MetaData   interface{} `json:"metadata"`
}

func NewResponse(message string, data interface{}) Response {
	return Response{
		Message:    message,
		Data:       data,
		Success:    true, // default true
		StatusCode: 200,  // default 200
	}
}

// type CallbackErrorResponse struct {
// 	ErrorData interface
// 	Error string `json:"error,omitempty"`
// }

func CalculateWinnings(amount Currency, totalOdds float32) Currency {

	vat := amount.Float32() * 0.15
	stakeAfterVat := amount.Float32() - vat
	possibleWin := stakeAfterVat * totalOdds
	incomeTax := possibleWin * 0.15

	return ToCurrency(possibleWin - incomeTax)

}

type Pagination struct {
	Total       int `json:"total"`
	TotalPages  int `json:"total_pages"`
	CurrentPage int `json:"current_page"`
	Limit       int `json:"limit"`
}

func PtrFloat64(v float64) *float64 { return &v }
func PtrInt64(v int64) *int64       { return &v }
