LogikalProjectImport.xaml.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 LogikalClient ClientRequired(object sender)
  26. {
  27. return client;
  28. }
  29. private LogikalClient client = new LogikalClient();
  30. private Func<LogikalProject, bool>? _filter;
  31. private Action<LogikalProject>? _selected;
  32. public LogikalProjectImport(Func<LogikalProject,bool> filter, Action<LogikalProject> selected)
  33. {
  34. InitializeComponent();
  35. _filter = filter;
  36. _selected = selected;
  37. ProjectCentres.Refresh(true, false);
  38. Projects.Refresh(true, false);
  39. }
  40. private void OK_Click(object sender, RoutedEventArgs e)
  41. {
  42. var project = Projects.SelectedRows.FirstOrDefault()?.ToObject<LogikalProject>();
  43. if (project == null)
  44. return;
  45. _selected?.Invoke(project);
  46. DialogResult = true;
  47. }
  48. private void Cancel_Click(object sender, RoutedEventArgs e)
  49. {
  50. DialogResult = false;
  51. }
  52. private void Window_Loaded(object sender, RoutedEventArgs e)
  53. {
  54. if (LogikalCommon.CheckSettings(client.Settings))
  55. ProjectCentres.Get();
  56. else
  57. Close();
  58. }
  59. private void ProjectCentres_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
  60. {
  61. var id = e.Rows?.FirstOrDefault()?.Get<LogikalProjectCentre, Guid>(x => x.ID) ?? Guid.Empty;
  62. var _centre = ProjectCentres.Items.FirstOrDefault(x => x.ID == id);
  63. Projects.Items = _centre?.Projects.ToList() ?? new List<LogikalProject>();
  64. Projects.Refresh(false, true);
  65. Status.Content = $"{Projects.Items.Count} Projects Found";
  66. }
  67. private void Projects_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
  68. {
  69. var id = e.Rows?.FirstOrDefault()?.Get<LogikalProject, Guid>(x => x.ID) ?? Guid.Empty;
  70. OK.IsEnabled = id != Guid.Empty;
  71. }
  72. }