FrameDetailsPage.xaml.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Comal.Classes;
  6. using InABox.Clients;
  7. using InABox.Core;
  8. using Xamarin.Forms;
  9. using XF.Material.Forms.UI;
  10. using XF.Material.Forms.UI.Dialogs;
  11. namespace comal.timesheets
  12. {
  13. public partial class FrameDetailsPage : ContentPage
  14. {
  15. ScannerPage scanner = null;
  16. DeliveryItem _item = null;
  17. public FrameDetailsPage(String code)
  18. {
  19. InitializeComponent();
  20. NavigationPage.SetHasBackButton(this, false);
  21. ToolbarItems.Clear();
  22. ToolbarItems.Add(new ToolbarItem("Back", "", () =>
  23. {
  24. Navigation.PopAsync();
  25. }));
  26. LoadData(code);
  27. }
  28. protected override async void OnAppearing()
  29. {
  30. base.OnAppearing();
  31. //if (scanner != null)
  32. //{
  33. // await LoadData(scanner.Result);
  34. // scanner = null;
  35. //}
  36. }
  37. Dictionary<Button, Guid> pdfs = new Dictionary<Button, Guid>();
  38. private async Task LoadData(String code)
  39. {
  40. await Task.Run(() =>
  41. {
  42. DeliveryItem item = null;
  43. CoreTable items = new Client<DeliveryItem>().Query(
  44. new Filter<DeliveryItem>(x => x.Barcode).IsEqualTo(code)
  45. );
  46. if (items.Rows.Any())
  47. {
  48. item = items.Rows.FirstOrDefault().ToObject<DeliveryItem>();
  49. CoreTable docs = new Client<SetoutDocument>().Query(
  50. new Filter<SetoutDocument>(x => x.EntityLink.ID).IsEqualTo(item.ManufacturingPacketLink.SetoutLink.ID).And(x => x.Superceded).IsEqualTo(DateTime.MinValue)
  51. );
  52. foreach (var row in docs.Rows)
  53. {
  54. MaterialButton button = new MaterialButton();
  55. button.Text = row.Get<SetoutDocument, String>(x => x.DocumentLink.FileName);
  56. button.Padding = new Thickness(0, 10, 0, 10);
  57. button.ButtonType = MaterialButtonType.Elevated;
  58. button.Clicked += ViewPDF;
  59. pdfs[button] = row.Get<SetoutDocument, Guid>(x => x.DocumentLink.ID);
  60. }
  61. }
  62. else
  63. item = new DeliveryItem();
  64. Device.BeginInvokeOnMainThread(() =>
  65. {
  66. if (item != null)
  67. this.BindingContext = item;
  68. this.documents.Children.Clear();
  69. foreach (var button in pdfs.Keys)
  70. this.documents.Children.Add(button);
  71. });
  72. });
  73. }
  74. private void ViewPDF(object sender, EventArgs e)
  75. {
  76. MaterialButton button = sender as MaterialButton;
  77. if (pdfs.ContainsKey(button))
  78. {
  79. var page = new FrameDocumentPage(pdfs[button], button.Text);
  80. Navigation.PushAsync(page);
  81. }
  82. }
  83. void ScanBarcode_Clicked(System.Object sender, System.EventArgs e)
  84. {
  85. scanner = new ScannerPage();
  86. Navigation.PushAsync(scanner);
  87. }
  88. }
  89. }