DynamicScheduleEditorColumn.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Linq;
  3. using System.Windows.Media.Imaging;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. using InABox.WPF;
  9. using PRS.Shared;
  10. namespace PRSDesktop
  11. {
  12. internal class DynamicScheduleEditorColumn<T> : DynamicImageColumn where T : Entity, IPersistent, IRemotable, ISchedulable, new()
  13. {
  14. private readonly BitmapImage bitmap_disabled = Resources.clock.AsGrayScale().AsBitmapImage();
  15. private readonly BitmapImage bitmap_enabled = Resources.clock.AsBitmapImage();
  16. private readonly BitmapImage bitmap_header = Resources.clock.AsBitmapImage();
  17. public DynamicScheduleEditorColumn() : base(r => null)
  18. {
  19. Image = ScheduleImage;
  20. Action = EditSchedule;
  21. Filters = new[] { "Active Schedules", "No/Inactive Schedules" };
  22. FilterRecord = ScheduleFilter;
  23. }
  24. private bool ScheduleFilter(CoreRow row, string[] filter)
  25. {
  26. int schedules = row.Get<T, int>(x => x.ActiveSchedules);
  27. if (filter.Contains("Active Schedules") && (schedules > 0))
  28. return true;
  29. if (filter.Contains("No/Inactive Schedules") && (schedules == 0))
  30. return true;
  31. return false;
  32. }
  33. private BitmapImage ScheduleImage(CoreRow row)
  34. {
  35. if (row == null)
  36. return bitmap_header;
  37. var isenabled = row.Get<T, int>(x => x.ActiveSchedules) > 0;
  38. return isenabled ? bitmap_enabled : bitmap_disabled;
  39. }
  40. private bool EditSchedule(CoreRow row)
  41. {
  42. var id = row.Get<T, Guid>(x => x.ID);
  43. var item = new Client<T>().Load(new Filter<T>(x => x.ID).IsEqualTo(id)).FirstOrDefault();
  44. var form = new ScheduleForm(item);
  45. form.ShowDialog();
  46. return true;
  47. }
  48. }
  49. }