datawriter/internal/api/reserveproducts.go
2025-07-19 19:27:47 +02:00

55 lines
1.2 KiB
Go

package api
import (
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"github.com/google/uuid"
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/database"
)
func GetProductReservationApiHandleFunc(nps *database.ProductService) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
return
}
defer r.Body.Close()
data, err := io.ReadAll(r.Body)
if err != nil {
log.Println(err)
return
}
var payload database.Container
err = json.Unmarshal(data, &payload)
if err != nil {
log.Printf("Could not parse Json: %s", err)
return
}
groupId := uuid.New().String()
result, err := nps.FetchReservationData(&payload, database.UUID(groupId))
if err != nil {
//Todo Fehlerhandling
log.Println(err)
}
if len(result) == 0 {
w.WriteHeader(http.StatusNoContent)
fmt.Fprintln(w)
return
}
_, err = nps.ReserviereBestellungen(result, database.UUID(groupId))
if err != nil {
log.Println(err)
}
jsonResult, err := json.Marshal(result[0])
if err != nil {
log.Println(err)
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
fmt.Fprintln(w, string(jsonResult))
}
}