package services

// import (
// 	"encoding/json"
// 	"fmt"
// 	"time"

// 	"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
// )

// // ResultCheckerService handles the checking of game results
// type ResultCheckerService struct {
// 	// Add any dependencies here (e.g., repositories, external APIs)
// }

// // NewResultCheckerService creates a new instance of ResultCheckerService
// func NewResultCheckerService() *ResultCheckerService {
// 	return &ResultCheckerService{}
// }

// // CheckNFLResult checks the result of an NFL game
// func (s *ResultCheckerService) CheckNFLResult(data json.RawMessage) (*domain.Result, error) {
// 	nflResult, err := domain.ParseNFLResult(data)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to parse NFL result: %w", err)
// 	}

// 	winner, err := domain.GetNFLWinner(nflResult)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to determine NFL winner: %w", err)
// 	}

// 	score := domain.FormatNFLScore(nflResult)

// 	return &domain.Result{
// 		Status:        determineOutcomeStatus(winner, nflResult.Home.Name, nflResult.Away.Name),
// 		Score:         score,
// 		FullTimeScore: score,
// 		SS:            nflResult.SS,
// 		Scores: map[string]domain.Score{
// 			"1": nflResult.Scores.FirstQuarter,
// 			"2": nflResult.Scores.SecondQuarter,
// 			"3": nflResult.Scores.ThirdQuarter,
// 			"4": nflResult.Scores.FourthQuarter,
// 			"5": nflResult.Scores.Overtime,
// 			"7": nflResult.Scores.TotalScore,
// 		},
// 		CreatedAt: time.Now(),
// 		UpdatedAt: time.Now(),
// 	}, nil
// }

// // determineOutcomeStatus determines the outcome status based on the winner and teams
// func determineOutcomeStatus(winner, homeTeam, awayTeam string) domain.OutcomeStatus {
// 	if winner == "Draw" {
// 		return domain.OUTCOME_STATUS_VOID
// 	}
// 	if winner == homeTeam {
// 		return domain.OUTCOME_STATUS_WIN
// 	}
// 	if winner == awayTeam {
// 		return domain.OUTCOME_STATUS_LOSS
// 	}
// 	return domain.OUTCOME_STATUS_PENDING
// }

// // CheckRugbyResult checks the result of a Rugby game
// func (s *ResultCheckerService) CheckRugbyResult(data json.RawMessage) (*domain.Result, error) {
// 	rugbyResult, err := domain.ParseRugbyResult(data)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to parse Rugby result: %w", err)
// 	}

// 	winner, err := domain.GetRugbyWinner(rugbyResult)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to determine Rugby winner: %w", err)
// 	}

// 	score := domain.FormatRugbyScore(rugbyResult)

// 	return &domain.Result{
// 		Status:        determineOutcomeStatus(winner, rugbyResult.Home.Name, rugbyResult.Away.Name),
// 		Score:         score,
// 		FullTimeScore: score,
// 		SS:            rugbyResult.SS,
// 		Scores: map[string]domain.Score{
// 			"1": rugbyResult.Scores.FirstHalf,
// 			"2": rugbyResult.Scores.SecondHalf,
// 			"7": rugbyResult.Scores.TotalScore,
// 		},
// 		CreatedAt: time.Now(),
// 		UpdatedAt: time.Now(),
// 	}, nil
// }

// // CheckBaseballResult checks the result of a Baseball game
// func (s *ResultCheckerService) CheckBaseballResult(data json.RawMessage) (*domain.Result, error) {
// 	baseballResult, err := domain.ParseBaseballResult(data)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to parse Baseball result: %w", err)
// 	}

// 	winner, err := domain.GetBaseballWinner(baseballResult)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to determine Baseball winner: %w", err)
// 	}

// 	score := domain.FormatBaseballScore(baseballResult)

// 	return &domain.Result{
// 		Status:        determineOutcomeStatus(winner, baseballResult.Home.Name, baseballResult.Away.Name),
// 		Score:         score,
// 		FullTimeScore: score,
// 		SS:            baseballResult.SS,
// 		Scores: map[string]domain.Score{
// 			"1":  baseballResult.Scores.FirstInning,
// 			"2":  baseballResult.Scores.SecondInning,
// 			"3":  baseballResult.Scores.ThirdInning,
// 			"4":  baseballResult.Scores.FourthInning,
// 			"5":  baseballResult.Scores.FifthInning,
// 			"6":  baseballResult.Scores.SixthInning,
// 			"7":  baseballResult.Scores.SeventhInning,
// 			"8":  baseballResult.Scores.EighthInning,
// 			"9":  baseballResult.Scores.NinthInning,
// 			"10": baseballResult.Scores.ExtraInnings,
// 			"T":  baseballResult.Scores.TotalScore,
// 		},
// 		CreatedAt: time.Now(),
// 		UpdatedAt: time.Now(),
// 	}, nil
// }

// // CheckRugbyUnionResult checks the result of a Rugby Union game
// func (s *ResultCheckerService) CheckRugbyUnionResult(data json.RawMessage) (*domain.Result, error) {
// 	rugbyResult, err := domain.ParseRugbyUnionResult(data)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to parse Rugby Union result: %w", err)
// 	}

// 	winner, err := domain.GetRugbyWinner(rugbyResult)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to determine Rugby Union winner: %w", err)
// 	}

// 	score := domain.FormatRugbyScore(rugbyResult)

// 	return &domain.Result{
// 		Status:        determineOutcomeStatus(winner, rugbyResult.Home.Name, rugbyResult.Away.Name),
// 		Score:         score,
// 		FullTimeScore: score,
// 		SS:            rugbyResult.SS,
// 		Scores: map[string]domain.Score{
// 			"1": rugbyResult.Scores.FirstHalf,
// 			"2": rugbyResult.Scores.SecondHalf,
// 			"7": rugbyResult.Scores.TotalScore,
// 		},
// 		CreatedAt: time.Now(),
// 		UpdatedAt: time.Now(),
// 	}, nil
// }

// // CheckRugbyLeagueResult checks the result of a Rugby League game
// func (s *ResultCheckerService) CheckRugbyLeagueResult(data json.RawMessage) (*domain.Result, error) {
// 	rugbyResult, err := domain.ParseRugbyLeagueResult(data)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to parse Rugby League result: %w", err)
// 	}

// 	winner, err := domain.GetRugbyWinner(rugbyResult)
// 	if err != nil {
// 		return nil, fmt.Errorf("failed to determine Rugby League winner: %w", err)
// 	}

// 	score := domain.FormatRugbyScore(rugbyResult)

// 	return &domain.Result{
// 		Status:        determineOutcomeStatus(winner, rugbyResult.Home.Name, rugbyResult.Away.Name),
// 		Score:         score,
// 		FullTimeScore: score,
// 		SS:            rugbyResult.SS,
// 		Scores: map[string]domain.Score{
// 			"1": rugbyResult.Scores.FirstHalf,
// 			"2": rugbyResult.Scores.SecondHalf,
// 			"7": rugbyResult.Scores.TotalScore,
// 		},
// 		CreatedAt: time.Now(),
// 		UpdatedAt: time.Now(),
// 	}, nil
// }
