LogikalProjectImport.xaml.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using Comal.Classes;
  9. using InABox.Clients;
  10. using InABox.Core;
  11. using InABox.DynamicGrid;
  12. using InABox.Integration.Logikal;
  13. using InABox.Wpf;
  14. using InABox.WPF;
  15. using Microsoft.Win32;
  16. using PRSDesktop.Integrations.Logikal;
  17. using sun.rmi.server;
  18. namespace PRSDesktop;
  19. public partial class LogikalProjectImport : Window
  20. {
  21. private void UpdateStatus(LogikalResponse response)
  22. {
  23. Status.Content = response.ToString();
  24. }
  25. private Func<LogikalProject, bool>? _filter;
  26. private Action<LogikalProject>? _selected;
  27. public LogikalProjectImport(Func<LogikalProject,bool> filter, Action<LogikalProject> selected)
  28. {
  29. InitializeComponent();
  30. _filter = filter;
  31. _selected = selected;
  32. ProjectCentres.Refresh(true, false);
  33. Projects.Refresh(true, false);
  34. }
  35. private void OK_Click(object sender, RoutedEventArgs e)
  36. {
  37. var project = Projects.SelectedRows.FirstOrDefault()?.ToObject<LogikalProject>();
  38. if (project == null)
  39. return;
  40. _selected?.Invoke(project);
  41. DialogResult = true;
  42. }
  43. private void Cancel_Click(object sender, RoutedEventArgs e)
  44. {
  45. DialogResult = false;
  46. }
  47. private void Window_Loaded(object sender, RoutedEventArgs e)
  48. {
  49. ProjectCentres.Get();
  50. }
  51. private void ProjectCentres_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
  52. {
  53. var id = e.Rows?.FirstOrDefault()?.Get<LogikalProjectCentre, Guid>(x => x.ID) ?? Guid.Empty;
  54. var _centre = ProjectCentres.Items.FirstOrDefault(x => x.ID == id);
  55. Projects.Items = _centre?.Projects.Where(x=>_filter == null || _filter(x)).ToList() ?? new List<LogikalProject>();
  56. Projects.Refresh(false, true);
  57. Status.Content = $"{Projects.Items.Count} Projects Found";
  58. }
  59. private void Projects_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
  60. {
  61. var id = e.Rows?.FirstOrDefault()?.Get<LogikalProject, Guid>(x => x.ID) ?? Guid.Empty;
  62. OK.IsEnabled = id != Guid.Empty;
  63. }
  64. }