using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; namespace PRSDesktop { /// /// Interaction logic for SecurityTokenPanel.xaml /// public partial class UserSecurityTokenPage : UserControl, IDynamicCustomEditorPage { private readonly UserTokenGrid grid = new(); public UserSecurityTokenPage() { InitializeComponent(); Content = grid; } public bool Ready { get; set; } public DynamicEditorGrid EditorGrid { get; set; } public PageType PageType => PageType.Other; public void AfterSave(object item) { var updates = new List(); var deletes = new List(); foreach (var token in grid.Tokens) { var uti = grid.Items.FirstOrDefault(x => x.Code.Equals(token.Descriptor.Split('.').Last())); if (uti.HasValue) { if (token.IsChanged()) updates.Add(token); } else { if (token.ID != Guid.Empty) deletes.Add(token); } } if (updates.Any()) new Client().Save(updates, ""); foreach (var delete in deletes) new Client().Delete(delete, ""); } public void BeforeSave(object item) { } public string Caption() { return "Security Tokens"; } public void Load(object item, Func PageDataHandler) { var user = item as User; grid.GroupID = user.SecurityGroup.ID; grid.UserID = user.ID; grid.Refresh(true, true); Ready = true; } public Size MinimumSize() { return new Size(300, 600); } public int Order() { return 0; } } }