ReportPage.xaml.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. using log4net;
  2. using System.Windows;
  3. using System.Windows.Controls;
  4. using Agent.Models;
  5. using Agent.Services;
  6. using WinForms = System.Windows.Forms;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Windows.Data;
  10. using System.Linq;
  11. namespace Agent.Views
  12. {
  13. /// <summary>
  14. /// Interaction logic for ReportPage.xaml
  15. /// </summary>
  16. public partial class ReportPage : Page
  17. {
  18. private static readonly ILog log = LogManager.GetLogger(typeof(ReportPage));
  19. private readonly ReportService _reportService = new ReportService();
  20. private readonly CsvService _csvService = new CsvService();
  21. private readonly CollectionViewSource _searchViewSource = new CollectionViewSource();
  22. public ReportPage()
  23. {
  24. InitializeComponent();
  25. ReportList.ItemsSource = _searchViewSource.View;
  26. DatePicker.CustomFormat = "yyyy-MM-dd";
  27. DatePicker.Format = WinForms.DateTimePickerFormat.Custom;
  28. DatePicker.TextChanged += DatePicker_TextChanged;
  29. DatePicker2.CustomFormat = "yyyy-MM-dd";
  30. DatePicker2.Format = WinForms.DateTimePickerFormat.Custom;
  31. DatePicker2.TextChanged += DatePicker_TextChanged;
  32. FetchList();
  33. }
  34. private void DatePicker_TextChanged(object sender, EventArgs e)
  35. {
  36. FetchList();
  37. }
  38. public void FetchList()
  39. {
  40. RP_serarch_cb.SelectedIndex = 0;
  41. RP_search_tb.Text = "";
  42. _searchViewSource.Source = _reportService.GetDailyReports(DatePicker.Value.ToString("yyyy-MM-dd"), DatePicker2.Value.ToString("yyyy-MM-dd"));
  43. ReportList.ItemsSource = _searchViewSource.View;
  44. RP_title_tb.Text = $"{_searchViewSource.View.Cast<object>().Count()} 개의 레포트가 있습니다.";
  45. }
  46. private void RP_ex_btn_Click(object sender, RoutedEventArgs e)
  47. {
  48. var dialog = new WinForms.SaveFileDialog
  49. {
  50. FileName = DateTime.Now.ToString("yyyy-MM-dd") + "_레포트",
  51. DefaultExt = ".csv",
  52. Filter = "csv files|*.csv"
  53. };
  54. if (dialog.ShowDialog() == WinForms.DialogResult.Cancel)
  55. {
  56. return;
  57. }
  58. _csvService.SetHeader(new List<string>{
  59. "번호",
  60. "감시대상",
  61. "감시경로",
  62. "작업종류",
  63. "성공여부",
  64. "작업일자"
  65. });
  66. var report = ReportList.Items;
  67. for (int i = 0; i < report.Count; i++)
  68. {
  69. var item = report[i] as Report;
  70. _csvService.SetColumn(new List<object> {
  71. i + 1,
  72. item.Name,
  73. item.Path,
  74. item.Work_Type,
  75. (item.Is_Fail ? "성공" : "실패"),
  76. item.Create_Date
  77. });
  78. }
  79. _csvService.CreateCsv(dialog.FileName);
  80. MessageBox.Show("저장되었습니다.", "확인", MessageBoxButton.OK, MessageBoxImage.Information);
  81. }
  82. private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
  83. {
  84. var idx = RP_serarch_cb.SelectedIndex;
  85. var view = CollectionViewSource.GetDefaultView(_searchViewSource.View);
  86. if (0 == idx)
  87. {
  88. view.Filter = _NameFiltered;
  89. }
  90. if (1 == idx)
  91. {
  92. view.Filter = _WorkTypeFiltered;
  93. }
  94. if (2 == idx)
  95. {
  96. view.Filter = _IsFalidFiltered;
  97. }
  98. RP_title_tb.Text = $"{ReportList.Items.Count} 개의 레포트가 있습니다.";
  99. return;
  100. }
  101. private bool _NameFiltered(object item)
  102. {
  103. return (item as Report).Name.Contains(RP_search_tb.Text.Trim());
  104. }
  105. private bool _WorkTypeFiltered(object item)
  106. {
  107. return (item as Report).Work_Type.Contains(RP_search_tb.Text.Trim());
  108. }
  109. private bool _IsFalidFiltered(object item)
  110. {
  111. var failString = (item as Report).Is_Fail ? "성공" : "실패";
  112. return failString.Contains(RP_search_tb.Text.Trim());
  113. }
  114. private void RP_serarch_cb_DropDownClosed(object sender, EventArgs e)
  115. {
  116. RP_search_tb.Text = "";
  117. }
  118. }
  119. }