فهرست منبع

Added Views to Support Standard Leaves and Consolidated Leave Calendar

Frank van den Bos 2 سال پیش
والد
کامیت
73436c4324

+ 2 - 2
prs.classes/Entities/Employee/EmployeeLookups.cs

@@ -32,9 +32,9 @@ namespace Comal.Classes
         {
             var filter = new Filter<Employee>(x => x.ID).IsNotEqualTo(Guid.Empty);
             filter.Ands.Add(new Filter<Employee>(x => x.StartDate).IsEqualTo(DateTime.MinValue).Or(x => x.StartDate)
-                .IsLessThanOrEqualTo(DateTime.Today));
+                .IsLessThanOrEqualTo(FilterConstant.Today));
             filter.Ands.Add(new Filter<Employee>(x => x.FinishDate).IsEqualTo(DateTime.MinValue).Or(x => x.FinishDate)
-                .IsGreaterThanOrEqualTo(DateTime.Today));
+                .IsGreaterThanOrEqualTo(FilterConstant.Today));
             return filter;
         }
 

+ 66 - 0
prs.classes/Entities/LeaveRequest/EmployeeStandardLeave.cs

@@ -0,0 +1,66 @@
+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; }
+
+    }
+    
+    public class EmployeeStandardLeaveGenerator : AutoEntityCartesianGenerator<IEmployeeLeaveRequest>
+    {
+        public override void Configure()
+        {
+            AddTable(LookupFactory.DefineFilter<Employee>())
+                .AddMapping(x => x.ID, x => x.EmployeeLink.ID);
+            
+            AddTable<StandardLeave>(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);
+            
+            AddConstant(LeaveRequestStatus.Approved.ToString(), x=>x.Status);
+        }
+
+        public override bool Distinct => false;
+    }
+    
+    [AutoEntity(typeof(EmployeeStandardLeaveGenerator))]
+    public class EmployeeStandardLeave : Entity, IRemotable, IPersistent, IEmployeeLeaveRequest
+    {
+        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; }
+
+        protected override void Init()
+        {
+            base.Init();
+            EmployeeLink = new EmployeeLink();
+            LeaveType = new LeaveRequestActivityLink();
+        }
+    }
+    
+}

+ 37 - 0
prs.classes/Entities/LeaveRequest/LeaveCalendar.cs

@@ -0,0 +1,37 @@
+using System;
+using InABox.Core;
+
+namespace Comal.Classes
+{
+    
+    public class LeaveCalendarGenerator : AutoEntityUnionGenerator<IEmployeeLeaveRequest>
+    {
+        protected override void Configure()
+        {
+            Add<EmployeeStandardLeave>();
+            Add<LeaveRequest>();
+        }
+
+        public override bool Distinct => false;
+    }
+    
+    [AutoEntity(typeof(LeaveCalendarGenerator))]
+    public class LeaveCalendar : Entity, IRemotable, IPersistent, IEmployeeLeaveRequest
+    {
+        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; }
+
+        protected override void Init()
+        {
+            base.Init();
+            EmployeeLink = new EmployeeLink();
+            LeaveType = new LeaveRequestActivityLink();
+        }
+    }
+}

+ 1 - 1
prs.classes/Entities/LeaveRequest/LeaveRequest.cs

@@ -12,7 +12,7 @@ namespace Comal.Classes
 
     [UserTracking("Holiday Calendar")]
     [Caption("Leave Requests")]
-    public class LeaveRequest : Entity, IRemotable, IPersistent, ILicense<LeaveManagementLicense>
+    public class LeaveRequest : Entity, IRemotable, IPersistent, IEmployeeLeaveRequest, ILicense<LeaveManagementLicense>
     {
         [EditorSequence(1)]
         public EmployeeLink EmployeeLink { get; set; }