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

automatic notifi by order

parent 113d9abb
No related branches found
No related tags found
1 merge request!4Master
...@@ -25,9 +25,20 @@ func AddMatchOrder(w http.ResponseWriter, r *http.Request) { ...@@ -25,9 +25,20 @@ func AddMatchOrder(w http.ResponseWriter, r *http.Request) {
http.Error(w, err.Error(), http.StatusBadRequest) http.Error(w, err.Error(), http.StatusBadRequest)
return return
} }
reqToken, err := getBearerToken(r)
if err != nil {
log.Errorf("Failure loading bearer token %v", err)
http.Error(w, err.Error(), http.StatusBadRequest)
}
userOfOrder, err := service.GetUserInfo(reqToken)
if err != nil {
log.Errorf("Failure loading user Info %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
}
order.User = userOfOrder
err = service.AddMatchOrder(id, order) err = service.AddMatchOrder(id, order)
if err != nil { if err != nil {
log.Errorf("Failure adding donation to campaign with ID %v: %v", id, err) log.Errorf("Failure adding order to match with ID %v: %v", id, err)
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
} }
...@@ -50,6 +61,17 @@ func AddTravelOrder(w http.ResponseWriter, r *http.Request) { ...@@ -50,6 +61,17 @@ func AddTravelOrder(w http.ResponseWriter, r *http.Request) {
http.Error(w, err.Error(), http.StatusBadRequest) http.Error(w, err.Error(), http.StatusBadRequest)
return return
} }
reqToken, err := getBearerToken(r)
if err != nil {
log.Errorf("Failure loading bearer token %v", err)
http.Error(w, err.Error(), http.StatusBadRequest)
}
userOfOrder, err := service.GetUserInfo(reqToken)
if err != nil {
log.Errorf("Failure loading user Info %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
}
order.User = userOfOrder
err = service.AddTravelOrder(id, order) err = service.AddTravelOrder(id, order)
if err != nil { if err != nil {
log.Errorf("Failure adding donation to campaign with ID %v: %v", id, err) log.Errorf("Failure adding donation to campaign with ID %v: %v", id, err)
......
...@@ -4,8 +4,10 @@ import ( ...@@ -4,8 +4,10 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"log" "log"
"os"
"time" "time"
"github.com/joho/godotenv"
"github.com/nats-io/nats.go" "github.com/nats-io/nats.go"
"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model" "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model"
) )
...@@ -14,6 +16,23 @@ type NatsServer struct { ...@@ -14,6 +16,23 @@ type NatsServer struct {
Nc *nats.Conn Nc *nats.Conn
} }
func ConnectToNats() (NatsServer, error) {
var natsServer NatsServer
if err := godotenv.Load(".env"); err != nil {
log.Fatalf("Error loading .env file")
}
uri := os.Getenv("NATS_URI")
nc, err := nats.Connect(uri)
if err != nil {
log.Fatal("Error establishing connection to NATS:", err)
return natsServer, err
}
natsServer.Nc = nc
fmt.Println("Connected to NATS at:", natsServer.Nc.ConnectedUrl())
return natsServer, nil
}
func (s NatsServer) ConfirmOrder(e *model.EmialContent) { func (s NatsServer) ConfirmOrder(e *model.EmialContent) {
var res *model.Response var res *model.Response
emailContenct, errMarshal := json.Marshal(e) emailContenct, errMarshal := json.Marshal(e)
......
...@@ -13,6 +13,7 @@ import ( ...@@ -13,6 +13,7 @@ import (
func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error { func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
filter := bson.D{primitive.E{Key: "_id", Value: matchID}} filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
order.ID = primitive.NewObjectID() order.ID = primitive.NewObjectID()
matchToFind := model.Match{}
updater := bson.D{primitive.E{Key: "$push", Value: bson.D{ updater := bson.D{primitive.E{Key: "$push", Value: bson.D{
primitive.E{Key: "orders", Value: order}, primitive.E{Key: "orders", Value: order},
...@@ -24,6 +25,11 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error { ...@@ -24,6 +25,11 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
} }
collection := client.Database(db.DB).Collection(db.MATCHES) collection := client.Database(db.DB).Collection(db.MATCHES)
err = collection.FindOne(context.TODO(), filter).Decode(&matchToFind)
if err != nil {
return err
}
updateResult, err := collection.UpdateOne(context.TODO(), filter, updater) updateResult, err := collection.UpdateOne(context.TODO(), filter, updater)
if err != nil { if err != nil {
return err return err
...@@ -33,12 +39,19 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error { ...@@ -33,12 +39,19 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
return fmt.Errorf("no document was updated") return fmt.Errorf("no document was updated")
} }
natsServer, err := ConnectToNats()
defer natsServer.Nc.Close()
emailContenct := model.EmialContent{Name: order.User.Name, AwayMatch: matchToFind.AwayMatch, Location: matchToFind.Location, Date: matchToFind.Date, Emailadress: order.User.Email, OrderID: matchToFind.ID.String()}
natsServer.ConfirmOrder(&emailContenct)
return nil return nil
} }
func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error { func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
filter := bson.D{primitive.E{Key: "_id", Value: matchID}} filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
order.ID = primitive.NewObjectID() order.ID = primitive.NewObjectID()
matchToFind := model.Match{}
updater := bson.M{"$push": bson.M{"travel.orders": order}} updater := bson.M{"$push": bson.M{"travel.orders": order}}
...@@ -48,6 +61,11 @@ func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error { ...@@ -48,6 +61,11 @@ func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
} }
collection := client.Database(db.DB).Collection(db.MATCHES) collection := client.Database(db.DB).Collection(db.MATCHES)
err = collection.FindOne(context.TODO(), filter).Decode(&matchToFind)
if err != nil {
return err
}
updateResult, err := collection.UpdateOne(context.TODO(), filter, updater) updateResult, err := collection.UpdateOne(context.TODO(), filter, updater)
if err != nil { if err != nil {
return err return err
...@@ -57,6 +75,12 @@ func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error { ...@@ -57,6 +75,12 @@ func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
return fmt.Errorf("no document was updated") return fmt.Errorf("no document was updated")
} }
natsServer, err := ConnectToNats()
defer natsServer.Nc.Close()
emailContenct := model.EmialContent{Name: order.User.Name, AwayMatch: matchToFind.AwayMatch, Location: matchToFind.Location, Date: matchToFind.Date, Emailadress: order.User.Email, OrderID: matchToFind.ID.String()}
natsServer.ConfirmOrder(&emailContenct)
return nil return nil
} }
func CancelOrder() { func CancelOrder() {
......
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