using ToolKit; using Model; using System.Collections.ObjectModel; using System.Windows.Input; using System.Data.Common; namespace Wrapper { public class BooksViewModel : BaseViewModel { public Manager Manager { get; set; } public RelayCommand LoadBooks { get; private set; } /* public ReadOnlyObservableCollection Books { get; private set; } private readonly List books;*/ public ObservableCollection Books = new ObservableCollection(); public ObservableCollection GroupBooks { get; private set; } = new ObservableCollection(); public BooksViewModel(ILibraryManager libraryManager,IUserLibraryManager userLibraryManager) { Manager = new Manager(libraryManager, userLibraryManager); LoadBooks = new RelayCommand(o => LoadBooksFromManager()); Count = 7; LoadBooksFromManager(); } private void UpdateGroupBooks() { GroupBooks.Clear(); foreach (Book book in Books) { if (book.Authors.Count != 0) { foreach (Author author in book.Authors) { Console.WriteLine(author.Name); int find = -1; for (int i = 0; i < GroupBooks.Count(); i++) { if (GroupBooks[i].Author == author.Name) { find = i; break; } } Console.WriteLine("l - 55"); if (find != -1) { Console.WriteLine("l - 58"); GroupBooks[find].Add(book); } else { Console.WriteLine("l - 63"); GroupBooks.Add(new GroupBooks(author.Name, new List { book })); } } } else { int index = -1; for ( int i = 0; i < GroupBooks.Count(); i++) { if (GroupBooks[i].Author == "Inconnu") { index = i; break; } } if (index == -1) { GroupBooks.Add(new GroupBooks("Inconnu", new List { book })); } else { GroupBooks[index].Add(book); } } } Console.WriteLine(GroupBooks.Count); } private void LoadBooksFromManager() { var result = Manager.GetBooksFromCollection(index,count,""); if (result.Result.books.Count() == 0 ) { return ; } Books.Clear(); foreach (Book book in result.Result.books) { Books.Add(book); } NbBook = result.Result.count; UpdateGroupBooks(); } public int Index { get { return index; } private set { setProperty(ref index, value); } } private int index ; public int Count { get { return count; } private set { setProperty(ref count, value); } } private int count; public long NbBook { get { return nbBook; } private set { setProperty(ref nbBook, value); } } private long nbBook; } }