using System; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { public interface IEmployeeLeaveRequest { EmployeeLink EmployeeLink { get; set; } LeaveRequestActivityLink LeaveType { get; set; } DateTime From { get; set; } TimeSpan FromTime { get; set; } DateTime To { get; set; } TimeSpan ToTime { get; set; } DateTime Approved { get; set; } LeaveRequestStatus Status { get; set; } LeaveRequestLink LeaveRequest { get; set; } StandardLeaveLink StandardLeave { get; set; } } public class EmployeeStandardLeaveGenerator : AutoEntityCartesianGenerator { public override void Configure() { AddTable(LookupFactory.DefineFilter()) .AddMapping(x => x.ID, x => x.EmployeeLink.ID); AddTable(null) .AddMapping(x => x.LeaveType.ID, x => x.LeaveType.ID) .AddMapping(x => x.From, x => x.From) .AddMapping(x => x.FromTime, x => x.FromTime) .AddMapping(x => x.To, x => x.To) .AddMapping(x => x.ToTime, x => x.ToTime) .AddMapping(x=>x.Created, x=>x.Approved) .AddMapping(x=>x.ID, x=>x.StandardLeave.ID); AddConstant(LeaveRequestStatus.Approved.ToString(), x=>x.Status); AddConstant(Guid.Empty, x => x.LeaveRequest.ID); } public override bool Distinct => false; public override Column[] IDColumns => new Column[] { new Column(x => x.EmployeeLink.ID), new Column(x => x.StandardLeave.ID) }; } [AutoEntity(typeof(EmployeeStandardLeaveGenerator))] [Obsolete("Not Used at this stage", false)] public class EmployeeStandardLeave : Entity, IRemotable, IPersistent, IEmployeeLeaveRequest, ILicense { public EmployeeLink EmployeeLink { get; set; } public LeaveRequestActivityLink LeaveType { get; set; } public DateTime From { get; set; } public TimeSpan FromTime { get; set; } public DateTime To { get; set; } public TimeSpan ToTime { get; set; } public DateTime Approved { get; set; } public LeaveRequestStatus Status { get; set; } public LeaveRequestLink LeaveRequest { get; set; } public StandardLeaveLink StandardLeave { get; set; } } }