parcoursmob/servers/web/application/members.go

72 lines
2.1 KiB
Go

package application
import (
"fmt"
"net/http"
"github.com/gorilla/mux"
"github.com/rs/zerolog/log"
)
func (h *Handler) MembersListHTTPHandler() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
result, err := h.applicationHandler.GetMembers(r.Context())
if err != nil {
log.Error().Err(err).Msg("error retrieving members")
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
h.renderer.MembersList(w, r, result.Accounts, result.CacheID, result.GroupsNames)
}
}
func (h *Handler) MemberDisplayHTTPHandler() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
memberID := vars["adminid"]
result, err := h.applicationHandler.GetMemberData(r.Context(), memberID)
if err != nil {
log.Error().Err(err).Msg("error retrieving member data")
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
h.renderer.MemberDisplay(w, r, result.Account, result.GroupsNames)
}
}
func (h *Handler) MemberUpdateHTTPHandler() http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
memberID := vars["adminid"]
if r.Method == "POST" {
firstName := r.PostFormValue("first_name")
lastName := r.PostFormValue("last_name")
email := r.PostFormValue("email")
phoneNumber := r.PostFormValue("phone_number")
gender := r.PostFormValue("gender")
updatedMemberID, err := h.applicationHandler.UpdateMember(r.Context(), memberID, firstName, lastName, email, phoneNumber, gender)
if err != nil {
log.Error().Err(err).Msg("error updating member")
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
http.Redirect(w, r, fmt.Sprintf("/app/members/%s", updatedMemberID), http.StatusFound)
return
}
result, err := h.applicationHandler.GetMember(r.Context(), memberID)
if err != nil {
log.Error().Err(err).Msg("error retrieving member for update")
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
h.renderer.MemberUpdate(w, r, result.Account)
}
}