Yimaru-BackEnd/internal/services/result_checker.go

190 lines
6.2 KiB
Go

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
// }