123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data.Entity;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- namespace Ageev_Exam_Tour.Model
- {
- internal class HotelList : INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
-
- // Take All Lines from DB
- List<Hotel> hotelList;
- public List<Hotel> ListOfHotel
- {
- get => hotelList;
- set
- {
- hotelList = value;
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(ListOfHotel)));
- }
- }
- // Take the only part
- List<Hotel> chosenHotels;
- public List<Hotel> ChoosenHotels
- {
- get => chosenHotels;
-
- set
- {
- chosenHotels = value;
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(ChoosenHotels)));
- }
- }
- // The current page
- private int _currentPage;
- public int CurrentPage {
- get => _currentPage;
- set{
- _currentPage = value;
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(CurrentPage)));
- NavigationOfHotels();
- }
- }
-
- // All pages
- private int _numberOfPage;
- public int NumberOfPage
- {
- get => _numberOfPage;
- set{
- _numberOfPage = value;
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(NumberOfPage)));
- }
- }
- // Index of array of pageItems
- private int _selectedRecord;
- public int SelectedRecord {
- get => _selectedRecord;
- set
- {
- _selectedRecord = value;
- PropertyChanged.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedRecord)));
- ChangeElementsAndPages();
- if (CurrentPage > NumberOfPage)
- CurrentPage = NumberOfPage;
-
- NavigationOfHotels();
- }
- }
- // Our pages there
- private int[] pageItems;
- public int[] PagetItems { get => pageItems; }
- public HotelList()
- {
- hotelList = GeneralData.myDataBase.Hotel.ToList();
- pageItems = new int[] { 10, 15, 20, 25 };
- // set as default 10 elements from DB
- _selectedRecord = 0;
- chosenHotels = hotelList.Take(pageItems[SelectedRecord] ).ToList();
- // Sets the page where we are
- _currentPage = 1;
- // Sets the default of Items
- _numberOfPage = (int)Math.Ceiling((decimal) hotelList.Count() / (decimal)pageItems[NumberOfPage]);
- }
- public void ChangeElementsAndPages()
- {
- // Update the choosen element
- ChoosenHotels = ListOfHotel.Take(pageItems[SelectedRecord]).ToList();
- // Update the number of page
- NumberOfPage = (int)Math.Ceiling((decimal)ListOfHotel.Count() / (decimal)pageItems[SelectedRecord]);
- }
- private void NavigationOfHotels()
- {
- ChoosenHotels = ListOfHotel.
- Skip( (CurrentPage-1) * pageItems[SelectedRecord]).Take(pageItems[SelectedRecord]).ToList();
- }
- }
- }
|