using System; using System.Linq; using System.Windows; using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; using InABox.Wpf; namespace PRSDesktop; public class JobAssignmentGrid : DynamicDataGrid, IMasterDetailControl, IDataModelSource { public Job? Master { get; set; } public Filter MasterDetailFilter => (Master?.ID ?? Guid.Empty) != Guid.Empty ? new Filter(x => x.JobLink.ID).IsEqualTo(Master.ID) : new Filter().None(); public JobAssignmentGrid() { RowHeight = 30; } protected override void DoReconfigure(FluentList options) { base.DoReconfigure(options); options.AddRange( DynamicGridOption.SelectColumns, DynamicGridOption.FilterRows, DynamicGridOption.ExportData ); } protected override bool CanCreateItems() { return base.CanCreateItems() && (Master?.ID ?? Guid.Empty) != Guid.Empty; } public override Assignment CreateItem() { var result = base.CreateItem(); result.JobLink.ID = Master?.ID ?? Guid.Empty; result.JobLink.Synchronise(Master ?? new Job()); return result; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, Action action) { criteria.Add(MasterDetailFilter); base.Reload(criteria, columns, ref sort, action); } public string SectionName => "Job Assignments"; public event DataModelUpdateEvent? OnUpdateDataModel; public DataModel DataModel(Selection selection) { return new AutoDataModel(MasterDetailFilter); } }