using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Windows; using System.Windows.Media.Imaging; using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; namespace PRSDesktop { internal class EmployeeTeamGrid : DynamicDataGrid { public EmployeeTeamGrid() { ColumnsTag = "EmployeeTeams"; } protected override void DoReconfigure(FluentList options) { base.DoReconfigure(options); options.BeginUpdate() .Clear() .Add(DynamicGridOption.SelectColumns) .Add(DynamicGridOption.AddRows) .Add(DynamicGridOption.DeleteRows) .Add(DynamicGridOption.MultiSelect) .EndUpdate(); } public Guid EmployeeID { get; set; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, Action action) { if (EmployeeID == Guid.Empty) criteria.Add(new Filter().None()); else criteria.Add(new Filter(x => x.EmployeeLink).LinkValid(EmployeeID)); base.Reload(criteria, columns, ref sort, action); } protected override bool CanCreateItems() { return EmployeeID != Guid.Empty; } protected override bool CanDeleteItems(params CoreRow[] rows) { return EmployeeID != Guid.Empty; } protected override EmployeeTeam CreateItem() { var result = base.CreateItem(); result.EmployeeLink.ID = EmployeeID; return result; } protected override void DoAdd(bool OpenEditorOnDirectEdit = false) { var ids = Data.ExtractValues(c => c.TeamLink.ID).Distinct().ToArray(); MultiSelectDialog dlg = new MultiSelectDialog( new Filter(x => x.ID).NotInList(ids), new Columns(x => x.ID).Add(x => x.Code).Add(x => x.Name), true); if (dlg.ShowDialog() == true) { List updates = new List(); foreach (var newid in dlg.IDs()) { EmployeeTeam newteam = new EmployeeTeam(); newteam.EmployeeLink.ID = EmployeeID; newteam.TeamLink.ID = newid; updates.Add(newteam); } if (updates.Any()) { new Client().Save(updates, "Updated by User"); Refresh(false, true); DoChanged(); } } } } }