| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- using Comal.Classes;
 
- using InABox.Clients;
 
- using InABox.Core;
 
- using InABox.DynamicGrid;
 
- using InABox.WPF;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Threading;
 
- using System.Windows.Media.Imaging;
 
- namespace PRSDesktop;
 
- public interface IEntitySelectionGrid
 
- {
 
-     HashSet<Guid> Entities { get; set; }
 
- }
 
- public class EntitySelectionGrid<T> : DynamicGrid<T>, IEntitySelectionGrid where T : Entity, IRemotable, IPersistent, new()
 
- {
 
-     private readonly BitmapImage unticked = PRSDesktop.Resources.disabled.AsBitmapImage();
 
-     private readonly BitmapImage ticked = PRSDesktop.Resources.tick.AsBitmapImage();
 
-     private HashSet<Guid> _entities;
 
-     public HashSet<Guid> Entities
 
-     {
 
-         get => _entities;
 
-         set
 
-         {
 
-             _entities = value;
 
-         }
 
-     }
 
-     protected override void Init()
 
-     {
 
-         base.Init();
 
-         HiddenColumns.Add(x => x.ID);
 
-         ActionColumns.Add(new DynamicImageColumn(TickImage, TickAction));
 
-     }
 
-     protected override void DoReconfigure(DynamicGridOptions options)
 
-     {
 
-         options.Clear();
 
-         options.FilterRows = true;
 
-     }
 
-     private BitmapImage TickImage(CoreRow? row)
 
-     {
 
-         if (row == null)
 
-         {
 
-             return ticked;
 
-         }
 
-         return _entities.Contains((Guid)row["ID"]) ? ticked : unticked;
 
-     }
 
-     private bool TickAction(CoreRow? row)
 
-     {
 
-         if (row == null)
 
-         {
 
-             if (_entities.Count < Data.Rows.Count)
 
-             {
 
-                 _entities = Data.Rows.Select(x => (Guid)x["ID"]).ToHashSet();
 
-             }
 
-             else
 
-             {
 
-                 _entities.Clear();
 
-             }
 
-             return true;
 
-         }
 
-         var employeeID = (Guid)row["ID"];
 
-         if (_entities.Contains(employeeID))
 
-         {
 
-             _entities.Remove(employeeID);
 
-         }
 
-         else
 
-         {
 
-             _entities.Add(employeeID);
 
-         }
 
-         return true;
 
-     }
 
-     public override void DeleteItems(params CoreRow[] rows)
 
-     {
 
-     }
 
-     public override T LoadItem(CoreRow row)
 
-     {
 
-         var id = row.Get<Employee, Guid>(x => x.ID);
 
-         var filter = new Filter<T>(x => x.ID).IsEqualTo(id);
 
-         return new Client<T>().Load(filter).FirstOrDefault();
 
-     }
 
-     protected override void Reload(
 
-     	Filters<T> criteria, Columns<T> columns, ref SortOrder<T>? sort,
 
-     	CancellationToken token, Action<CoreTable?, Exception?> action)
 
-     {
 
-         new Client<T>().Query(criteria.Combine(), columns, sort, CoreRange.All, action);
 
-     }
 
-     public override void SaveItem(T item)
 
-     {
 
-     }
 
- }
 
 
  |