Example #1
0
      public void IsExpected_ReceiveEvent_FirstLegLocationDoesntMatchEventLocation_False()
      {
         Itinerary itinerary = new Itinerary(new[] { new Leg(null, Krakow, DateTime.Now, Warszawa, DateTime.Now) });
         HandlingEvent @event = new HandlingEvent(HandlingEventType.Receive, Warszawa, DateTime.Now, DateTime.Now);

         Assert.IsFalse(itinerary.IsExpected(@event));
      }
Example #2
0
      public void IsExpected_ClaimEvent_Empty_False()
      {
         Itinerary itinerary = new Itinerary(new Leg[] { });
         HandlingEvent @event = new HandlingEvent(HandlingEventType.Claim, Krakow, DateTime.Now, DateTime.Now);

         Assert.IsFalse(itinerary.IsExpected(@event));
      }
Example #3
0
      public void IsExpected_ClainEvent_LastLegLocationDoesntMatchEventLocation_False()
      {
         Itinerary itinerary = new Itinerary(new[]
                                                {
                                                   new Leg(null, Krakow, DateTime.Now, Warszawa, DateTime.Now),
                                                   new Leg(null, Warszawa, DateTime.Now, Wroclaw, DateTime.Now)                                                   
                                                });
         HandlingEvent @event = new HandlingEvent(HandlingEventType.Claim, Warszawa, DateTime.Now, DateTime.Now);

         Assert.IsFalse(itinerary.IsExpected(@event));
      }
Example #4
0
 /// <summary>
 /// Updates delivery progress information according to handling history.
 /// </summary>
 /// <param name="lastHandlingEvent">Most recent handling event.</param>
 public virtual void DeriveDeliveryProgress(HandlingEvent lastHandlingEvent)
 {
     Delivery = Delivery.DerivedFrom(RouteSpecification, Itinerary, lastHandlingEvent);
     if (Delivery.IsMisdirected)
     {
         DomainEvents.Raise(new CargoWasMisdirectedEvent(this));
     }
     else if (Delivery.IsUnloadedAtDestination)
     {
         DomainEvents.Raise(new CargoHasArrivedEvent(this));
     }
 }
Example #5
0
      public void IsExpected_LoadEvent_FirstLegLocationMathesEventLocation_True()
      {
         Itinerary itinerary = new Itinerary(new[]
                                                {
                                                   new Leg(null, Krakow, DateTime.Now, Warszawa, DateTime.Now),
                                                   new Leg(null, Warszawa, DateTime.Now, Wroclaw, DateTime.Now)                                                   
                                                });

         HandlingEvent @event = new HandlingEvent(HandlingEventType.Load, Krakow, DateTime.Now, DateTime.Now);         

         Assert.IsTrue(itinerary.IsExpected(@event));
      }
Example #6
0
        private Delivery(HandlingEvent lastHandlingEvent, Itinerary itinerary, RouteSpecification specification)
        {
            _calculatedAt = DateTime.Now;
            _lastEvent    = lastHandlingEvent;

            _misdirected       = CalculateMisdirectionStatus(itinerary);
            _routingStatus     = CalculateRoutingStatus(itinerary, specification);
            _transportStatus   = CalculateTransportStatus();
            _lastKnownLocation = CalculateLastKnownLocation();
            _eta = CalculateEta(itinerary);
            _nextExpectedActivity    = CalculateNextExpectedActivity(specification, itinerary);
            _isUnloadedAtDestination = CalculateUnloadedAtDestination(specification);
        }
Example #7
0
 /// <summary>
 /// Updates delivery progress information according to handling history.
 /// </summary>
 /// <param name="lastHandlingEvent">Most recent handling event.</param>
 public virtual void DeriveDeliveryProgress(HandlingEvent lastHandlingEvent)
 {
    Delivery = Delivery.DerivedFrom(RouteSpecification, Itinerary, lastHandlingEvent);
    if (Delivery.IsMisdirected)
    {
       DomainEvents.Raise(new CargoWasMisdirectedEvent(this));
    }
    else if (Delivery.IsUnloadedAtDestination)
    {
       DomainEvents.Raise(new CargoHasArrivedEvent(this));
    }
 }
Example #8
0
 /// <summary>
 /// Creates a new delivery snapshot based on the complete handling history of a cargo, as well
 /// as its route specification and itinerary.
 /// </summary>
 /// <param name="specification">Current route specification.</param>
 /// <param name="itinerary">Current itinerary.</param>
 /// <param name="lastHandlingEvent">Most recent handling event.</param>
 /// <returns>Delivery status description.</returns>
 public static Delivery DerivedFrom(RouteSpecification specification, Itinerary itinerary, HandlingEvent lastHandlingEvent)
 {
     return(new Delivery(lastHandlingEvent, itinerary, specification));
 }