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