private bool SearchFiles( IMemberServices service, string memberId, ITextSearchModel model, string email, IMainPresenter presenter) { bool filesAdded = false; bool SuppressStatus = ApplicationResource.SuppressFilenamesInStatus; try { service.SearchFilesUrl = ApplicationResource.ActionFileSearch; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.SearchFiles(new MemberData() { SearchText = model.QueryString, SearchLimit = ApplicationResource.SearchFileCountLimit,//model.SearchResultsLimit, SearchMode = model.GetSearchModeForService(), MemberId = memberId }, model.AccessToken); if (response.StatusCode == System.Net.HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonDataSearch = JsonConvert.DeserializeObject<dynamic>(data); if (jsonDataSearch["matches"] != null && jsonDataSearch["matches"].ToString() != "[]") { int matchCount = jsonDataSearch["matches"].Count; for (int j = 0; j < matchCount; j++) { string pathLower = jsonDataSearch["matches"][j]["metadata"]["path_lower"]; // update model MemberListViewItemModel item = new MemberListViewItemModel() { Email = email, Path = pathLower, MemberId = memberId }; // add searched members to list. model.MemberList.Add(item); SyncContext.Post(delegate { if (!SuppressStatus) { presenter.UpdateProgressInfo(string.Format("Member: {0} File : {1}", email, item.Path)); } else { presenter.UpdateProgressInfo(string.Format("Member: {0} File : Suppressing filename status...", email)); } }, null); } if (matchCount > 0) { filesAdded = true; } } } } } catch (Exception e) { Console.WriteLine(e.Message); } return filesAdded; }
private void SearchMembers(ITextSearchModel model) { if (!string.IsNullOrEmpty(model.QueryString) && !string.IsNullOrEmpty(model.AccessToken)) { MemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListMembersUrl = ApplicationResource.ActionListMembers; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListMembers(new MemberData() { SearchLimit = model.SearchResultsLimit }, model.AccessToken); IMainPresenter presenter = SimpleResolver.Instance.Get<IMainPresenter>(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject<dynamic>(data); // clear existing data first model.MemberList.Clear(); int resultCount = jsonData["members"].Count; for (int i = 0; i < resultCount; i++) { dynamic idObj = jsonData["members"][i]["profile"]["team_member_id"]; dynamic emailObj = jsonData["members"][i]["profile"]["email"]; string memberId = idObj.Value as string; string email = emailObj.Value as string; // update model MemberListViewItemModel lvItem = new MemberListViewItemModel() { Email = email, MemberId = memberId }; // perform file search if (!SearchFiles(service, memberId, model, email, presenter)) { model.MemberList.Add(lvItem); } SyncContext.Post(delegate { presenter.UpdateProgressInfo(string.Format("Searching Content(s) From : {0}", email)); }, null); } } } else { // TODO: Report error } } }