using System; using System.Linq; using System.Linq.Expressions; using Comal.Classes; using InABox.Core; using System.Diagnostics.CodeAnalysis; namespace comal.timesheets { public class EmployeeDetailModel : DetailModel { public EmployeeDetailModel(IModelHost host, Func> filter, bool transient = false) : base(host, filter, transient) { } public EmployeeDetailModel(IModelHost host, Func> filter, [NotNull] string filename) : base(host, filter, filename) { } protected override void Initialize() { base.Initialize(); Activities = new EmployeeActivityShell[] { }; Forms = new EmployeeFormShell[] { }; } public EmployeeActivityShell[] Activities { get; private set; } public EmployeeFormShell[] Forms { get; private set; } protected override Expression> ImageColumn => x => x.Thumbnail.ID; public override void BeforeLoad(MultiQuery query) { base.BeforeLoad(query); query.Add( new Filter(x => x.Employee.ID).InQuery(Filter(),x=>x.ID), EmployeeActivityShell.Columns.Columns ); query.Add( new Filter(x => x.Parent.ID).InQuery(Filter(),x=>x.ID), EmployeeFormShell.Columns.Columns ); } public override void AfterLoad(MultiQuery query) { base.AfterLoad(query); Activities = query.Get() .Rows .Select(x => new EmployeeActivityShell() { Row = x, Parent = this }) .ToArray(); Forms = query.Get() .Rows .Select(x => new EmployeeFormShell() { Row = x, Parent = this }) .ToArray(); } public Guid ID => Item?.ID ?? Guid.Empty; public String Name => Item?.Name ?? ""; } }