From 7460987d494e615c8e2eb841149b48671ddb79be Mon Sep 17 00:00:00 2001
From: Yege1893 <yannick.ege@web.de>
Date: Sun, 9 Jul 2023 16:35:50 +0200
Subject: [PATCH] cancel running

---
 src/highlanderticketing/handler/order.go | 10 +++++----
 src/highlanderticketing/service/nats.go  |  4 ++--
 src/highlanderticketing/service/order.go | 26 ++++++++++++++++++++++++
 3 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/src/highlanderticketing/handler/order.go b/src/highlanderticketing/handler/order.go
index 4bcef0f..19c0be0 100644
--- a/src/highlanderticketing/handler/order.go
+++ b/src/highlanderticketing/handler/order.go
@@ -69,7 +69,9 @@ func CancelOrder(w http.ResponseWriter, r *http.Request) {
 		http.Error(w, err.Error(), http.StatusBadRequest)
 		return
 	}
-	order, err := getOrder(r)
+	fmt.Println(orderId, "orderid")
+	order, err := service.GetOrderById(orderId)
+	fmt.Println("order ", order)
 	if err != nil {
 		http.Error(w, err.Error(), http.StatusBadRequest)
 		return
@@ -89,9 +91,9 @@ func CancelOrder(w http.ResponseWriter, r *http.Request) {
 		log.Errorf("Failure loading internal user Info %v", err)
 		http.Error(w, err.Error(), http.StatusInternalServerError)
 	}
-	order.User = *internalUser
-	order.ID = orderId
-	fmt.Println(orderId, "orderId")
+	if order.User != *internalUser {
+		sendJson(w, "user is not allowed to cancel this order")
+	}
 
 	err = service.CancelOrder(id, order)
 	if err != nil {
diff --git a/src/highlanderticketing/service/nats.go b/src/highlanderticketing/service/nats.go
index 23a4c5c..d4c7e37 100644
--- a/src/highlanderticketing/service/nats.go
+++ b/src/highlanderticketing/service/nats.go
@@ -60,7 +60,7 @@ func (s NatsServer) ConfirmCancel(e *model.EmialContent) error {
 		fmt.Println(errMarshal)
 		return fmt.Errorf(errMarshal.Error())
 	}
-	response, err := s.Nc.Request("confirmOrder."+string(e.OrderID), []byte(emailContenct), 2*time.Second)
+	response, err := s.Nc.Request("confirmCancel."+string(e.OrderID), []byte(emailContenct), 2*time.Second)
 	if err != nil {
 		log.Println("Error making NATS request:", err)
 		return fmt.Errorf(err.Error())
@@ -70,6 +70,6 @@ func (s NatsServer) ConfirmCancel(e *model.EmialContent) error {
 		return fmt.Errorf(err.Error())
 	}
 
-	fmt.Println("hier die nats response", &res)
+	fmt.Println("hier die nats response", *res)
 	return nil
 }
diff --git a/src/highlanderticketing/service/order.go b/src/highlanderticketing/service/order.go
index fca41f4..63a8729 100644
--- a/src/highlanderticketing/service/order.go
+++ b/src/highlanderticketing/service/order.go
@@ -2,6 +2,7 @@ package service
 
 import (
 	"context"
+	"errors"
 	"fmt"
 
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/db"
@@ -179,6 +180,31 @@ func CancelOrder(matchID primitive.ObjectID, order *model.Order) error {
 
 }
 
+func GetOrderById(orderID primitive.ObjectID) (*model.Order, error) {
+	client, err := db.GetMongoClient()
+	if err != nil {
+		return nil, err
+	}
+	collection := client.Database(db.DB).Collection(db.MATCHES)
+
+	filter := bson.M{"orders._id": orderID}
+
+	var result model.Match
+
+	err = collection.FindOne(context.TODO(), filter).Decode(&result)
+	if err != nil {
+		return nil, err
+	}
+
+	for _, order := range result.Orders {
+		if order.ID == orderID {
+			return &order, nil
+		}
+	}
+
+	return nil, errors.New("Order not found")
+}
+
 func deleteOrder(matchID primitive.ObjectID, orderID primitive.ObjectID) error {
 	filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
 	updater := bson.D{primitive.E{Key: "$pull", Value: bson.D{
-- 
GitLab