You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

252 lines
8.0 KiB

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<string> LoadBooks { get; private set; }
public RelayCommand<string> LoadBooksLoan { get; private set; }
public RelayCommand<string> LoadBooksToBeRead { get; private set; }
public RelayCommand<string> LoadBooksFavorite { get; private set; }
public RelayCommand<string> LoadBooksByAuthor { get; private set; }
public RelayCommand<string> LoadBooksByYear { get; private set; }
public RelayCommand<string> LoadBooksByNote { get; private set; }
// Liste de books
public ObservableCollection<Book> Books = new ObservableCollection<Book>();
public ObservableCollection<GroupBooks> GroupBooks { get; private set; } = new ObservableCollection<GroupBooks>();
// ------------------------------------------------------------------------------//
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<string>(o => LoadBooksFonction());
LoadBooksLoan = new RelayCommand<string>(o => LoadBooksLoanFonction());
LoadBooksToBeRead = new RelayCommand<string>(o => LoadBooksToBeReadFonction());
LoadBooksFavorite = new RelayCommand<string>(o => LoadBooksFavoriteFonction());
LoadBooksByAuthor = new RelayCommand<string>(o => LoadBooksByAuthorFonction(o));
LoadBooksByYear = new RelayCommand<string>(o => LoadBooksByYearFonction(o));
LoadBooksByNote = new RelayCommand<string>(o => LoadBooksByNoteFonction(o));
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<GroupBooks> 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<GroupBooks> 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(0,((int)UserLibraryManager.GetBooksFromCollection(0,0).Result.Item1), "");
if (result.Result.Item2.Count() == 0) { return; }
Books.Clear();
GroupBooks.Clear();
foreach (Book book in result.Result.Item2)
{
Console.WriteLine(book.Title);
Console.WriteLine(book.Status.ToString());
if (book.Status == Status.ToBeRead)
{
Books.Add(book);
}
}
List<GroupBooks> 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,((int)UserLibraryManager.GetBooksFromCollection(0, 0).Result.Item1));
if (result.Result.Item2.Count() == 0) { return; }
Books.Clear();
foreach (Book book in result.Result.Item2)
{
Books.Add(book);
}
List<GroupBooks> favoriteGroupBook = WorkOnListBooks.UpdateGroupBooks(Books.ToList());
if (favoriteGroupBook.Count > 0)
{
GroupBooks.Clear();
foreach (GroupBooks groupeBookUnique in favoriteGroupBook)
{
GroupBooks.Add(groupeBookUnique);
}
}
}
// Books by author
private void LoadBooksByAuthorFonction(string author)
{
List<Book> result = UserLibraryManager.GetBooksByAuthorName(author).ToList();
if (result.Count == 0) { return; }
Books.Clear();
foreach (Book book in result)
{
Books.Add(book);
}
List<GroupBooks> GroupBook = WorkOnListBooks.UpdateGroupBooks(Books.ToList());
if (GroupBook.Count > 0)
{
GroupBooks.Clear();
foreach (GroupBooks groupeBookUnique in GroupBook)
{
GroupBooks.Add(groupeBookUnique);
}
}
}
// Books by Year
private void LoadBooksByYearFonction(string year)
{
List<Book> result = UserLibraryManager.GetBooksByYear(year).ToList();
if (result.Count == 0) { return; }
Books.Clear();
foreach (Book book in result)
{
Books.Add(book);
}
List<GroupBooks> GroupBook = WorkOnListBooks.UpdateGroupBooks(Books.ToList());
if (GroupBook.Count > 0)
{
GroupBooks.Clear();
foreach (GroupBooks groupeBookUnique in GroupBook)
{
GroupBooks.Add(groupeBookUnique);
}
}
}
private void LoadBooksByNoteFonction(string note)
{
List<Book> result = UserLibraryManager.GetBooksByNote(note).ToList();
if (result.Count == 0) { return; }
Books.Clear();
foreach (Book book in result)
{
Books.Add(book);
}
List<GroupBooks> GroupBook = WorkOnListBooks.UpdateGroupBooks(Books.ToList());
if (GroupBook.Count > 0)
{
GroupBooks.Clear();
foreach (GroupBooks groupeBookUnique in GroupBook)
{
GroupBooks.Add(groupeBookUnique);
}
}
}
}
}