DataEntryHistory.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows.Controls;
  5. using System.Windows.Media.Imaging;
  6. using Comal.Classes;
  7. using InABox.Clients;
  8. using InABox.Configuration;
  9. using InABox.Core;
  10. using InABox.DynamicGrid;
  11. using InABox.WPF;
  12. namespace PRSDesktop;
  13. public class DataEntryHistorySettings : IUserConfigurationSettings
  14. {
  15. [Obsolete]
  16. private CoreFilterDefinition? _currentFilter;
  17. [Obsolete]
  18. public CoreFilterDefinition? CurrentFilter
  19. {
  20. get => _currentFilter;
  21. set
  22. {
  23. if (value is not null)
  24. {
  25. Filters = new DynamicGridSelectedFilterSettings(new List<CoreFilterDefinition> { value }, false, null);
  26. }
  27. }
  28. }
  29. public DynamicGridSelectedFilterSettings Filters { get; set; } = new();
  30. }
  31. public class DataEntryHistory : DynamicDataGrid<DataEntryDocument>
  32. {
  33. private DataEntryHistorySettings _settings;
  34. public DataEntryHistory()
  35. {
  36. _settings = new UserConfiguration<DataEntryHistorySettings>().Load();
  37. FilterComponent.SetSettings(_settings.Filters, false);
  38. FilterComponent.OnFiltersSelected += FilterComponent_OnFilterSelected;
  39. HiddenColumns.Add(x => x.Tag.ID);
  40. HiddenColumns.Add(x => x.Tag.AppliesTo);
  41. HiddenColumns.Add(x => x.Document.ID);
  42. HiddenColumns.Add(x=>x.EntityID);
  43. HiddenColumns.Add(x=>x.Archived);
  44. ActionColumns.Add(new DynamicImageColumn(LinkedImage) { Position = DynamicActionColumnPosition.Start });
  45. AddButton("Re-Open", PRSDesktop.Resources.refresh.AsBitmapImage(), ReopenClick);
  46. }
  47. private static readonly BitmapImage link = PRSDesktop.Resources.link.AsBitmapImage();
  48. private BitmapImage? LinkedImage(CoreRow? arg)
  49. {
  50. return arg == null
  51. ? link
  52. : arg.Get<DataEntryDocument, Guid>(x => x.EntityID) != Guid.Empty
  53. ? link
  54. : null;
  55. }
  56. private void FilterComponent_OnFilterSelected(DynamicGridSelectedFilterSettings settings)
  57. {
  58. _settings.Filters = settings;
  59. new UserConfiguration<DataEntryHistorySettings>().Save(_settings);
  60. }
  61. private bool ReopenClick(Button sender, CoreRow[] rows)
  62. {
  63. DoReopen();
  64. return false;
  65. }
  66. public void DoReopen()
  67. {
  68. if (SelectedRows?.Any() != true)
  69. return;
  70. var updates = SelectedRows.Select(x => x.ToObject<DataEntryDocument>()).ToArray();
  71. foreach (var update in updates)
  72. update.Archived = DateTime.MinValue;
  73. new Client<DataEntryDocument>().Save(updates, "Re-opened from Data Entry Screen");
  74. Refresh(false,true);
  75. }
  76. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  77. {
  78. base.DoReconfigure(options);
  79. options
  80. .BeginUpdate()
  81. .Clear()
  82. .Add(DynamicGridOption.ShowHelp)
  83. .Add(DynamicGridOption.Print)
  84. .Add(DynamicGridOption.MultiSelect)
  85. .Add(DynamicGridOption.RecordCount)
  86. .Add(DynamicGridOption.SelectColumns)
  87. .Add(DynamicGridOption.FilterRows)
  88. .EndUpdate();
  89. }
  90. protected override void Reload(Filters<DataEntryDocument> criteria, Columns<DataEntryDocument> columns, ref SortOrder<DataEntryDocument>? sort, Action<CoreTable?, Exception?> action)
  91. {
  92. criteria.Add(new Filter<DataEntryDocument>(x => x.Archived).IsNotEqualTo(DateTime.MinValue));
  93. base.Reload(criteria, columns, ref sort, action);
  94. }
  95. }