func (sc *ServiceControllerImpl) recent(w http.ResponseWriter, r *http.Request) { services := new(models.Services) if err := services.FindMostRecent(3, sc.database.Get(r)); err != nil { sc.renderer.JSON(w, http.StatusInternalServerError, map[string]string{ "error": err.Error(), }) return } sc.renderer.JSON(w, http.StatusOK, services) }
func (ac *AccountControllerImpl) services(w http.ResponseWriter, r *http.Request) { user := ac.currentUser.Get(r) if user == nil { ac.renderer.JSON(w, http.StatusUnauthorized, map[string]string{ "error": "Must be logged in to view this page", }) } var limit int var err error if limit, err = strconv.Atoi(r.FormValue("limit")); err != nil { limit = 11 } if limit > 50 { limit = 50 } var skip int if skip, err = strconv.Atoi(r.FormValue("skip")); err != nil { skip = 0 } var total int codes := new(models.ReferralCodes) if total, err = codes.FindByUserID(user.ID, limit, skip, ac.database.Get(r)); err != nil { ac.renderer.JSON(w, http.StatusInternalServerError, map[string]string{ "error": "There was an issue fetching codes from the database", }) } var serviceIDs []bson.ObjectId for _, code := range []models.ReferralCode(*codes) { serviceIDs = append(serviceIDs, code.ServiceID) } services := new(models.Services) if err = services.FindByIDs(serviceIDs, ac.database.Get(r)); err != nil { ac.renderer.JSON(w, http.StatusInternalServerError, map[string]string{ "error": "There was an issue fetching services from the database", }) } ac.renderer.JSON(w, http.StatusOK, serviceFetchResult{services, total}) }
func (sc *SearchControllerImpl) get(w http.ResponseWriter, r *http.Request) (searchResult, error) { services := new(models.Services) query := r.FormValue("q") if query == "" { return searchResult{services, 0}, nil } var limit int var err error if limit, err = strconv.Atoi(r.FormValue("limit")); err != nil { limit = 11 } if limit > 50 { limit = 50 } var skip int if skip, err = strconv.Atoi(r.FormValue("skip")); err != nil { skip = 0 } var total int db := sc.database.Get(r) if total, err = services.FindRelevant(query, limit, skip, db); err != nil { return searchResult{}, errors.New("Database error: " + err.Error()) } var userID bson.ObjectId if user := sc.currentUser.Get(r); user != nil { userID = user.ID } analytics := new(models.Analytics) analytics.AddSearch(query, limit, userID, db) return searchResult{services, total}, nil }