SecurityGroupGrid.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Linq;
  3. using System.Windows.Controls;
  4. using InABox.Clients;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. using InABox.WPF;
  8. namespace PRSDesktop
  9. {
  10. public class SecurityGroupGrid : DynamicDataGrid<SecurityGroup>
  11. {
  12. public SecurityGroupGrid()
  13. {
  14. AddButton("Duplicate", null, DuplicateGroup);
  15. HiddenColumns.Add(x => x.ID);
  16. HiddenColumns.Add(x => x.Description);
  17. HiddenColumns.Add(x => x.Code);
  18. }
  19. private bool DuplicateGroup(Button sender, CoreRow[] rows)
  20. {
  21. using (new WaitCursor())
  22. {
  23. foreach (var row in rows)
  24. {
  25. var id = row.Get<SecurityGroup, Guid>(x => x.ID);
  26. var code = row.Get<SecurityGroup, string>(x => x.Code);
  27. var desc = row.Get<SecurityGroup, string>(x => x.Description);
  28. var group = new Client<SecurityGroup>().Load(new Filter<SecurityGroup>(x => x.ID).IsEqualTo(id)).FirstOrDefault();
  29. group.ID = Guid.Empty;
  30. group.Created = DateTime.Now;
  31. group.CreatedBy = ClientFactory.UserID;
  32. group.LastUpdate = group.Created;
  33. group.LastUpdateBy = group.CreatedBy;
  34. group.Code = string.Format("{0} (Copy)", group.Code);
  35. group.Description = string.Format("{0} (Copy)", group.Description);
  36. new Client<SecurityGroup>().Save(group, "Duplicated from " + code);
  37. var tokens = new Client<SecurityToken>().Load(new Filter<SecurityToken>(x => x.Group.ID).IsEqualTo(id));
  38. foreach (var token in tokens)
  39. {
  40. token.ID = Guid.Empty;
  41. token.Group.ID = group.ID;
  42. token.Created = DateTime.Now;
  43. token.CreatedBy = ClientFactory.UserID;
  44. token.LastUpdate = group.Created;
  45. token.LastUpdateBy = group.CreatedBy;
  46. }
  47. new Client<SecurityToken>().Save(tokens, "Duplicated from " + code);
  48. }
  49. }
  50. return true;
  51. }
  52. }
  53. }