55 lines
1.7 KiB
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)
|
|
}
|
|
} |