RequisitionEditDocumentsView.xaml.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using InABox.Clients;
  8. using InABox.Core;
  9. using InABox.Mobile;
  10. using Syncfusion.SfImageEditor.XForms;
  11. using Xamarin.Forms;
  12. using Xamarin.Forms.Xaml;
  13. using XF.Material.Forms.UI.Dialogs;
  14. namespace PRS.Mobile
  15. {
  16. [XamlCompilation(XamlCompilationOptions.Compile)]
  17. public partial class RequisitionEditDocumentsView : RequisitionEditView
  18. {
  19. public RequisitionEditDocumentsView()
  20. {
  21. InitializeComponent();
  22. }
  23. public override void Refresh()
  24. {
  25. _images.ItemsSource = ViewModel?.Documents;
  26. _images.ParentID = ViewModel?.Item.ID ?? Guid.Empty;
  27. }
  28. public async Task AddImage<T, TOptions>(TOptions options)
  29. where T : MobileImageSource<T,TOptions>
  30. where TOptions : MobileImageOptions<T>, new()
  31. {
  32. MobileDocument file = null;
  33. try
  34. {
  35. file = await MobileDocument.From(options);
  36. }
  37. catch (Exception e)
  38. {
  39. await MaterialDialog.Instance.AlertAsync(e.Message, "ERROR");
  40. }
  41. if (file != null)
  42. {
  43. using (await MaterialDialog.Instance.LoadingDialogAsync("Saving Image"))
  44. {
  45. Document doc = new Document()
  46. {
  47. FileName = file.FileName,
  48. Data = file.Data,
  49. CRC = CoreUtils.CalculateCRC(file.Data),
  50. TimeStamp = DateTime.Now
  51. };
  52. new Client<Document>().Save(doc, "Created on Mobile Device");
  53. var link = ViewModel.Documents.AddItem();
  54. link.DocumentID = doc.ID;
  55. link.FileName = doc.FileName;
  56. link.Thumbnail = MobileUtils.ImageTools.CreateThumbnail(doc.Data, 256, 256);
  57. link.ParentID = ViewModel.Item.ID;
  58. link.Save("Image added from Mobile Device");
  59. ViewModel.Documents.Refresh(true);
  60. Dispatcher.BeginInvokeOnMainThread(Refresh);
  61. }
  62. }
  63. }
  64. }
  65. }