using System; using System.Linq; using System.Windows.Controls; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; namespace PRSDesktop { public class SecurityGroupGrid : DynamicDataGrid { public SecurityGroupGrid() { AddButton("Duplicate", null, DuplicateGroup); HiddenColumns.Add(x => x.ID); HiddenColumns.Add(x => x.Description); HiddenColumns.Add(x => x.Code); } private bool DuplicateGroup(Button sender, CoreRow[] rows) { using (new WaitCursor()) { foreach (var row in rows) { var id = row.Get(x => x.ID); var code = row.Get(x => x.Code); var desc = row.Get(x => x.Description); var group = new Client().Load(new Filter(x => x.ID).IsEqualTo(id)).FirstOrDefault(); group.ID = Guid.Empty; group.Created = DateTime.Now; group.CreatedBy = ClientFactory.UserID; group.LastUpdate = group.Created; group.LastUpdateBy = group.CreatedBy; group.Code = string.Format("{0} (Copy)", group.Code); group.Description = string.Format("{0} (Copy)", group.Description); new Client().Save(group, "Duplicated from " + code); var tokens = new Client().Load(new Filter(x => x.Group.ID).IsEqualTo(id)); foreach (var token in tokens) { token.ID = Guid.Empty; token.Group.ID = group.ID; token.Created = DateTime.Now; token.CreatedBy = ClientFactory.UserID; token.LastUpdate = group.Created; token.LastUpdateBy = group.CreatedBy; } new Client().Save(tokens, "Duplicated from " + code); } } return true; } } }