UserSecurityTokenPage.xaml.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Windows;
  5. using System.Windows.Controls;
  6. using InABox.Clients;
  7. using InABox.Core;
  8. using InABox.DynamicGrid;
  9. namespace PRSDesktop
  10. {
  11. /// <summary>
  12. /// Interaction logic for SecurityTokenPanel.xaml
  13. /// </summary>
  14. public partial class UserSecurityTokenPage : UserControl, IDynamicCustomEditorPage<User>
  15. {
  16. private readonly UserTokenGrid grid = new();
  17. public UserSecurityTokenPage()
  18. {
  19. InitializeComponent();
  20. Content = grid;
  21. }
  22. public bool Ready { get; set; }
  23. public DynamicEditorGrid EditorGrid { get; set; }
  24. public void AfterSave(object item)
  25. {
  26. var updates = new List<UserSecurityToken>();
  27. var deletes = new List<UserSecurityToken>();
  28. foreach (var token in grid.Tokens)
  29. {
  30. var uti = grid.Items.FirstOrDefault(x => x.Code.Equals(token.Descriptor.Split('.').Last()));
  31. if (uti.HasValue)
  32. {
  33. if (token.IsChanged())
  34. updates.Add(token);
  35. }
  36. else
  37. {
  38. if (token.ID != Guid.Empty)
  39. deletes.Add(token);
  40. }
  41. }
  42. if (updates.Any())
  43. new Client<UserSecurityToken>().Save(updates, "");
  44. foreach (var delete in deletes)
  45. new Client<UserSecurityToken>().Delete(delete, "");
  46. }
  47. public void BeforeSave(object item)
  48. {
  49. }
  50. public string Caption()
  51. {
  52. return "Security Tokens";
  53. }
  54. public void Load(object item, Func<Type, CoreTable> PageDataHandler)
  55. {
  56. var user = item as User;
  57. grid.GroupID = user.SecurityGroup.ID;
  58. grid.UserID = user.ID;
  59. grid.Refresh(true, true);
  60. Ready = true;
  61. }
  62. public Size MinimumSize()
  63. {
  64. return new Size(300, 600);
  65. }
  66. public int Order()
  67. {
  68. return 0;
  69. }
  70. }
  71. }