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) } }