/// <summary> /// Reads the users from the file async /// </summary> /// <param name="path"></param> /// <returns></returns> public static async Task <List <User> > GetUsersAsync(string path) { using (_userEngineAsync.BeginReadFile(path)) { List <Task <User> > tasks = new List <Task <User> >(); UsersFactory factory = new UsersFactory(); foreach (var i in _userEngineAsync) { tasks.Add(Task.Run(() => factory.CreateUser(i.ID, i.FirstName, i.LastName, i.Email, i.Gender, i.Country, i.City, i.Street, i.PhoneNumber))); } _userEngineAsync.Close(); return(new List <User>(await Task.WhenAll(tasks))); } }
/// <summary> /// Adds a new user to the list and opens the editing window to update it's information /// </summary> private void AddUserToList() { UsersFactory factory = new UsersFactory(); var usersCollection = new ObservableCollection <User>() { factory.CreateUser(CalculateID()) }; EditUserWindow editUserWindow = new EditUserWindow(usersCollection, true); editUserWindow.ShowDialog(); if ((bool)editUserWindow.DialogResult) //Check if the resault from the window is ture if so add the user to the list { UserList.Add(editUserWindow.ViewModel.UsersToEdit[0]); ChangesToList = true; } }
/// <summary> /// Gets the user list from a csv file /// </summary> /// <param name="path">The path to the file</param> /// <returns>list of users</returns> public static List <User> GetUsers(string path) { try { var records = _userEngine.ReadFile(path); List <User> userlist = new List <User>(); UsersFactory factory = new UsersFactory(); foreach (UserEngine user in records) { userlist.Add(factory.CreateUser(user.ID, user.FirstName, user.LastName, user.Email, user.Gender, user.Country, user.City, user.Street, user.PhoneNumber)); } return(userlist); } catch (ArgumentException e) { throw new ArgumentException(e.Message); } }
/// <summary> /// Method used for opening the edit user dialog used to edit selected items from an observable collection given /// </summary> /// <param name="obj"></param> private void EditUser(IList <object> obj) { var factory = new UsersFactory(); List <User> temp = new List <User>(); foreach (var item in obj) { temp.Add(item as User); } //Creat copies of the selected items list ObservableCollection <User> usersToEdit = new ObservableCollection <User>(temp.ConvertAll(user => factory.CreateUser(user))); ObservableCollection <User> copyForLater = new ObservableCollection <User>(temp.ConvertAll(user => factory.CreateUser(user))); EditUserWindow window = new EditUserWindow(usersToEdit, false); if (window.ShowDialog() == true) { foreach (var item in copyForLater) { UserList.Remove(item); } foreach (var item in window.ViewModel.UsersToEdit) { UserList.Add(item); } UserList = new ObservableCollection <User>(UserList.OrderBy(i => i)); //sort the list in order to place the new user in correct index UserListView = (ListCollectionView)CollectionViewSource.GetDefaultView(UserList); // refresh the collection view to allow sorting and filtering ChangesToList = true; } }