parcoursmob/servers/web/external/solidarity_transport.go

55 lines
1.7 KiB
Go

package external
import (
"net/http"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
"git.coopgo.io/coopgo-apps/parcoursmob/renderer"
)
func (h *Handler) SolidarityTransportExternalBookingProposalHTTPHandler() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
bookingId := vars["bookingid"]
// Get booking data
result, err := h.applicationHandler.GetSolidarityTransportBookingData(r.Context(), bookingId)
if err != nil {
log.Error().Err(err).Msg("could not get booking data")
w.WriteHeader(http.StatusBadRequest)
return
}
// Handle POST form submission
if r.Method == "POST" {
if err = r.ParseForm(); err != nil {
log.Error().Err(err).Msg("error parsing form data")
}
message := r.FormValue("message")
action := r.FormValue("action")
if action != "" {
err := h.applicationHandler.UpdateSolidarityTransportBookingStatus(r.Context(), bookingId, action, "Refusé par le bénévole", message, true)
if err != nil {
log.Error().Err(err).Msg("update booking status issue")
w.WriteHeader(http.StatusInternalServerError)
return
}
// Get updated booking data
result, err = h.applicationHandler.GetSolidarityTransportBookingData(r.Context(), bookingId)
if err != nil {
log.Error().Err(err).Msg("could not get updated booking data")
w.WriteHeader(http.StatusInternalServerError)
return
}
}
}
// Create renderer temporarily to maintain functionality
templates_root := h.cfg.GetString("templates.root")
renderer := renderer.NewRenderer(h.cfg, templates_root, h.filestorage)
renderer.SolidarityTransportExternalBookingDisplay(w, r, result.Booking, result.Driver, result.Passenger)
}
}