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.
109 lines
3.4 KiB
109 lines
3.4 KiB
using Model;
|
|
using System.Diagnostics;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
using ToolKit;
|
|
using VMWrapper;
|
|
|
|
namespace BookApp.ViewModel
|
|
{
|
|
[QueryProperty(nameof(BookId), "BookId")]
|
|
public class ViewModelDetailProvider : BaseViewModel
|
|
{
|
|
private readonly DetailBookViewModel _detailBookViewModel;
|
|
|
|
private string _id;
|
|
public string BookId
|
|
{
|
|
get => _id;
|
|
set
|
|
{
|
|
if (_id != value)
|
|
{
|
|
_id = value;
|
|
OnPropertyChanged();
|
|
LoadBookDetailAsync(_id);
|
|
}
|
|
}
|
|
}
|
|
|
|
private Book _bookDetail;
|
|
public Book BookDetail
|
|
{
|
|
get => _bookDetail;
|
|
set
|
|
{
|
|
_bookDetail = value;
|
|
OnPropertyChanged();
|
|
}
|
|
}
|
|
|
|
// Command Pop-up
|
|
public ICommand _popUpCommand;
|
|
public ICommand PopUpCommand =>
|
|
_popUpCommand ??= new CommandPersonnal(ShowPopUP);
|
|
|
|
public ViewModelDetailProvider(DetailBookViewModel detailBookViewModel)
|
|
{
|
|
_detailBookViewModel =
|
|
detailBookViewModel ?? throw new ArgumentNullException(nameof(detailBookViewModel));
|
|
}
|
|
private async void ShowPopUP()
|
|
{
|
|
string action = await DisplayActionSheet("Quel est le statut du livre ?", "Cancel", null, "Finished", "Reading", "NotRead", "ToBeRead");
|
|
switch (action)
|
|
{
|
|
case "Finished":
|
|
BookDetail.Status = Status.Finished;
|
|
OnPropertyChanged(nameof(BookDetail));
|
|
_detailBookViewModel.UpdateColleciton();
|
|
break;
|
|
|
|
case "Reading":
|
|
BookDetail.Status = Status.Reading;
|
|
OnPropertyChanged(nameof(BookDetail));
|
|
_detailBookViewModel.UpdateColleciton();
|
|
break;
|
|
|
|
case "NotRead":
|
|
BookDetail.Status = Status.NotRead;
|
|
OnPropertyChanged(nameof(BookDetail));
|
|
_detailBookViewModel.UpdateColleciton();
|
|
break;
|
|
|
|
case "ToBeRead":
|
|
BookDetail.Status = Status.ToBeRead;
|
|
OnPropertyChanged(nameof(BookDetail));
|
|
_detailBookViewModel.UpdateColleciton();
|
|
break;
|
|
|
|
default:
|
|
BookDetail.Status = Status.Unknown;
|
|
OnPropertyChanged(nameof(BookDetail));
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
public async Task<string> DisplayActionSheet(string title, string cancel, string destruction, params string[] buttons)
|
|
{
|
|
return await Application.Current.MainPage.DisplayActionSheet(title, cancel, destruction, buttons);
|
|
}
|
|
|
|
private async void LoadBookDetailAsync(string bookId)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(_id))
|
|
return;
|
|
try
|
|
{
|
|
await _detailBookViewModel.LoadBookDetail(bookId);
|
|
BookDetail = _detailBookViewModel.BookDetail;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Debug.WriteLine($"An error occurred: {ex.Message}");
|
|
}
|
|
}
|
|
}
|
|
}
|