From 2978693de044e8ed334663cb303ba4ebeab502f6 Mon Sep 17 00:00:00 2001
From: Emanuel <Emanuel.Petrinovic@Student.Reutlingen-University.DE>
Date: Mon, 14 Apr 2025 13:33:04 +0200
Subject: [PATCH] add campaigns POST

---
 src/myaktion/handler/campaign.go | 30 ++++++++++++++++++++++++++++++
 src/myaktion/main.go             |  1 +
 src/myaktion/service/campaign.go |  2 +-
 3 files changed, 32 insertions(+), 1 deletion(-)
 create mode 100644 src/myaktion/handler/campaign.go

diff --git a/src/myaktion/handler/campaign.go b/src/myaktion/handler/campaign.go
new file mode 100644
index 0000000..5caad3b
--- /dev/null
+++ b/src/myaktion/handler/campaign.go
@@ -0,0 +1,30 @@
+package handler
+
+import (
+	"encoding/json"
+	"log"
+	"net/http"
+
+	"gitlab.reutlingen-university.de/petrinov/myaktion-go/model"
+	"gitlab.reutlingen-university.de/petrinov/myaktion-go/service"
+)
+
+func CreateCampaign(w http.ResponseWriter, r *http.Request) {
+	var campaign model.Campaign
+	err := json.NewDecoder(r.Body).Decode(&campaign)
+	if err != nil {
+		log.Printf("Can't serialize request body to campaign struct: %v", err)
+		http.Error(w, err.Error(), http.StatusBadRequest)
+		return
+	}
+	if err := service.CreateCampaign(&campaign); err != nil {
+		log.Printf("Error calling service CreateCampaign: %v", err)
+		http.Error(w, err.Error(), http.StatusInternalServerError)
+		return
+	}
+	w.Header().Set("Content-Type", "application/json")
+	if err := json.NewEncoder(w).Encode(campaign); err != nil {
+		log.Printf("Failure encoding value to JSON: %v", err)
+		http.Error(w, err.Error(), http.StatusInternalServerError)
+	}
+}
diff --git a/src/myaktion/main.go b/src/myaktion/main.go
index 787e22e..2880dbf 100644
--- a/src/myaktion/main.go
+++ b/src/myaktion/main.go
@@ -12,6 +12,7 @@ func main() {
 	log.Println("Starting My-Aktion API server")
 	router := mux.NewRouter()
 	router.HandleFunc("/health", handler.Health).Methods("GET")
+	router.HandleFunc("/campagins", handler.CreateCampaign).Methods("POST")
 	if err := http.ListenAndServe(":8000", router); err != nil {
 		log.Fatal(err)
 	}
diff --git a/src/myaktion/service/campaign.go b/src/myaktion/service/campaign.go
index b911611..d8b4456 100644
--- a/src/myaktion/service/campaign.go
+++ b/src/myaktion/service/campaign.go
@@ -3,7 +3,7 @@ package service
 import (
 	"log"
 
-	model "gitlab.reutlingen-university.de/petrinov/myaktion-go/Model"
+	model "gitlab.reutlingen-university.de/petrinov/myaktion-go/model"
 )
 
 var (
-- 
GitLab