ProgressClaimLabourGrid.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.DynamicGrid;
  4. using InABox.WPF;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. using System.Windows.Media;
  12. namespace PRSDesktop.Panels.Invoices;
  13. internal class ProgressClaimLabourGrid : DynamicDataGrid<Assignment>, ISpecificGrid
  14. {
  15. public ProgressClaim Claim { get; set; }
  16. public Invoice? Invoice { get; set; }
  17. public Job Job { get; set; }
  18. public ProgressClaimLabourGrid(ProgressClaim claim, Invoice? invoice, Job job)
  19. {
  20. Claim = claim;
  21. Invoice = invoice;
  22. Job = job;
  23. }
  24. protected override void Init()
  25. {
  26. base.Init();
  27. HiddenColumns.Add(x => x.Invoice.ID);
  28. ColumnsTag = $"{nameof(ProgressClaim)}.Labour";
  29. }
  30. protected override IDynamicGridUIComponent<Assignment> CreateUIComponent()
  31. {
  32. return new UIComponent(this);
  33. }
  34. private class UIComponent : DynamicGridGridUIComponent<Assignment>
  35. {
  36. private ProgressClaimLabourGrid Grid;
  37. public UIComponent(ProgressClaimLabourGrid grid)
  38. {
  39. Parent = grid;
  40. Grid = grid;
  41. }
  42. protected override Brush? GetCellBackground(CoreRow row, DynamicColumnBase column)
  43. {
  44. var invoiceID = row.Get<Assignment, Guid>(x => x.Invoice.ID);
  45. if(invoiceID == (Grid.Invoice?.ID ?? Guid.Empty))
  46. {
  47. return Colors.LightGreen.ToBrush(0.5);
  48. }
  49. else
  50. {
  51. return Colors.Silver.ToBrush(0.5);
  52. }
  53. }
  54. }
  55. protected override void DoReconfigure(DynamicGridOptions options)
  56. {
  57. base.DoReconfigure(options);
  58. options.FilterRows = true;
  59. options.SelectColumns = true;
  60. }
  61. public override DynamicGridColumns GenerateColumns()
  62. {
  63. return base.GenerateColumns();
  64. }
  65. protected override void Reload(Filters<Assignment> criteria, Columns<Assignment> columns, ref SortOrder<Assignment>? sort, CancellationToken token, Action<CoreTable?, Exception?> action)
  66. {
  67. criteria.Add(new Filter<Assignment>(x => x.JobScope.ID).IsEqualTo(Claim.JobScope.ID));
  68. criteria.Add(new Filter<Assignment>(x => x.JobLink.ID).IsEqualTo(Job.ID));
  69. base.Reload(criteria, columns, ref sort, token, action);
  70. }
  71. }