public InviteUsers() { InitializeComponent(); object hikeFriends; if (PhoneApplicationService.Current.State.TryGetValue("HIKE_FRIENDS", out hikeFriends)) { topHeader.Text = AppResources.Add_To_Fav_Txt; title.Text = AppResources.Hike_Friends_Text; enterNameTxt.Visibility = System.Windows.Visibility.Collapsed; _isAddToFavPage = true; } shellProgress.IsVisible = true; BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (s, e) => { if (_isAddToFavPage) { allContactsList = UsersTableUtils.GetAllHikeContactsOrdered(); } else { allContactsList = UsersTableUtils.getAllContactsToInvite(); } }; bw.RunWorkerAsync(); bw.RunWorkerCompleted += (s, e) => { if (_isAddToFavPage) { if (allContactsList == null || allContactsList.Count == 0) { emptyHikeFriendsTxt.Visibility = Visibility.Visible; } } jumpList = getGroupedList(allContactsList); contactsListBox.ItemsSource = jumpList; shellProgress.IsVisible = false; }; initPage(); }
public void ProcessNuxContacts(List<ContactInfo> listContact) { if (listContact != null && listContact.Count > 0 && listFamilyMembers != null && listCloseFriends != null) { Stopwatch st = Stopwatch.StartNew(); List<ContactInfo> listContactsFromDb = UsersTableUtils.getAllContactsToInvite(); st.Stop(); Debug.WriteLine("Time taken to fetch contacts to be invited :{0}", st.ElapsedMilliseconds); if (listContactsFromDb == null) listContactsFromDb = new List<ContactInfo>(); string lastName = GetLastName(); bool isLastNameCheckApplicable = lastName != null; st.Reset(); st.Start(); listContact.Sort(new ContactCompare()); st.Stop(); Debug.WriteLine("Time taken to sort :{0}", st.ElapsedMilliseconds); st.Reset(); st.Start(); Dictionary<string, ContactInfo> dictContactsInDb = new Dictionary<string, ContactInfo>(); foreach (ContactInfo cinfo in listContactsFromDb) { dictContactsInDb[cinfo.Name + cinfo.PhoneNo] = cinfo; } foreach (ContactInfo cn in listContact) { if (listCloseFriends.Count == 30 && listFamilyMembers.Count == 30) break; ContactInfo contactFromDb; if (!dictContactsInDb.TryGetValue(cn.Name + cn.PhoneNo, out contactFromDb)) continue; cn.Msisdn = contactFromDb.Msisdn; bool markedForNux = false; if (listFamilyMembers.Count < 30) { if (!string.IsNullOrEmpty(cn.Name)) { string[] nameArray = cn.Name.Trim().Split(' '); if (isLastNameCheckApplicable) { if (nameArray.Length > 1) { string curlastName = nameArray[nameArray.Length - 1]; if (curlastName.Equals(lastName, StringComparison.OrdinalIgnoreCase)) { listFamilyMembers.Add(cn); markedForNux = true; } } } if (!markedForNux && MatchFromFamilyVocab(nameArray)) { markedForNux = true; listFamilyMembers.Add(cn); } } } if (!markedForNux && listCloseFriends.Count < 30) { markedForNux = true; listCloseFriends.Add(cn); } } st.Stop(); Debug.WriteLine("Time fr nux scanning " + st.ElapsedMilliseconds); } }