using ToolKit; using Model; using System.Collections.ObjectModel; using System.Windows.Input; using System.Data.Common; namespace Wrapper { public class BooksViewModel : BaseViewModel { IUserLibraryManager UserLibraryManager { get; set; } public WorkOnListBooks WorkOnListBooks { get; set; } // Commandes public RelayCommand LoadBooks { get; private set; } public RelayCommand LoadBooksLoan { get; private set; } public RelayCommand LoadBooksToBeRead { get; private set; } public RelayCommand LoadBooksFavorite { get; private set; } // Liste de books public ObservableCollection Books = new ObservableCollection(); public ObservableCollection GroupBooks { get; private set; } = new ObservableCollection(); // ------------------------------------------------------------------------------// 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 BooksViewModel(IUserLibraryManager userLibraryManager,WorkOnListBooks workOnListBooks) { this.UserLibraryManager = userLibraryManager; this.WorkOnListBooks = workOnListBooks; LoadBooks = new RelayCommand(o => LoadBooksFonction()); LoadBooksLoan = new RelayCommand(o => LoadBooksLoanFonction()); LoadBooksToBeRead = new RelayCommand(o => LoadBooksToBeReadFonction()); LoadBooksFavorite = new RelayCommand(o => LoadBooksFavoriteFonction()); InitiateParam(); } private void InitiateParam() { Index = 0; Count = 6; } // All books private void LoadBooksFonction() { var result = UserLibraryManager.GetBooksFromCollection(index,count,""); if (result.Result.Item2.Count() == 0 ) { return ; } Books.Clear(); foreach (Book book in result.Result.Item2) { Books.Add(book); } List groupeBook = WorkOnListBooks.UpdateGroupBooks(Books.ToList()); if (groupeBook.Count > 0) { GroupBooks.Clear(); foreach (GroupBooks groupeBookUnique in groupeBook) { GroupBooks.Add(groupeBookUnique); } } } // Loan Books private void LoadBooksLoanFonction() { var result = UserLibraryManager.GetPastLoans(index, count); if (result.Result.Item2.Count() == 0) { return; } Books.Clear(); foreach (Loan loan in result.Result.Item2) { Books.Add(loan.Book); } List loanGroupBooks = WorkOnListBooks.UpdateGroupBooks(Books.ToList()); if (loanGroupBooks.Count > 0) { GroupBooks.Clear(); foreach (GroupBooks groupeBookUnique in loanGroupBooks) { GroupBooks.Add(groupeBookUnique); } } } // ToBeRead Books private void LoadBooksToBeReadFonction() { var result = UserLibraryManager.GetBooksFromCollection(index,count, ""); if (result.Result.Item2.Count() == 0) { return; } Books.Clear(); GroupBooks.Clear(); foreach (Book book in result.Result.Item2) { if (book.Status == Status.ToBeRead) { Books.Add(book); } } List groupeBook = WorkOnListBooks.UpdateGroupBooks(Books.ToList()); if (groupeBook.Count > 0) { GroupBooks.Clear(); foreach (GroupBooks groupeBookUnique in groupeBook) { GroupBooks.Add(groupeBookUnique); } } } // Favorite Books private void LoadBooksFavoriteFonction() { var result = UserLibraryManager.GetFavoritesBooks(index, count); if (result.Result.Item2.Count() == 0) { return; } Books.Clear(); foreach (Book book in result.Result.Item2) { Books.Add(book); } List favoriteGroupBook = WorkOnListBooks.UpdateGroupBooks(Books.ToList()); if (favoriteGroupBook.Count > 0) { GroupBooks.Clear(); foreach (GroupBooks groupeBookUnique in favoriteGroupBook) { GroupBooks.Add(groupeBookUnique); } } } } }