using System; using Comal.Classes; using InABox.Configuration; using InABox.Core; using InABox.DynamicGrid; using PRSDesktop.WidgetGroups; namespace PRSDesktop { internal class JobsRequiringBookingsDashboardProperties : IUserConfigurationSettings, IDashboardProperties { } internal class JobsRequiringBookingsDashboardElement : DashboardElement { } internal class JobsRequiringBookingsWidget : DynamicDataGrid, ISpecificGrid, IDashboardWidget { public JobsRequiringBookingsDashboardProperties Properties { get; set; } public event LoadSettings? LoadSettings; public event SaveSettings? SaveSettings; public JobsRequiringBookingsWidget() { Options.AddRange(DynamicGridOption.SelectColumns, DynamicGridOption.FilterRows); HiddenColumns.Add(x => x.Assignments); ActionColumns.Add(new DynamicTextColumn(RebookingIndicator) { Position = DynamicActionColumnPosition.End}); ActionColumns.Add(new DynamicMenuColumn(CreateJobMenu) { Position = DynamicActionColumnPosition.End}); ColumnsTag = GetType().Name; } private string? RebookingIndicator(CoreRow? arg) { return arg == null ? "R" : arg.Get(c => c.Assignments) != 0 ? "R" : ""; } public void Refresh() { Refresh(false, true); } public void Setup() { Refresh(true, false); } public void Shutdown() { } private void CreateJobMenu(DynamicMenuColumn column, CoreRow row) { column.AddItem("Book Now", null, BookJob); } private void BookJob(CoreRow row) { } protected override void Reload(Filters criteria, Columns columns, ref SortOrder sort, Action action) { criteria.Add(new Filter(x => x.JobType).IsEqualTo(JobType.Service).And(x => x.Completed).IsEqualTo(DateTime.MinValue) .And(x => x.OpenAssignments).IsEqualTo(0)); base.Reload(criteria, columns, ref sort, action); } protected override DynamicGridStyle GetRowStyle(CoreRow row, DynamicGridStyle style) { return base.GetRowStyle(row, style); } } }