Ejemplo n.º 1
0
        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);
            }
        }