UserSecurityTokenPage.xaml.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 PageType PageType => PageType.Other;
  25. public void AfterSave(object item)
  26. {
  27. var updates = new List<UserSecurityToken>();
  28. var deletes = new List<UserSecurityToken>();
  29. foreach (var token in grid.Tokens)
  30. {
  31. var uti = grid.Items.FirstOrDefault(x => x.Code.Equals(token.Descriptor.Split('.').Last()));
  32. if (uti.HasValue)
  33. {
  34. if (token.IsChanged())
  35. updates.Add(token);
  36. }
  37. else
  38. {
  39. if (token.ID != Guid.Empty)
  40. deletes.Add(token);
  41. }
  42. }
  43. if (updates.Any())
  44. new Client<UserSecurityToken>().Save(updates, "");
  45. foreach (var delete in deletes)
  46. new Client<UserSecurityToken>().Delete(delete, "");
  47. }
  48. public void BeforeSave(object item)
  49. {
  50. }
  51. public string Caption()
  52. {
  53. return "Security Tokens";
  54. }
  55. public void Load(object item, Func<Type, CoreTable> PageDataHandler)
  56. {
  57. var user = item as User;
  58. grid.GroupID = user.SecurityGroup.ID;
  59. grid.UserID = user.ID;
  60. grid.Refresh(true, true);
  61. Ready = true;
  62. }
  63. public Size MinimumSize()
  64. {
  65. return new Size(300, 600);
  66. }
  67. public int Order()
  68. {
  69. return 0;
  70. }
  71. }
  72. }