From 3fba29d95f434285974047069ea9e2cfa1c9e7cf Mon Sep 17 00:00:00 2001 From: Yege1893 <yannick.ege@web.de> Date: Mon, 10 Jul 2023 10:39:41 +0200 Subject: [PATCH] failed api calls --- src/highlanderticketing/api/match.go | 38 +++++++++++++++++++----- src/highlanderticketing/main.go | 7 +++-- src/highlanderticketing/model/match.go | 9 ++++-- src/highlanderticketing/service/order.go | 4 +-- 4 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/highlanderticketing/api/match.go b/src/highlanderticketing/api/match.go index 5cf00c6..1e5837e 100644 --- a/src/highlanderticketing/api/match.go +++ b/src/highlanderticketing/api/match.go @@ -5,14 +5,16 @@ import ( "fmt" "io" "net/http" + "time" "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model" - "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/service" ) -func GetMatchesOfApiToDb(apiUrl string) { +func GetMatchesOfApi(apiUrl string) []*model.Match { data := getData(apiUrl) - formatJsonCreateMatch(data) + fmt.Println(data) + matches := formatJsonToMatches(data) + return matches } func getData(apiUrl string) []byte { @@ -38,26 +40,46 @@ func getData(apiUrl string) []byte { return responseBody } -func formatJsonCreateMatch(jsonArray []byte) { - var match model.Match +func formatJsonToMatches(jsonArray []byte) []*model.Match { + var match *model.Match + var matches []*model.Match var results []map[string]interface{} json.Unmarshal([]byte(jsonArray), &results) for _, result := range results { - match.Date = result["matchDateTime"].(string) + fmt.Println(result, "result") + match.ExternalID = int64(result["matchID"].(float64)) + fmt.Println(match.ExternalID) + match.LeagueName = result["leagueName"].(string) + match.Date = result["matchDateTime"].(time.Time) + fmt.Println(*match) + if team1, ok := result["team1"].(map[string]interface{}); ok { - if name, ok := team1["teamName"].(string); ok { + if name, ok := team1["shortName"].(string); ok { match.Location = name } } + + if team1, ok := result["team1"].(map[string]interface{}); ok { + if name, ok := team1["teamName"].(string); ok { + if name != "VfB Stuttgart" { + match.Opponenent = name + } + } + } if team2, ok := result["team2"].(map[string]interface{}); ok { if name, ok := team2["teamName"].(string); ok { if name == "VfB Stuttgart" { match.AwayMatch = true + } else { + match.AwayMatch = false + match.Opponenent = name } } } - service.CreateMatch(&match) + fmt.Println(&matches) + matches = append(matches, match) } + return matches } diff --git a/src/highlanderticketing/main.go b/src/highlanderticketing/main.go index 28adca4..d63e2b4 100644 --- a/src/highlanderticketing/main.go +++ b/src/highlanderticketing/main.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "net/http" "os" @@ -8,6 +9,7 @@ import ( "github.com/joho/godotenv" "github.com/nats-io/nats.go" log "github.com/sirupsen/logrus" + "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/api" "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/db" "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/handler" "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/service" @@ -17,9 +19,10 @@ func main() { /*service.DeleteAllUsers() var userArray []model.User userArray, _ = service.GetAllUsers() - fmt.Println(userArray) + fmt.Println(userArray)*/ service.DeleteAllMatches() - api.GetMatchesOfApiToDb("https://api.openligadb.de/getmatchesbyteamid/16/5/0")*/ + matches := api.GetMatchesOfApi("https://api.openligadb.de/getmatchesbyteamid/16/10/0") + fmt.Println(&matches) if err := godotenv.Load(".env"); err != nil { log.Fatalf("Error loading .env file") diff --git a/src/highlanderticketing/model/match.go b/src/highlanderticketing/model/match.go index 6897487..77b7975 100644 --- a/src/highlanderticketing/model/match.go +++ b/src/highlanderticketing/model/match.go @@ -1,17 +1,22 @@ package model import ( + "time" + "go.mongodb.org/mongo-driver/bson/primitive" ) type Match struct { ID primitive.ObjectID `bson:"_id, omitempty"` + ExternalID int64 `bson:"externalID"` InitialTicketAmount int32 `bson:"initial_ticket_amount"` AvailableTicketAmount int32 `bson:"available_ticket_amount"` + Opponenent string `bson:"opponent"` + LeagueName string `bson:"league_name"` AwayMatch bool `bson:"away_match"` Location string `bson:"location"` - Date string `bson:"date, omitempty"` - OrderAmount int32 `bson:"orderamount, omitempty"` + Date time.Time `bson:"date"` + OrderAmount int32 `bson:"orderamount"` Orders []Order `bson:"orders"` } diff --git a/src/highlanderticketing/service/order.go b/src/highlanderticketing/service/order.go index 63a8729..d43f227 100644 --- a/src/highlanderticketing/service/order.go +++ b/src/highlanderticketing/service/order.go @@ -16,7 +16,7 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error { filter := bson.D{primitive.E{Key: "_id", Value: matchID}} order.ID = primitive.NewObjectID() matchToFind := &model.Match{} - emailContent := model.EmialContent{Name: order.User.Name, AwayMatch: matchToFind.AwayMatch, Location: matchToFind.Location, Date: matchToFind.Date, Emailadress: order.User.Email, OrderID: matchToFind.ID.String()} + emailContent := model.EmialContent{Name: order.User.Name, AwayMatch: matchToFind.AwayMatch, Location: matchToFind.Location, Date: matchToFind.Date.String(), Emailadress: order.User.Email, OrderID: matchToFind.ID.String()} updater := bson.D{primitive.E{Key: "$push", Value: bson.D{ primitive.E{Key: "orders", Value: order}, @@ -162,7 +162,7 @@ func CancelOrder(matchID primitive.ObjectID, order *model.Order) error { natsServer, err := ConnectToNats() defer natsServer.Nc.Close() - emailContent := model.EmialContent{Name: order.User.Name, AwayMatch: matchToFind.AwayMatch, Location: matchToFind.Location, Date: matchToFind.Date, Emailadress: order.User.Email, OrderID: order.ID.String()} + emailContent := model.EmialContent{Name: order.User.Name, AwayMatch: matchToFind.AwayMatch, Location: matchToFind.Location, Date: matchToFind.Date.String(), Emailadress: order.User.Email, OrderID: order.ID.String()} if err := natsServer.ConfirmCancel(&emailContent); err != nil { return fmt.Errorf("error sending confirm email %v", err) } else { -- GitLab