using Comal.Classes; using InABox.Clients; using InABox.Configuration; using InABox.Core; using InABox.DynamicGrid; using System; using System.Linq; namespace PRSDesktop; public class ServiceGridSettings : IUserConfigurationSettings { public DynamicGridSelectedFilterSettings Filters { get; set; } = new(); } public class ServiceGrid : DynamicDataGrid { private ServiceGridSettings _settings; public ServiceGrid() { _settings = new UserConfiguration().Load(); FilterComponent.SetSettings(_settings.Filters, false); FilterComponent.OnFiltersSelected += FilterComponent_OnFilterSelected; 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); ActionColumns.Add(new DynamicMapColumn(this, x => x.SiteAddress.Location)); } protected override void DoReconfigure(DynamicGridOptions options) { base.DoReconfigure(options); options.RecordCount = true; options.SelectColumns = true; options.FilterRows = true; } protected override void CustomiseEditor(Job[] items, DynamicGridColumn column, BaseEditor editor) { base.CustomiseEditor(items, column, editor); var visible = editor.Page.IsNullOrWhiteSpace() || editor.Page.Equals("General") || editor.Page.Equals(Job.NotesPage); editor.Editable = editor.Editable.Combine(visible ? Editable.Enabled : Editable.Hidden); } public override DynamicEditorPages LoadEditorPages(Job item) { var pages = new DynamicEditorPages(Array.Empty()); return pages; } public override Job CreateItem() { var result = base.CreateItem(); var defstatus = Client.Query( new Filter(x => x.Default).IsEqualTo(true), Columns.None().Add(x => x.ID)); if (defstatus.Rows.Any()) result.JobStatus.ID = defstatus.Rows.First().Get(x => x.ID); result.JobType = JobType.Service; return result; } private void FilterComponent_OnFilterSelected(DynamicGridSelectedFilterSettings settings) { _settings.Filters = settings; _settings.SaveUser(); } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, Action action) { criteria.Add(new Filter(x => x.JobType).IsEqualTo(JobType.Service)); base.Reload(criteria, columns, ref sort, action); } }