using System; using System.Linq; using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; namespace PRSDesktop { public class JobGrid : DynamicDataGrid { private Guid _statusid = Guid.Empty; public JobGrid() { Options.AddRange( DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns, DynamicGridOption.FilterRows ); HiddenColumns.Add(x => x.Customer.ID); HiddenColumns.Add(x => x.ID); HiddenColumns.Add(x => x.JobStatus.Active); ActionColumns.Add(new DynamicMapColumn(this, x => x.SiteAddress.Location)); } public Guid StatusID { get => _statusid; set { _statusid = value; Refresh(false, true); } } protected override void Reload(Filters criteria, Columns columns, ref SortOrder sort, Action action) { if (_statusid != Guid.Empty) criteria.Add(new Filter(x => x.JobStatus.ID).IsEqualTo(_statusid)); sort = new SortOrder(x => x.JobNumber, SortDirection.Descending); base.Reload(criteria, columns, ref sort, action); } public override DynamicEditorPages LoadEditorPages(Job item) { var pages = new DynamicEditorPages(new IDynamicEditorPage[] { new DynamicManyToManyGrid(), new DynamicManyToManyGrid(), new DynamicOneToManyGrid(), new JobFormDefinitionGrid() }); return pages; } protected override Job CreateItem() { var result = base.CreateItem(); var defstatus = new Client().Query(new Filter(x => x.Default).IsEqualTo(true)); if (defstatus.Rows.Any()) result.JobStatus.ID = defstatus.Rows.First().Get(x => x.ID); return result; } } }