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() { HiddenColumns.Add(x => x.ID); HiddenColumns.Add(x => x.JobNumber); HiddenColumns.Add(x => x.Name); HiddenColumns.Add(x => x.Customer.ID); HiddenColumns.Add(x => x.Customer.Code); HiddenColumns.Add(x => x.Customer.Name); HiddenColumns.Add(x => x.SiteAddress.Street); HiddenColumns.Add(x => x.SiteAddress.City); HiddenColumns.Add(x => x.SiteAddress.State); HiddenColumns.Add(x => x.SiteAddress.PostCode); HiddenColumns.Add(x => x.Account.ID); HiddenColumns.Add(x => x.Account.Code); HiddenColumns.Add(x => x.Account.Name); HiddenColumns.Add(x => x.Notes); HiddenColumns.Add(x => x.JobStatus.ID); HiddenColumns.Add(x => x.JobStatus.Active); HiddenColumns.Add(x => x.DefaultScope.ID); ActionColumns.Add(new DynamicMapColumn(this, x => x.SiteAddress.Location)); } protected override void DoReconfigure(FluentList options) { base.DoReconfigure(options); options.AddRange( DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns, DynamicGridOption.FilterRows ); } 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(), new DynamicOneToManyGrid(), }); 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; } } }