| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- using System;
- using System.Collections.Generic;
- using System.Threading;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- namespace PRSDesktop
- {
- public class ShipmentItemGrid : DynamicDataGrid<DeliveryItem>
- {
- public ShipmentItemGrid()
- {
- HiddenColumns.Add(x => x.Barcode);
- HiddenColumns.Add(x => x.ShipmentLink.ID);
- HiddenColumns.Add(x => x.ShipmentLink.Code);
- HiddenColumns.Add(x => x.ShipmentLink.Deleted);
- HiddenColumns.Add(x => x.ShipmentCode);
- HiddenColumns.Add(x => x.RequisitionLink.ID);
- HiddenColumns.Add(x => x.SetoutLink.ID);
- HiddenColumns.Add(x => x.ManufacturingPacketLink.ID);
- HiddenColumns.Add(x => x.Delivery.ID);
- }
- protected override void DoReconfigure(DynamicGridOptions options)
- {
- base.DoReconfigure(options);
- options.RecordCount = true;
- options.SelectColumns = true;
- options.MultiSelect = true;
- options.FilterRows = true;
- options.EditRows = false;
- }
- public Guid CurrentShipmentID { get; set; }
- protected override void Reload(
- Filters<DeliveryItem> criteria, Columns<DeliveryItem> columns, ref SortOrder<DeliveryItem>? sort,
- CancellationToken token, Action<CoreTable?, Exception?> action)
- {
- criteria.Add(new Filter<DeliveryItem>(x => x.ShipmentLink.ID).IsEqualTo(CurrentShipmentID));
- if (CurrentShipmentID.Equals(Guid.Empty))
- criteria.Add(new Filter<DeliveryItem>(x => x.ShipmentLink.ID).IsNotEqualTo(CurrentShipmentID));
- sort = new SortOrder<DeliveryItem>(x => x.Barcode);
- base.Reload(criteria, columns, ref sort, token, action);
- }
- public override void DeleteItems(params CoreRow[] rows)
- {
- foreach (var row in rows)
- {
- if (!Entity.IsEntityLinkValid<DeliveryItem, ManufacturingPacketLink>(x => x.ManufacturingPacketLink, row))
- {
- base.DeleteItems(row);
- }
- else
- {
- //var delrow = new Client<DeliveryItem>().Query(
- // new Filter<DeliveryItem>(x => x.ID).IsEqualTo(row.Get<DeliveryItem, Guid>(x => x.ID)),
- // new Columns<DeliveryItem>(
- // x => x.ID,
- // x => x.ShipmentLink.ID
- // ),
- // null
- //).Rows.FirstOrDefault();
- //if (row != null)
- //{
- var item = row.ToObject<DeliveryItem>();
- item.ShipmentLink.ID = Guid.Empty;
- item.ShipmentCode = "";
- new Client<DeliveryItem>().Save(item, string.Format("Item removed from Rack {0}", item.ShipmentLink.Code));
- //}
- }
- }
- }
- protected override bool CanCreateItems()
- {
- return CurrentShipmentID != Guid.Empty && base.CanCreateItems();
- }
- protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
- {
- var dlg = new MultiSelectDialog<DeliveryItem>(
- new Filter<DeliveryItem>(x => x.ShipmentLink.ID).IsEqualTo(Guid.Empty)
- .And(x => x.DeliveredDate).IsEqualTo(DateTime.MinValue)
- .And(x => x.ManufacturingPacketLink.ID).IsNotEqualTo(Guid.Empty),
- DataColumns()
- );
- if (dlg.ShowDialog())
- {
- var updates = new List<DeliveryItem>();
- foreach (var row in dlg.Data().Rows)
- {
- var item = row.ToObject<DeliveryItem>();
- item.ShipmentLink.ID = CurrentShipmentID;
- updates.Add(item);
- }
- Progress.ShowModal("Adding Items", progress => { new Client<DeliveryItem>().Save(updates, "Added to Rack by user"); });
- Refresh(false, true);
- DoChanged();
- }
- }
- public override DeliveryItem CreateItem()
- {
- var result = base.CreateItem();
- result.ShipmentLink.ID = CurrentShipmentID;
- return result;
- }
- }
- }
|