PhotosPage.xaml.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using Microsoft.Win32;
  2. using NBAManagement.Models;
  3. using NBAManagment.Entities;
  4. using NBAManagment.Filter;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Drawing.Imaging;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows;
  13. using System.Windows.Controls;
  14. using System.Windows.Data;
  15. using System.Windows.Documents;
  16. using System.Windows.Input;
  17. using System.Windows.Media;
  18. using System.Windows.Media.Imaging;
  19. using System.Windows.Navigation;
  20. using System.Windows.Shapes;
  21. namespace NBAManagment
  22. {
  23. /// <summary>
  24. /// Логика взаимодействия для PhotosPage.xaml
  25. /// </summary>
  26. public partial class PhotosPage : Window
  27. {
  28. private const int PAGE_ELEMENT_COUNT = 12;
  29. public PagedEnumerable<NBAManagement.Models.Image> PagedImage { get; private set; }
  30. public int PageNum
  31. {
  32. get => PagedImage.CurrentPageNum;
  33. set
  34. {
  35. PagedImage.CurrentPageNum = value;
  36. UpdateBindings();
  37. }
  38. }
  39. public PhotosPage()
  40. {
  41. InitializeComponent();
  42. using (var context = new PracticeNBAEntities()) // Создание экземпляра контекста
  43. {
  44. var images = context.Image
  45. .OrderByDescending(p => p.CreateTime)
  46. .ToList();
  47. // Преобразование List<NBAManagment.Entities.Image> в List<NBAManagement.Models.Image>
  48. var pagedImages = images.Select(img => new NBAManagement.Models.Image
  49. {
  50. Id = img.IdImage,
  51. CreateTime = img.CreateTime ?? DateTime.MinValue, // Замените на подходящее значение по умолчанию
  52. // Другие свойства...
  53. }).ToList();
  54. PagedImage = new PagedEnumerable<NBAManagement.Models.Image>(pagedImages, PAGE_ELEMENT_COUNT);
  55. DataContext = this;
  56. }
  57. }
  58. public void UpdateBindings()
  59. {
  60. var dataContext = DataContext;
  61. DataContext = null;
  62. DataContext = dataContext;
  63. }
  64. private void FirstPage(object sender, RoutedEventArgs e)
  65. {
  66. PageNum = 1;
  67. }
  68. private void PriveusPage(object sender, RoutedEventArgs e)
  69. {
  70. PageNum--;
  71. }
  72. private void NextPage(object sender, RoutedEventArgs e)
  73. {
  74. PageNum++;
  75. }
  76. private void LastPage(object sender, RoutedEventArgs e)
  77. {
  78. PageNum = PagedImage.PageCount;
  79. }
  80. private NBAManagement.Models.Image pictureToDownload;
  81. private void DownloadImage(object sender, RoutedEventArgs e)
  82. {
  83. var saveFileDialog = new SaveFileDialog();
  84. saveFileDialog.Filter = "Png | *.png";
  85. downloadPoput.IsOpen = false;
  86. if (saveFileDialog.ShowDialog() != true)
  87. return;
  88. if (!saveFileDialog.CheckPathExists)
  89. {
  90. MessageBox.Show("Путь несуществует", "Ошибка",
  91. MessageBoxButton.OK, MessageBoxImage.Error);
  92. }
  93. pictureToDownload.SaveAsFile(saveFileDialog.FileName, ImageFormat.Png);
  94. }
  95. private void DownloadPageImages(object sender, RoutedEventArgs e)
  96. {
  97. var folderDialog = new System.Windows.Forms.FolderBrowserDialog();
  98. if (folderDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
  99. return;
  100. int i = 0;
  101. foreach (var item in PagedImage)
  102. {
  103. item.SaveAsFile($@"{folderDialog.SelectedPath}/picture{++i}.png", ImageFormat.Png);
  104. }
  105. MessageBox.Show("Файлы успешно записаны на диск");
  106. }
  107. private void ShowDownloadPoput(object sender, MouseButtonEventArgs e)
  108. {
  109. pictureToDownload = (NBAManagement.Models.Image)((Button)sender).DataContext;
  110. downloadPoput.IsOpen = true;
  111. }
  112. }
  113. }