1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 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;
- Filters = new[] { "Active Schedules", "No/Inactive Schedules" };
- FilterRecord = ScheduleFilter;
- }
- private bool ScheduleFilter(CoreRow row, string[] filter)
- {
- int schedules = row.Get<T, int>(x => x.ActiveSchedules);
- if (filter.Contains("Active Schedules") && (schedules > 0))
- return true;
- if (filter.Contains("No/Inactive Schedules") && (schedules == 0))
- return true;
- return false;
- }
- 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;
- }
- }
- }
|