BathhouseManagment/ViewModels/UserControlViewModels/OrderViewModel.cs

84 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using BathHouseManagmet.Database;
using BathHouseManagmet.Models;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
namespace BathHouseManagmet.ViewModels;
public partial class OrderViewModel : ViewModelBase
{
private readonly IServiceProvider _serviceProvider;
private readonly OrderRepository _repository;
[ObservableProperty] private int _currentPageSize;
[ObservableProperty] private List<int> _pageSizes;
[ObservableProperty] private string _pageInfo;
private int currentPage = 0;
private int totalPages;
[ObservableProperty] List<Order> orders;
public OrderViewModel(IServiceProvider serviceProvider, OrderRepository repository)
{
_serviceProvider = serviceProvider;
_repository = repository;
Orders = _repository.GetPage(1, 1);
PageSizes = new List<int>([5,10,20]);
//CurrentPageSize = PageSizes.First();
}
/*
partial void OnCurrentPageSizeChanged(int value)
{
CalculatePages();
}
void CalculatePages()
{
using var db = new OrderRepository();
var rowsCount = db.GetRowsCount();
totalPages = (int)Math.Ceiling(((double)rowsCount / CurrentPageSize));
ShowFirstPage();
}
void ShowPage(int pageIndex)
{
currentPage = pageIndex;
using var db = new OrderRepository();
Orders.Clear();
var rows = db.GetPage(pageIndex, CurrentPageSize);
rows.ForEach(o => Orders.Add(o));
PageInfo = $"Страница {currentPage + 1} из {totalPages}";
}
[RelayCommand]
private void ShowFirstPage()
{
ShowPage(0);
}
[RelayCommand]
private void ShowLastPage()
{
ShowPage(totalPages - 1);
}
[RelayCommand]
private void ShowNextPage()
{
if (currentPage < totalPages - 1)
ShowPage(currentPage + 1);
}
[RelayCommand]
private void ShowPreviousPage()
{
if (currentPage > 0)
ShowPage(currentPage - 1);
}
*/
}