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)); }
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)); }
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)); }
/// <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)); } }
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)); }
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); }
/// <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)); }