private void LoadPeopleList() { _peopleCollectionVM = new ObservableCollection <Person>(); XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection <Person>)); try { using (FileStream stream = new FileStream("People.xml", FileMode.Open)) { IEnumerable <Person> personData = (IEnumerable <Person>)serializer.Deserialize(stream); foreach (Person p in personData) { PeopleCollectionVM.Add(p); } } } catch (FileNotFoundException) { //file not found -> first launch of the application detected (or possible reset via removal of the 'People.xml') for (int i = 0; i < 50; i++) { _peopleCollectionVM.Add(new Person("a" + i, "b" + i, "a" + i + "@b.c", new DateTime(1960 + i, 03, 01))); } } catch (Exception ex) { //suppress other ex-s. //MessageBox.Show(ex.ToString()); } }
private async Task DeleteUser() { //call ui thread to modify the collection await App.Current.Dispatcher.BeginInvoke((Action) delegate { PeopleCollectionVM.Remove(SelectedPerson); }); }
private void MergePeople() { if (!(PeopleCollectionVMFilteredOut is null)) { PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Concat(PeopleCollectionVMFilteredOut).OrderBy(x => x.Name)); PeopleCollectionVMFilteredOut = null; } }
private async Task FilterUsers() { MergePeople(); switch (CurrentFilterType) { case "Name": PeopleCollectionVMFilteredOut = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => !x.Name.Contains(CurrentFilterText))); PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => x.Name.Contains(CurrentFilterText))); return; case "Surname": PeopleCollectionVMFilteredOut = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => !x.Surname.Contains(CurrentFilterText))); PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => x.Surname.Contains(CurrentFilterText))); return; case "Email": PeopleCollectionVMFilteredOut = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => !x.Email.Contains(CurrentFilterText))); PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => x.Email.Contains(CurrentFilterText))); return; case "Birth Date": PeopleCollectionVMFilteredOut = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => !x.BirthDate.ToString().Contains(CurrentFilterText))); PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => x.BirthDate.ToString().Contains(CurrentFilterText))); return; case "Is Adult": PeopleCollectionVMFilteredOut = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => !x.IsAdult.ToString().Contains(CurrentFilterText))); PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => x.IsAdult.ToString().Contains(CurrentFilterText))); return; case "Sun Sign": PeopleCollectionVMFilteredOut = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => !x.SunSign.Contains(CurrentFilterText))); PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => x.SunSign.Contains(CurrentFilterText))); return; case "Chinese Sign": PeopleCollectionVMFilteredOut = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => !x.ChineseSign.Contains(CurrentFilterText))); PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => x.ChineseSign.Contains(CurrentFilterText))); return; case "Has Birthday Today": PeopleCollectionVMFilteredOut = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => !x.IsBirthday.ToString().Contains(CurrentFilterText))); PeopleCollectionVM = new ObservableCollection <Person>(PeopleCollectionVM.Where(x => x.IsBirthday.ToString().Contains(CurrentFilterText))); return; default: return; } }
private void CheckEmail() { try { System.Net.Mail.MailAddress mailAddress = new System.Net.Mail.MailAddress(CurrentEmail); if (PeopleCollectionVM.Any(p => p.Email.Equals(CurrentEmail))) { throw new EmailException(); } } catch { //throw new EmailException("Please, enter existing email address."); throw new EmailException(); } }
private async Task CheckAndProceed() { //check try { CheckAge(); CheckEmail(); } catch (BirthDateException) { MessageBox.Show("This program works only for people born on 19.02.1901 (UKR locale) or later, up to today."); return; } catch (EmailException) { MessageBox.Show("Please, enter existing email address, which was not already added."); return; } //proceed if (DateTime.Now.Month.Equals(CurrentBirthDate.Month) && DateTime.Now.Day.Equals(CurrentBirthDate.Day)) { ResultBdNote = "Happy bd!"; } else { ResultBdNote = ""; } Person tmp = new Person(CurrentName, CurrentSurname, CurrentEmail, CurrentBirthDate); ResultName = tmp.Name; ResultSurname = tmp.Surname; ResultEmail = tmp.Email; ResultBirthDate = tmp.BirthDate.Value.ToLongDateString(); ResultIsAdult = tmp.IsAdult.ToString(); ResultSunSign = tmp.SunSign; ResultChineseSign = tmp.ChineseSign; ResultIsBirthday = tmp.IsBirthday.ToString(); //call ui thread to modify the collection await App.Current.Dispatcher.BeginInvoke((Action) delegate { PeopleCollectionVM.Add(tmp); }); }