Просмотр исходного кода

PRS CLASSES - Assignment functions for displaying times

Nick-PRSDigital@bitbucket.org 2 лет назад
Родитель
Сommit
f62a8e330f
1 измененных файлов с 39 добавлено и 21 удалено
  1. 39 21
      prs.classes/Entities/Assignment/Assignment.cs

+ 39 - 21
prs.classes/Entities/Assignment/Assignment.cs

@@ -5,17 +5,17 @@ using InABox.Core;
 namespace Comal.Classes
 {
     //public class DeliveryAssignments : CoreAggregate<Assignment, Delivery, Guid>
-//{
-//    public override Expression<Func<Delivery, Guid>> Aggregate => Delivery => Delivery.ID;
-//    //public Expression<Func<Delivery, Guid>> Link => x => x.Assignment.ID;
-//    public override AggregateCalculation Calculation => AggregateCalculation.Count;
-
-//    public override Dictionary<Expression<Func<Delivery, object>>, Expression<Func<Assignment, object>>> Links =>
-//        new Dictionary<Expression<Func<Delivery, object>>, Expression<Func<Assignment, object>>>
-//        {
-//            { Delivery => Delivery.Assignment.ID, x => x.ID }
-//        };
-//}
+    //{
+    //    public override Expression<Func<Delivery, Guid>> Aggregate => Delivery => Delivery.ID;
+    //    //public Expression<Func<Delivery, Guid>> Link => x => x.Assignment.ID;
+    //    public override AggregateCalculation Calculation => AggregateCalculation.Count;
+
+    //    public override Dictionary<Expression<Func<Delivery, object>>, Expression<Func<Assignment, object>>> Links =>
+    //        new Dictionary<Expression<Func<Delivery, object>>, Expression<Func<Assignment, object>>>
+    //        {
+    //            { Delivery => Delivery.Assignment.ID, x => x.ID }
+    //        };
+    //}
 
     /// <summary>
     ///     An assignment represents an anticipated booking for an employee, much like a diary entry
@@ -47,20 +47,20 @@ namespace Comal.Classes
         [MemoEditor]
         [EditorSequence(5)]
         public string Description { get; set; }
-        
+
         [EditorSequence(6)]
         public AssignmentActivityLink ActivityLink { get; set; }
-        
+
         [EditorSequence(7)]
         [EntityRelationship(DeleteAction.SetNull)]
         public KanbanLink Task { get; set; }
-        
+
         [EditorSequence(8)]
         public JobLink JobLink { get; set; }
-        
+
         [EditorSequence(9)]
         public JobITPLink ITP { get; set; }
-        
+
         [NullEditor]
         [Obsolete("Replaced with Actual.Start", true)]
         public TimeSpan Start { get; set; }
@@ -68,11 +68,11 @@ namespace Comal.Classes
         [NullEditor]
         [Obsolete("Replaced with Actual.Duration", true)]
         public TimeSpan Duration { get; set; }
-        
+
         [NullEditor]
         [Obsolete("Replaced with Actual.Finish", true)]
         public TimeSpan Finish { get; set; }
-        
+
         [EditorSequence(10)]
         [CoreTimeEditor]
         public CoreTime Booked { get; set; }
@@ -80,7 +80,7 @@ namespace Comal.Classes
         [EditorSequence(11)]
         [CoreTimeEditor]
         public CoreTime Actual { get; set; }
-        
+
         [TimestampEditor]
         [EditorSequence(12)]
         public DateTime Completed { get; set; }
@@ -95,7 +95,7 @@ namespace Comal.Classes
 
         [NullEditor]
         public DeliveryLink Delivery { get; set; }
-        
+
         [NullEditor]
         [EntityRelationship(DeleteAction.SetNull)]
         public InvoiceLink Invoice { get; set; }
@@ -109,7 +109,7 @@ namespace Comal.Classes
         {
             return null;
         }
-        
+
 
         protected override void Init()
         {
@@ -125,5 +125,23 @@ namespace Comal.Classes
             Booked = new CoreTime();
             Actual = new CoreTime();
         }
+
+        public DateTime EffectiveStart()
+        {
+            if (Actual.Start.Ticks != 0)
+                return Date.Add(Actual.Start);
+            else
+                return Date.Add(Booked.Start);
+        }
+
+        public DateTime EffectiveFinish()
+        {
+            if (Actual.Finish.Ticks != 0)
+                return Date.Add(Actual.Finish);
+            else if (Actual.Start.Ticks != 0)
+                return Date.Add(Actual.Start).Add(Booked.Duration);
+            else
+                return Date.Add(Booked.Finish);
+        }
     }
 }