SiteDocuments.xaml.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using InABox.Configuration;
  7. using Xamarin.Forms;
  8. using Xamarin.Forms.Xaml;
  9. using XF.Material.Forms.UI;
  10. namespace comal.timesheets
  11. {
  12. public class SiteDocumentsSettings : ILocalConfigurationSettings
  13. {
  14. public Guid CategoryID { get; set; }
  15. public Guid TypeID { get; set; }
  16. public Guid DisciplineID { get; set; }
  17. public Guid ItpID { get; set; }
  18. public Guid FolderID { get; set; }
  19. }
  20. [XamlCompilation(XamlCompilationOptions.Compile)]
  21. public partial class SiteDocuments : SitePage
  22. {
  23. private SiteDocumentsSettings _settings;
  24. public SiteDocuments()
  25. {
  26. _settings = new LocalConfiguration<SiteDocumentsSettings>().Load();
  27. InitializeComponent();
  28. }
  29. protected override void JobLoaded()
  30. {
  31. List<Guid> folders = new List<Guid>();
  32. Job.DocumentFolders.GetChildren(folders, _settings.FolderID);
  33. var items = Job.Documents.Where(
  34. x=> ((_settings.CategoryID == Guid.Empty) || (x.CategoryID == _settings.CategoryID))
  35. && ((_settings.DisciplineID == Guid.Empty) || (x.DisciplineID == _settings.DisciplineID))
  36. && ((_settings.TypeID == Guid.Empty) || (x.TypeID == _settings.TypeID))
  37. && ((_settings.ItpID == Guid.Empty) || (x.ItpID == _settings.ItpID))
  38. && ((_settings.FolderID == Guid.Empty) || (folders.Contains(x.FolderID)))
  39. ).ToArray();
  40. _files.ItemsSource = items;
  41. _summary.Text = $"{items.Length} Documents found";
  42. }
  43. private void ShowFilter_OnClicked(object sender, EventArgs e)
  44. {
  45. var filterpage = new SiteDocumentsFilter()
  46. {
  47. Job = this.Job,
  48. FolderID = _settings.FolderID,
  49. DisciplineID = _settings.DisciplineID,
  50. CategoryID = _settings.CategoryID,
  51. TypeID = _settings.TypeID,
  52. ItpID = _settings.ItpID,
  53. };
  54. filterpage.Changed += (o, e) =>
  55. {
  56. _settings.FolderID = filterpage.FolderID;
  57. _settings.DisciplineID = filterpage.DisciplineID;
  58. _settings.TypeID = filterpage.TypeID;
  59. _settings.CategoryID = filterpage.CategoryID;
  60. _settings.ItpID = filterpage.ItpID;
  61. new LocalConfiguration<SiteDocumentsSettings>().Save(_settings);
  62. JobLoaded();
  63. };
  64. Navigation.PushAsync(filterpage);
  65. }
  66. private void _files_OnItemTapped(object sender, MobileListItemTappedEventArgs args)
  67. {
  68. }
  69. private void MaterialCard_OnClicked(object sender, EventArgs e)
  70. {
  71. if ((sender is MaterialCard card) && (card.BindingContext is JobDocumentShell shell))
  72. {
  73. var viewer = new PDFViewer(shell.ID);
  74. Navigation.PushAsync(viewer);
  75. }
  76. }
  77. }
  78. }