84 lines
2.1 KiB
C#
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);
|
|
}
|
|
*/
|
|
} |