JobDesignDocumentGrid.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Threading;
  3. using System.Windows.Media.Imaging;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. using InABox.WPF;
  9. namespace PRSDesktop
  10. {
  11. public class JobDesignDocumentGrid : DynamicDataGrid<SetoutDocument>
  12. {
  13. public JobDesignDocumentGrid()
  14. {
  15. HiddenColumns.Add(x => x.DocumentLink.ID);
  16. HiddenColumns.Add(x => x.EntityLink.ID);
  17. HiddenColumns.Add(x => x.Superceded);
  18. HiddenColumns.Add(x => x.DocumentLink.FileName);
  19. ActionColumns.Add(new DynamicImageColumn(DocumentImage, ViewDocument) { Position = DynamicActionColumnPosition.Start });
  20. ActionColumns.Add(new DynamicTickColumn<SetoutDocument, DateTime>(
  21. x => x.Superceded,
  22. PRSDesktop.Resources.tick.AsBitmapImage(),
  23. PRSDesktop.Resources.warning.AsBitmapImage(),
  24. PRSDesktop.Resources.tick.AsBitmapImage(),
  25. SupercedeDocument
  26. ));
  27. }
  28. protected override void DoReconfigure(DynamicGridOptions options)
  29. {
  30. base.DoReconfigure(options);
  31. options.RecordCount = true;
  32. options.SelectColumns = true;
  33. options.ImportData = false;
  34. options.ExportData = false;
  35. }
  36. public Setout? Design { get; set; }
  37. public override SetoutDocument CreateItem()
  38. {
  39. var result = base.CreateItem();
  40. result.EntityLink.ID = Design?.ID ?? Guid.Empty;
  41. result.EntityLink.Synchronise(Design ?? new Setout());
  42. return result;
  43. }
  44. protected override void Reload(
  45. Filters<SetoutDocument> criteria, Columns<SetoutDocument> columns, ref SortOrder<SetoutDocument>? sort,
  46. CancellationToken token, Action<CoreTable?, Exception?> action)
  47. {
  48. criteria.Add(Design != null
  49. ? new Filter<SetoutDocument>(x => x.EntityLink.ID).IsEqualTo(Design.ID)
  50. : new Filter<SetoutDocument>().None());
  51. base.Reload(criteria, columns, ref sort, token, action);
  52. }
  53. private BitmapImage DocumentImage(CoreRow arg)
  54. {
  55. return PRSDesktop.Resources.view.AsBitmapImage();
  56. }
  57. private bool ViewDocument(CoreRow row)
  58. {
  59. var doc = row.ToObject<SetoutDocument>();
  60. var viewer = new DocumentEditor(doc);
  61. viewer.SaveAllowed = Security.IsAllowed<CanSaveFactoryFloorDrawings>();
  62. viewer.ShowDialog();
  63. return false;
  64. }
  65. private bool SupercedeDocument(CoreRow row)
  66. {
  67. var sd = row.ToObject<SetoutDocument>();
  68. sd.Superceded = sd.Superceded.IsEmpty() ? DateTime.Now : DateTime.MinValue;
  69. new Client<SetoutDocument>().Save(sd, string.Format("{0} Superceded Flag", sd.Superceded.IsEmpty() ? "Cleared" : "Set"));
  70. return true;
  71. }
  72. protected override bool CanCreateItems()
  73. {
  74. return base.CanCreateItems() && (Design?.ID ?? Guid.Empty) != Guid.Empty;
  75. }
  76. }
  77. }