DataEntryHistory.cs 3.0 KB

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