// GET /api/Search public async Task <IHttpActionResult> Get(string keywords, int start = 0, int limit = 20) { var db = Request.GetOwinContext().Get <IlevusIdentityContext>(); var users = db.Users; var filter = GetSearchFilter(keywords); var opts = GetFindOptions(start, limit); var results = await users.FindAsync(filter, opts); var total = await users.CountAsync(filter); var publicUsers = new ConcurrentBag <PublicProfileViewModel>(); AssessmentController ctrl = new AssessmentController(); await results.ForEachAsync(async user => { var lista = await getAssessments(user.Id); publicUsers.Add(new PublicProfileViewModel(user, lista.Count, lista.Count > 0 ? (lista[0].MediaRating.HasValue ? lista[0].MediaRating.Value : 0) : 0)); }); var resp = new Dictionary <string, object>(); resp["data"] = publicUsers; resp["total"] = total; resp["success"] = true; return(Ok(resp)); }
private async Task <List <AssessmentModel> > getAssessments(string id) { var db = IlevusDBContext.Create(); var filters = Builders <AssessmentModel> .Filter; var collection = db.GeAssessmentsCollection(); var collectionUser = db.GetUsersCollection(); var filtersUsers = Builders <IlevusUser> .Filter; try { var result = await collection.FindAsync(filters.Eq("Avaliado", id)); var avaliacoes = await result.ToListAsync(); if (avaliacoes == null) { return(new List <AssessmentModel>()); } avaliacoes = AssessmentController.calculaMedia(avaliacoes); return(avaliacoes); } catch (Exception e) { return(new List <AssessmentModel>()); } }