using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Media; namespace PRSDesktop.Panels.Invoices; internal class ProgressClaimLabourGrid : DynamicDataGrid, ISpecificGrid { public ProgressClaim Claim { get; set; } public Invoice? Invoice { get; set; } public Job Job { get; set; } public ProgressClaimLabourGrid(ProgressClaim claim, Invoice? invoice, Job job) { Claim = claim; Invoice = invoice; Job = job; } protected override void Init() { base.Init(); HiddenColumns.Add(x => x.Invoice.ID); ColumnsTag = $"{nameof(ProgressClaim)}.Labour"; } protected override IDynamicGridUIComponent CreateUIComponent() { return new UIComponent(this); } private class UIComponent : DynamicGridGridUIComponent { private ProgressClaimLabourGrid Grid; public UIComponent(ProgressClaimLabourGrid grid) { Parent = grid; Grid = grid; } protected override Brush? GetCellBackground(CoreRow row, DynamicColumnBase column) { var invoiceID = row.Get(x => x.Invoice.ID); if(invoiceID == (Grid.Invoice?.ID ?? Guid.Empty)) { return Colors.LightGreen.ToBrush(0.5); } else { return Colors.Silver.ToBrush(0.5); } } } protected override void DoReconfigure(DynamicGridOptions options) { base.DoReconfigure(options); options.FilterRows = true; options.SelectColumns = true; } public override DynamicGridColumns GenerateColumns() { return base.GenerateColumns(); } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, CancellationToken token, Action action) { criteria.Add(new Filter(x => x.JobScope.ID).IsEqualTo(Claim.JobScope.ID)); criteria.Add(new Filter(x => x.JobLink.ID).IsEqualTo(Job.ID)); base.Reload(criteria, columns, ref sort, token, action); } }