SecurityGroupUserGrid.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using com.sun.org.apache.xpath.@internal.axes;
  2. using com.sun.security.ntlm;
  3. using com.sun.xml.@internal.bind.annotation;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace PRSDesktop
  14. {
  15. public class SecurityGroupUserGrid : DynamicOneToManyGrid<SecurityGroup, User>
  16. {
  17. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  18. {
  19. base.DoReconfigure(options);
  20. options.BeginUpdate()
  21. .Clear()
  22. .AddRange(DynamicGridOption.AddRows)
  23. .AddRange(DynamicGridOption.DeleteRows)
  24. .AddRange(DynamicGridOption.MultiSelect)
  25. .EndUpdate();
  26. }
  27. protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
  28. {
  29. var IDs = Items.Select(x => x.ID).ToArray();
  30. var filters = new Filters<User>();
  31. filters.Add(LookupFactory.DefineFilter<User>());
  32. filters.Add(new Filter<User>(x => x.ID).NotInList(IDs));
  33. var dlg = new MultiSelectDialog<User>(filters.Combine(), null, true);
  34. if (dlg.ShowDialog())
  35. {
  36. SaveItems(dlg.Items());
  37. Refresh(false, true);
  38. }
  39. }
  40. protected override void OnDeleteItem(User item)
  41. {
  42. item.SecurityGroup.ID = Guid.Empty;
  43. new Client<User>().Save(item, "Cleared security group");
  44. }
  45. }
  46. }