using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Comal.Classes; using InABox.Clients; using InABox.Core; using Xamarin.Forms; using XF.Material.Forms.UI; using XF.Material.Forms.UI.Dialogs; namespace comal.timesheets { public partial class FrameDetailsPage : ContentPage { ScannerPage scanner = null; DeliveryItem _item = null; public FrameDetailsPage(String code) { InitializeComponent(); NavigationPage.SetHasBackButton(this, false); ToolbarItems.Clear(); ToolbarItems.Add(new ToolbarItem("Back", "", () => { Navigation.PopAsync(); })); LoadData(code); } protected override async void OnAppearing() { base.OnAppearing(); //if (scanner != null) //{ // await LoadData(scanner.Result); // scanner = null; //} } Dictionary pdfs = new Dictionary(); private async Task LoadData(String code) { await Task.Run(() => { DeliveryItem item = null; CoreTable items = new Client().Query( new Filter(x => x.Barcode).IsEqualTo(code) ); if (items.Rows.Any()) { item = items.Rows.FirstOrDefault().ToObject(); CoreTable docs = new Client().Query( new Filter(x => x.EntityLink.ID).IsEqualTo(item.ManufacturingPacketLink.SetoutLink.ID).And(x => x.Superceded).IsEqualTo(DateTime.MinValue) ); foreach (var row in docs.Rows) { MaterialButton button = new MaterialButton(); button.Text = row.Get(x => x.DocumentLink.FileName); button.Padding = new Thickness(0, 10, 0, 10); button.ButtonType = MaterialButtonType.Elevated; button.Clicked += ViewPDF; pdfs[button] = row.Get(x => x.DocumentLink.ID); } } else item = new DeliveryItem(); Device.BeginInvokeOnMainThread(() => { if (item != null) this.BindingContext = item; this.documents.Children.Clear(); foreach (var button in pdfs.Keys) this.documents.Children.Add(button); }); }); } private void ViewPDF(object sender, EventArgs e) { MaterialButton button = sender as MaterialButton; if (pdfs.ContainsKey(button)) { var page = new FrameDocumentPage(pdfs[button], button.Text); Navigation.PushAsync(page); } } void ScanBarcode_Clicked(System.Object sender, System.EventArgs e) { scanner = new ScannerPage(); Navigation.PushAsync(scanner); } } }