123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System;
- using System.Linq;
- using System.Windows;
- using System.Windows.Media.Imaging;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using PRS.Shared;
- namespace PRSDesktop
- {
- internal class DynamicScheduleEditorColumn<T> : DynamicImageColumn where T : Entity, IPersistent, IRemotable, ISchedulable, new()
- {
- private readonly BitmapImage bitmap_disabled = Resources.clock.AsGrayScale().AsBitmapImage();
- private readonly BitmapImage bitmap_enabled = Resources.clock.AsBitmapImage();
- private readonly BitmapImage bitmap_header = Resources.clock.AsBitmapImage();
- public DynamicScheduleEditorColumn() : base(r => null)
- {
- Image = ScheduleImage;
- Action = EditSchedule;
- GetFilter = () => new StaticColumnFilter<bool>(ActiveSchedules, [
- new("Active Schedules", true),
- new("No/Inactive Schedules", false)
- ]);
- }
- private bool ActiveSchedules(CoreRow row)
- {
- int schedules = row.Get<T, int>(x => x.ActiveSchedules);
- return schedules > 0;
- }
- private BitmapImage ScheduleImage(CoreRow? row)
- {
- if (row == null)
- return bitmap_header;
- var isenabled = row.Get<T, int>(x => x.ActiveSchedules) > 0;
- return isenabled ? bitmap_enabled : bitmap_disabled;
- }
- private bool EditSchedule(CoreRow? row)
- {
- if(row is null)
- {
- return false;
- }
- var id = row.Get<T, Guid>(x => x.ID);
- var item = new Client<T>().Load(new Filter<T>(x => x.ID).IsEqualTo(id)).FirstOrDefault();
- if(item is null)
- {
- Logger.Send(LogType.Error, "", $"{typeof(T)} with ID {id} does not exist!");
- MessageBox.Show("Error opening schedule.");
- return false;
- }
- var form = new ScheduleForm(item);
- form.ShowDialog();
- return true;
- }
- }
- }
|