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 } } }
public void RenderMembersSearchResult() { this.objectListView_Members.SetObjects( MemberList ); IDictionary <string, List <MemberListViewItemModel> > grouped = this.MemberList.GroupBy(s => s.Email).ToDictionary(s => s.Key, s => s.ToList()); this.label_TextSearchMembersCount.Text = grouped.Keys.Count.ToString(); int result = 0; foreach (string key in grouped.Keys) { IList <MemberListViewItemModel> items = grouped[key]; int itemWithPathCount = items.Count(c => !string.IsNullOrEmpty(c.Path)); if (itemWithPathCount > 0) { result += itemWithPathCount; } } this.label_TextSearchResultTotalCount.Text = result.ToString(); this.label_TextSearchMembersCount.Update(); this.label_TextSearchResultTotalCount.Update(); foreach (Object item in this.objectListView_Members.Objects) { MemberListViewItemModel model = item as MemberListViewItemModel; if (model != null) { if (string.IsNullOrEmpty(model.Path)) { this.objectListView_Members.RemoveObject(item); } } } }
public bool LoadInputFile(IProvisioningModel model, IMainPresenter presenter) { bool loaded = true; try { FileInfo fInfo = new FileInfo(model.InputFilePath); if (fInfo.Exists) { // try load. model.Members.Clear(); CsvConfiguration config = new CsvConfiguration() { HasHeaderRecord = false }; using (CsvReader reader = new CsvReader(new StreamReader(fInfo.FullName), config)) { while (reader.Read()) { try { MemberListViewItemModel lvItem = new MemberListViewItemModel() { Email = reader.GetField<string>(0), FirstName = reader.GetField<string>(1), LastName = reader.GetField<string>(2), IsChecked = true }; model.Members.Add(lvItem); } catch { throw new InvalidDataException(ErrorMessages.INVALID_CSV_DATA); } } if (model.Members.Any()) { loaded = true; } } } else { throw new InvalidDataException(ErrorMessages.MISSING_CSV_FILE); } } catch (Exception e) { // error message. SyncContext.Post(delegate { presenter.ShowErrorMessage(e.Message, ErrorMessages.DLG_DEFAULT_TITLE); presenter.UpdateProgressInfo(""); presenter.ActivateSpinner(false); presenter.EnableControl(true); }, null); } return loaded; }
private void SearchMembersGetUsage(IProvisioningModel model) { string UserAccessToken = ApplicationResource.DefaultAccessToken; if (!string.IsNullOrEmpty(UserAccessToken)) { MemberServices serviceUsage = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); serviceUsage.GetUsageUrl = ApplicationResource.ActionGetUsage; List<string[]> members = new List<string[]>(); MemberServices service = new MemberServices(ApplicationResource.BaseUrl, ApplicationResource.ApiVersion); service.ListMembersUrl = ApplicationResource.ActionListMembers; service.UserAgentVersion = ApplicationResource.UserAgent; IDataResponse response = service.ListMembers(new MemberData() { SearchLimit = ApplicationResource.SearchDefaultLimit }, UserAccessToken); if (response.StatusCode == HttpStatusCode.OK) { if (response.Data != null) { string data = response.Data.ToString(); dynamic jsonData = JsonConvert.DeserializeObject<dynamic>(data); // clear existing data first model.Members.Clear(); int resultCount = jsonData["members"].Count; for (int i = 0; i < resultCount; i++) { dynamic emailObj = jsonData["members"][i]["profile"]["email"]; dynamic firstNameObj = jsonData["members"][i]["profile"]["name"]["given_name"]; dynamic lastNameObj = jsonData["members"][i]["profile"]["name"]["surname"]; dynamic idObj = jsonData["members"][i]["profile"]["team_member_id"]; string teamId = idObj.Value as string; string email = emailObj.Value as string; string firstName = firstNameObj.Value as string; string lastName = lastNameObj.Value as string; IDataResponse responseUsage = serviceUsage.GetUsage(new MemberData() { MemberId = teamId }, UserAccessToken); UInt64 used = 0; if (responseUsage.StatusCode == HttpStatusCode.OK) { if (responseUsage.Data != null) { string dataUsage = responseUsage.Data.ToString(); dynamic jsonDataUsage = JsonConvert.DeserializeObject<dynamic>(dataUsage); used = jsonDataUsage["used"]; } } // update model MemberListViewItemModel lvItem = new MemberListViewItemModel() { Email = email, MemberId = teamId, FirstName = firstName, LastName = lastName, Usage = FileUtil.FormatFileSizeMB(used) }; model.Members.Add(lvItem); } //if the memberID count is above limit - default 1000 we need to grab the cursor and call continue bool hasMore = jsonData["has_more"]; string cursor = jsonData["cursor"]; while (hasMore) { service.ListMembersContinuationUrl = ApplicationResource.ActionListMembersContinuation; IDataResponse responseCont = service.ListMembersContinuation(new MemberData() { Cursor = cursor }, UserAccessToken); string dataCont = responseCont.Data.ToString(); dynamic jsonDataCont = JsonConvert.DeserializeObject<dynamic>(dataCont); int resultContCount = jsonDataCont["members"].Count; for (int i = 0; i < resultContCount; i++) { dynamic emailObj = jsonDataCont["members"][i]["profile"]["email"]; dynamic firstNameObj = jsonDataCont["members"][i]["profile"]["name"]["given_name"]; dynamic lastNameObj = jsonDataCont["members"][i]["profile"]["name"]["surname"]; dynamic idObj = jsonData["members"][i]["profile"]["team_member_id"]; string teamId = idObj.Value as string; string email = emailObj.Value as string; string firstName = firstNameObj.Value as string; string lastName = lastNameObj.Value as string; IDataResponse responseUsage = serviceUsage.GetUsage(new MemberData() { MemberId = teamId }, UserAccessToken); decimal used = 0; if (responseUsage.StatusCode == HttpStatusCode.OK) { if (responseUsage.Data != null) { string dataUsage = responseUsage.Data.ToString(); dynamic jsonDataUsage = JsonConvert.DeserializeObject<dynamic>(dataUsage); used = jsonDataUsage["used"]; } } // update model MemberListViewItemModel lvItem = new MemberListViewItemModel() { Email = email, MemberId = teamId, FirstName = firstName, LastName = lastName, Usage = FileUtil.FormatFileSizeMB(used) }; model.Members.Add(lvItem); } hasMore = jsonDataCont["has_more"]; cursor = jsonDataCont["cursor"]; } } } } }
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); }