SupplierBills.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows;
  5. using System.Windows.Media.Imaging;
  6. using com.sun.org.apache.xpath.@internal;
  7. using Comal.Classes;
  8. using InABox.Core;
  9. using InABox.DynamicGrid;
  10. using InABox.WPF;
  11. using Syncfusion.UI.Xaml.Diagram.Controls;
  12. namespace PRSDesktop
  13. {
  14. public class SupplierBills : DynamicDataGrid<Bill>
  15. {
  16. private static readonly BitmapImage? tick = PRSDesktop.Resources.tick.AsBitmapImage();
  17. private static readonly BitmapImage? post = PRSDesktop.Resources.post.AsBitmapImage();
  18. private static readonly BitmapImage? warning = PRSDesktop.Resources.warning.AsBitmapImage();
  19. private static readonly BitmapImage? refresh = PRSDesktop.Resources.refresh.AsBitmapImage();
  20. private readonly BitmapImage pdf = PRSDesktop.Resources.doc_pdf.AsBitmapImage();
  21. public SupplierBills()
  22. {
  23. HiddenColumns.Add(x => x.PostedStatus);
  24. HiddenColumns.Add(x => x.PostedStatus);
  25. HiddenColumns.Add(x => x.PostedNote);
  26. ActionColumns.Add(new DynamicImageColumn(Approved_Image, null));
  27. ActionColumns.Add(new DynamicImageColumn(Posted_Image, null)
  28. {
  29. ToolTip = Posted_ToolTip
  30. });
  31. }
  32. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  33. {
  34. base.DoReconfigure(options);
  35. options
  36. .BeginUpdate()
  37. .Add(DynamicGridOption.FilterRows)
  38. .Add(DynamicGridOption.SelectColumns)
  39. .Add(DynamicGridOption.MultiSelect)
  40. .Add(DynamicGridOption.RecordCount)
  41. .Add(DynamicGridOption.ShowHelp)
  42. .EndUpdate();
  43. }
  44. private FrameworkElement? Posted_ToolTip(DynamicActionColumn column, CoreRow? row)
  45. {
  46. if (row is null)
  47. {
  48. return column.TextToolTip("Bill Processed Status");
  49. }
  50. return column.TextToolTip(row.Get<Bill, PostedStatus>(x => x.PostedStatus) switch
  51. {
  52. PostedStatus.PostFailed => "Post failed: " + row.Get<Bill, string>(x => x.PostedNote),
  53. PostedStatus.RequiresRepost => "Repost required: " + row.Get<Bill, string>(x => x.PostedNote),
  54. PostedStatus.Posted => "Processed",
  55. PostedStatus.NeverPosted or _ => "Not posted yet",
  56. });
  57. }
  58. private BitmapImage? Approved_Image(CoreRow? row)
  59. {
  60. return (row != null) && row.Get<Bill, DateTime>(x => x.Approved).IsEmpty()
  61. ? null
  62. : tick;
  63. }
  64. private BitmapImage? Posted_Image(CoreRow? row)
  65. {
  66. if (row is null)
  67. return post;
  68. return row.Get<Bill, PostedStatus>(x => x.PostedStatus) switch
  69. {
  70. PostedStatus.PostFailed => warning,
  71. PostedStatus.Posted => tick,
  72. PostedStatus.RequiresRepost => refresh,
  73. PostedStatus.NeverPosted or _ => null,
  74. };
  75. }
  76. public Bill[] LoadBills(CoreRow[] rows)
  77. {
  78. return LoadItems(rows);
  79. }
  80. }
  81. }