using System; using System.Linq; using InABox.Mobile; using Xamarin.Forms; namespace PRS.Mobile { public class LeaveSelectionPage : SelectionPage { public LeaveSelectionPage(Action action) : base( "Select Leave Type", SelectionPageMode.Immediate, (columns, filters) => { columns .BeginUpdate() .Clear() .Add(new MobileGridTextColumn() { Column = x => x.Code, Width = 100, Alignment = TextAlignment.Center }) .Add(new MobileGridTextColumn() { Column = x => x.Description, Width = GridLength.Star, Alignment = TextAlignment.Start }) .EndUpdate(); filters.AddRange(App.Data.Activities.AvailableFilters().Select(x=>x.Name)); }, (args) => { App.Data.Activities.SelectFilter(args.Filter); var result = App.Data.Activities.Refresh(args.Force); result.Search((o) => { return o is ActivityShell shell && shell.IsLeave; }); args.LastUpdated = App.Data.Activities.LastUpdated; return result; }, (items) => action?.Invoke(items.FirstOrDefault() as ActivityShell) ) { } } }