Skip to content
Snippets Groups Projects
Commit c517ada8 authored by Yege1893's avatar Yege1893
Browse files

matchorder handler / service

parent d02ca0a7
No related branches found
No related tags found
1 merge request!4Master
......@@ -18,7 +18,6 @@ const (
CONNECTIONSTRING = "mongodb://localhost:27017"
DB = "db_issue_manager"
MATCHES = "col_matches"
TRAVEL = "col_travel"
POOL_SIZE = 10 // Anzahl der Verbindungen im Pool
)
......
package db
func Fill_db() {
}
package handler
import (
"encoding/json"
"net/http"
log "github.com/sirupsen/logrus"
"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 AddMatchOrder(w http.ResponseWriter, r *http.Request) {
id, err := getID(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
order, err := getMatchOrder(r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
err = service.AddMatchOrder(id, order)
if err != nil {
log.Errorf("Failure adding donation to campaign with ID %v: %v", id, err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
sendJson(w, order)
}
func getMatchOrder(r *http.Request) (*model.Order, error) {
var order model.Order
err := json.NewDecoder(r.Body).Decode(&order)
if err != nil {
log.Errorf("Can't serialize request body to order struct: %v", err)
return nil, err
} else {
log.Infof("request body seralized to order struct")
log.Tracef("body seralized in struct order: %v", order)
}
return &order, nil
}
......@@ -24,6 +24,7 @@ func main() {
router.HandleFunc("/match/{id}", handler.GetMatchByID).Methods("GET")
router.HandleFunc("/match/{id}", handler.UpdateMatch).Methods("PUT")
router.HandleFunc("/match/{id}", handler.DeleteMatch).Methods("DELETE")
router.HandleFunc("/match/{id}/matchorder", handler.AddMatchOrder).Methods("POST")
if err := http.ListenAndServe(":8000", router); err != nil {
log.Fatal(err)
}
......
......@@ -11,26 +11,9 @@ type Match struct {
AvailableTicketAmount int32 `bson:"available_ticket_amount"`
AwayMatch bool `bson:"away_match"`
Location string `bson:"location"`
Date date.Date `bson:"date"`
Travel Travel `bson:"travel, omitempty"`
Date date.Date `bson:"date, omitempty"`
Travel Travel `bson:"travel"`
Orders []Order `bson:"orders"`
}
/*func calculateAmountDonated(matchID primitive.ObjectID) (int32, error) {
collection := client.Database("your_db").Collection("orders")
pipeline := []bson.M{
{"$match": bson.M{"match_id": matchID}},
{"$group": bson.M{"_id": nil, "totalAmount": bson.M{"$sum": "$amount"}}},
}
var result struct {
TotalAmount int32 `bson:"totalAmount"`
}
err := collection.Aggregate(context.TODO(), pipeline).Decode(&result)
if err != nil {
return 0, err
}
return result.TotalAmount, nil
}*/ // muss nach jedem update , erstellen gemacht werden , funktion anpassen
// muss nach jedem update , erstellen gemacht werden , funktion anpassen
......@@ -6,7 +6,7 @@ type Order struct {
ID primitive.ObjectID `bson:"_id, omitempty"`
OrderType OrderType `bson:"order_type"`
Amount int32 `bson:"amount"`
User User `bson:"user"`
User User `bson:"user, omitempty"`
}
type OrderType string
......
package model
import (
"go.mongodb.org/mongo-driver/bson/primitive"
"google.golang.org/genproto/googleapis/type/date"
)
type Travel struct {
ID uint
ID primitive.ObjectID `bson:"_id, omitempty"`
TravelType TravelType
InitialSeatAmount int32
AvailableSeatAmount int32
......
......@@ -13,6 +13,9 @@ import (
func CreateMatch(match *model.Match) error {
match.ID = primitive.NewObjectID()
match.Orders = []model.Order{}
match.Travel.ID = primitive.NewObjectID()
match.Travel.Orders = []model.Order{}
client, err := db.GetMongoClient()
if err != nil {
return err
......
......@@ -11,13 +11,9 @@ import (
)
// noch testen
func AddMatchOrder(matchID primitive.ObjectID, order model.Order) error {
existingMatch, err := GetMatchByID(matchID)
if existingMatch == nil || err != nil {
return err
}
func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
order.ID = primitive.NewObjectID()
updater := bson.D{primitive.E{Key: "$push", Value: bson.D{
primitive.E{Key: "orders", Value: order},
......@@ -41,23 +37,16 @@ func AddMatchOrder(matchID primitive.ObjectID, order model.Order) error {
return nil
}
/*func AddTravelOrder(travelID primitive.ObjectID, order model.Order) error {
existingTravel, err := GetTravelByID(travelID)
if existingTravel == nil || err != nil {
return err
}
filter := bson.D{primitive.E{Key: "_id", Value: travelID}}
func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
updater := bson.D{primitive.E{Key: "$push", Value: bson.D{
primitive.E{Key: "orders", Value: order},
}}}
updater := bson.M{"$push": bson.M{"travel.orders": order}}
client, err := db.GetMongoClient()
if err != nil {
return err
}
collection := client.Database(db.DB).Collection(db.TRAVEL)
collection := client.Database(db.DB).Collection(db.MATCHES)
updateResult, err := collection.UpdateOne(context.TODO(), filter, updater)
if err != nil {
......@@ -69,7 +58,7 @@ func AddMatchOrder(matchID primitive.ObjectID, order model.Order) error {
}
return nil
}*/
}
func UpdateOrder() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment