lot of new functionalities
This commit is contained in:
101
servers/web/application/group_module.go
Normal file
101
servers/web/application/group_module.go
Normal file
@@ -0,0 +1,101 @@
|
||||
package application
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"git.coopgo.io/coopgo-apps/parcoursmob/core/utils/identification"
|
||||
"git.coopgo.io/coopgo-platform/groups-management/storage"
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
func (h *Handler) GroupsHTTPHandler() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
result, err := h.applicationHandler.GetGroups(r.Context())
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("error getting groups")
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
h.renderer.Groups(w, r, result.Groups)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Handler) CreateGroupModuleHTTPHandler() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method == "POST" {
|
||||
r.ParseForm()
|
||||
|
||||
name := r.FormValue("name")
|
||||
groupType := r.FormValue("type")
|
||||
description := r.FormValue("description")
|
||||
address := r.PostFormValue("address")
|
||||
|
||||
result, err := h.applicationHandler.CreateGroupModule(r.Context(), name, groupType, description, address)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("error creating group module")
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
http.Redirect(w, r, "/app/group_module/groups/"+result.GroupID, http.StatusFound)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.applicationHandler.GetGroupModuleCreateData(r.Context())
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("error getting group module create data")
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
h.renderer.CreateGroupModule(w, r, result.GroupTypes)
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Handler) DisplayGroupModuleHTTPHandler() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
vars := mux.Vars(r)
|
||||
groupID := vars["groupid"]
|
||||
|
||||
if r.Method == "POST" || r.FormValue("beneficiaryid") != "" {
|
||||
r.ParseForm()
|
||||
beneficiaryID := r.FormValue("beneficiaryid")
|
||||
|
||||
err := h.applicationHandler.SubscribeBeneficiaryToGroup(r.Context(), groupID, beneficiaryID)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("error subscribing beneficiary to group")
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
http.Redirect(w, r, "/app/group_module/groups/"+groupID, http.StatusFound)
|
||||
return
|
||||
}
|
||||
|
||||
// Get current user's group from context
|
||||
g := r.Context().Value(identification.GroupKey)
|
||||
if g == nil {
|
||||
http.Error(w, "Bad Request", http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
currentUserGroup := g.(storage.Group)
|
||||
|
||||
// Parse search filter
|
||||
searchFilter := ""
|
||||
if searchFilters, ok := r.URL.Query()["search"]; ok && len(searchFilters) > 0 {
|
||||
searchFilter = searchFilters[0]
|
||||
}
|
||||
|
||||
result, err := h.applicationHandler.DisplayGroupModule(r.Context(), groupID, searchFilter, currentUserGroup)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("error displaying group module")
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
h.renderer.DisplayGroupModule(w, r, result.GroupID, result.Accounts, result.CacheID,
|
||||
result.Searched, result.Beneficiary, result.Group, result.AccountsBeneficiaire)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user