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.

145 lines
4.1 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; }
public RelayCommand<string> LoadBooks { get; private set; }
// ------------------------------------------------------------------------------//
public ObservableCollection<Book> Books = new ObservableCollection<Book>();
public ObservableCollection<GroupBooks> GroupBooks { get; private set; } = new ObservableCollection<GroupBooks>();
// ------------------------------------------------------------------------------//
public BooksViewModel(IUserLibraryManager userLibraryManager,WorkOnListBooks workOnListBooks)
{
this.UserLibraryManager = userLibraryManager;
this.WorkOnListBooks = workOnListBooks;
LoadBooks = new RelayCommand<string>(o => LoadBooksFonction());
InitiateParam();
LoadBooksFonction();
}
private void InitiateParam()
{
Index = 0;
Count = 7;
}
/*
private void UpdateGroupBooks()
{
GroupBooks.Clear();
foreach (Book book in Books)
{
if (book.Authors.Count != 0)
{
foreach (Author author in book.Authors)
{
int find = -1;
for (int i = 0; i < GroupBooks.Count(); i++)
{
if (GroupBooks[i].Author == author.Name)
{
find = i;
break;
}
}
if (find != -1)
{
GroupBooks[find].Add(book);
}
else
{
GroupBooks.Add(new GroupBooks(author.Name, new List<Book> { 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> { book }));
} else
{
GroupBooks[index].Add(book);
}
}
}
}*/
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);
}
}
}
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;
}
}