ShipmentItemGrid.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  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 ShipmentItemGrid : DynamicDataGrid<DeliveryItem>
  12. {
  13. public ShipmentItemGrid()
  14. {
  15. HiddenColumns.Add(x => x.Barcode);
  16. HiddenColumns.Add(x => x.ShipmentLink.ID);
  17. HiddenColumns.Add(x => x.ShipmentLink.Code);
  18. HiddenColumns.Add(x => x.ShipmentLink.Deleted);
  19. HiddenColumns.Add(x => x.ShipmentCode);
  20. HiddenColumns.Add(x => x.RequisitionLink.ID);
  21. HiddenColumns.Add(x => x.SetoutLink.ID);
  22. HiddenColumns.Add(x => x.ManufacturingPacketLink.ID);
  23. HiddenColumns.Add(x => x.Delivery.ID);
  24. }
  25. protected override void DoReconfigure(DynamicGridOptions options)
  26. {
  27. base.DoReconfigure(options);
  28. options.RecordCount = true;
  29. options.SelectColumns = true;
  30. options.MultiSelect = true;
  31. options.FilterRows = true;
  32. options.EditRows = false;
  33. }
  34. public Guid CurrentShipmentID { get; set; }
  35. protected override void Reload(
  36. Filters<DeliveryItem> criteria, Columns<DeliveryItem> columns, ref SortOrder<DeliveryItem>? sort,
  37. CancellationToken token, Action<CoreTable?, Exception?> action)
  38. {
  39. criteria.Add(new Filter<DeliveryItem>(x => x.ShipmentLink.ID).IsEqualTo(CurrentShipmentID));
  40. if (CurrentShipmentID.Equals(Guid.Empty))
  41. criteria.Add(new Filter<DeliveryItem>(x => x.ShipmentLink.ID).IsNotEqualTo(CurrentShipmentID));
  42. sort = new SortOrder<DeliveryItem>(x => x.Barcode);
  43. base.Reload(criteria, columns, ref sort, token, action);
  44. }
  45. public override void DeleteItems(params CoreRow[] rows)
  46. {
  47. foreach (var row in rows)
  48. {
  49. if (!Entity.IsEntityLinkValid<DeliveryItem, ManufacturingPacketLink>(x => x.ManufacturingPacketLink, row))
  50. {
  51. base.DeleteItems(row);
  52. }
  53. else
  54. {
  55. //var delrow = new Client<DeliveryItem>().Query(
  56. // new Filter<DeliveryItem>(x => x.ID).IsEqualTo(row.Get<DeliveryItem, Guid>(x => x.ID)),
  57. // new Columns<DeliveryItem>(
  58. // x => x.ID,
  59. // x => x.ShipmentLink.ID
  60. // ),
  61. // null
  62. //).Rows.FirstOrDefault();
  63. //if (row != null)
  64. //{
  65. var item = row.ToObject<DeliveryItem>();
  66. item.ShipmentLink.ID = Guid.Empty;
  67. item.ShipmentCode = "";
  68. new Client<DeliveryItem>().Save(item, string.Format("Item removed from Rack {0}", item.ShipmentLink.Code));
  69. //}
  70. }
  71. }
  72. }
  73. protected override bool CanCreateItems()
  74. {
  75. return CurrentShipmentID != Guid.Empty && base.CanCreateItems();
  76. }
  77. protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
  78. {
  79. var dlg = new MultiSelectDialog<DeliveryItem>(
  80. new Filter<DeliveryItem>(x => x.ShipmentLink.ID).IsEqualTo(Guid.Empty)
  81. .And(x => x.DeliveredDate).IsEqualTo(DateTime.MinValue)
  82. .And(x => x.ManufacturingPacketLink.ID).IsNotEqualTo(Guid.Empty),
  83. DataColumns()
  84. );
  85. if (dlg.ShowDialog())
  86. {
  87. var updates = new List<DeliveryItem>();
  88. foreach (var row in dlg.Data().Rows)
  89. {
  90. var item = row.ToObject<DeliveryItem>();
  91. item.ShipmentLink.ID = CurrentShipmentID;
  92. updates.Add(item);
  93. }
  94. Progress.ShowModal("Adding Items", progress => { new Client<DeliveryItem>().Save(updates, "Added to Rack by user"); });
  95. Refresh(false, true);
  96. DoChanged();
  97. }
  98. }
  99. public override DeliveryItem CreateItem()
  100. {
  101. var result = base.CreateItem();
  102. result.ShipmentLink.ID = CurrentShipmentID;
  103. return result;
  104. }
  105. }
  106. }