using System; using System.Linq; 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 : 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(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(x => x.ActiveSchedules) > 0; return isenabled ? bitmap_enabled : bitmap_disabled; } private bool EditSchedule(CoreRow row) { var id = row.Get(x => x.ID); var item = new Client().Load(new Filter(x => x.ID).IsEqualTo(id)).FirstOrDefault(); var form = new ScheduleForm(item); form.ShowDialog(); return true; } } }