package account import ( "net/http" "git.kirsle.net/apps/gosocial/pkg/config" "git.kirsle.net/apps/gosocial/pkg/models" "git.kirsle.net/apps/gosocial/pkg/session" "git.kirsle.net/apps/gosocial/pkg/templates" ) // Search controller. func Search() http.HandlerFunc { tmpl := templates.Must("account/search.html") return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Search filters. var ( isCertified = r.FormValue("certified") username = r.FormValue("username") // email or username gender = r.FormValue("gender") orientation = r.FormValue("orientation") maritalStatus = r.FormValue("marital_status") ) // Default if isCertified == "" { isCertified = "true" } pager := &models.Pagination{ PerPage: config.PageSizeMemberSearch, } pager.ParsePage(r) users, err := models.SearchUsers(&models.UserSearch{ EmailOrUsername: username, Gender: gender, Orientation: orientation, MaritalStatus: maritalStatus, Certified: isCertified == "true", }, pager) if err != nil { session.FlashError(w, r, "Couldn't search users: %s", err) } var vars = map[string]interface{}{ "Users": users, "Pager": pager, "Enum": config.ProfileEnums, // Search filter values. "Certified": isCertified, "Gender": gender, "Orientation": orientation, "MaritalStatus": maritalStatus, "EmailOrUsername": username, } if err := tmpl.Execute(w, r, vars); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } }) }