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) {
http.Error(w, err.Error(), http.StatusBadRequest)
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)
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)
return
}
......@@ -50,6 +61,17 @@ func AddTravelOrder(w http.ResponseWriter, r *http.Request) {
http.Error(w, err.Error(), http.StatusBadRequest)
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)
if err != nil {
log.Errorf("Failure adding donation to campaign with ID %v: %v", id, err)
......
......@@ -4,8 +4,10 @@ import (
"encoding/json"
"fmt"
"log"
"os"
"time"
"github.com/joho/godotenv"
"github.com/nats-io/nats.go"
"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model"
)
......@@ -14,6 +16,23 @@ type NatsServer struct {
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) {
var res *model.Response
emailContenct, errMarshal := json.Marshal(e)
......
......@@ -13,6 +13,7 @@ import (
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{}
updater := bson.D{primitive.E{Key: "$push", Value: bson.D{
primitive.E{Key: "orders", Value: order},
......@@ -24,6 +25,11 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
}
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)
if err != nil {
return err
......@@ -33,12 +39,19 @@ func AddMatchOrder(matchID primitive.ObjectID, order *model.Order) error {
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
}
func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
order.ID = primitive.NewObjectID()
matchToFind := model.Match{}
updater := bson.M{"$push": bson.M{"travel.orders": order}}
......@@ -48,6 +61,11 @@ func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
}
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)
if err != nil {
return err
......@@ -57,6 +75,12 @@ func AddTravelOrder(matchID primitive.ObjectID, order *model.Order) error {
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
}
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