using System; using InABox.Core; namespace Comal.Classes { public enum LeaveRequestApprovalStatus { Approved, NotYetApproved, Rejected } public class LeaveRequestApproval : Entity, ISequenceable, IRemotable, IPersistent, ILicense { private class EmployeeLookup : LookupDefinitionGenerator { public override Filter? DefineFilter(LeaveRequestApproval[] items) { return new Filter(x => x.ID).NotInList(items.ToArray(x => x.Employee.ID)); } public override Columns DefineFilterColumns() { return base.DefineFilterColumns().Add(x => x.Employee.ID); } } [EditorSequence(1)] [EntityRelationship(DeleteAction.Cascade)] [LookupDefinition(typeof(EmployeeLookup))] public EmployeeLink Employee { get; set; } [NullEditor] [EntityRelationship(DeleteAction.Cascade)] public LeaveRequestLink LeaveRequest { get; set; } [EditorSequence(2)] public LeaveRequestApprovalStatus Status { get; set; } = LeaveRequestApprovalStatus.NotYetApproved; [EditorSequence(3)] public string Notes { get; set; } [NullEditor] public bool IsCustom { get; set; } [NullEditor] public long Sequence { get; set; } static LeaveRequestApproval() { DefaultColumns.Add(x => x.LeaveRequest.EmployeeLink.Code); DefaultColumns.Add(x => x.LeaveRequest.EmployeeLink.Name); DefaultColumns.Add(x => x.Employee.Code); DefaultColumns.Add(x => x.Employee.Name); DefaultColumns.Add(x => x.Status); DefaultColumns.Add(x => x.Notes); } } }