using System; using System.Linq; using System.Threading.Tasks; using Comal.Classes; using InABox.Core; using InABox.Mobile; using Syncfusion.SfRangeSlider.XForms; namespace PRS.Mobile { public class FrameScannerViewModel : MobileViewModel { public DeliveryDocumentModel DeliveryDocuments { get; private set; } public SetoutDocumentModel SetoutDocuments { get; private set; } private DeliveryItemModel _deliveryitems; private Task _deliveryItemTask; public FrameScannerViewModel() { DeliveryDocuments = new DeliveryDocumentModel(App.Data, () => new Filter(x => x.EntityLink.ID).IsEqualTo(Item?.DeliveryID ?? CoreUtils.FullGuid)); SetoutDocuments = new SetoutDocumentModel(App.Data, () => new Filter(x => x.EntityLink.ID).IsEqualTo(Item?.SetoutID ?? CoreUtils.FullGuid)); _deliveryitems = new DeliveryItemModel(App.Data, () => new Filter(x=>x.Barcode).IsNotEqualTo("") ); _deliveryItemTask = Task.Run(() => _deliveryitems.Refresh(true)); } public void Search(string barcode) { _deliveryItemTask.Wait(); Item = _deliveryitems.FirstOrDefault(x => String.Equals(x.Barcode, barcode)); } protected override void DoLoad() { var tasks = new Task[] { Task.Run(() =>DeliveryDocuments.Refresh(true)), Task.Run(() =>SetoutDocuments.Refresh(true)) }; Task.WaitAll(tasks); } public override bool IsChanged => Item == null || Item.ID == Guid.Empty || Item.IsChanged(); } }