|
@@ -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);
|
|
|
+ }
|
|
|
}
|
|
|
}
|