/// <summary> /// Assigns cargo to a provided route. /// </summary> /// <param name="itinerary">New itinerary</param> public virtual void AssignToRoute(Itinerary itinerary) { if (itinerary == null) { throw new ArgumentNullException("itinerary"); } CargoHasBeenAssignedToRouteEvent @event = new CargoHasBeenAssignedToRouteEvent(this, Itinerary); Itinerary = itinerary; Delivery = Delivery.UpdateOnRouting(RouteSpecification, Itinerary); DomainEvents.Raise(@event); }
/// <summary> /// Assigns cargo to a provided route. /// Attach a new itinerary to this cargo. /// </summary> /// <param name="itinerary">New itinerary</param> public virtual void AssignToRoute(Itinerary itinerary) { if (itinerary == null) throw new ArgumentNullException("itinerary", "Itinerary is required for assignment"); CargoHasBeenAssignedToRouteEvent @event = new CargoHasBeenAssignedToRouteEvent(this, Itinerary); Itinerary = itinerary; // Handling consistency within the Cargo aggregate synchronously Delivery = Delivery.UpdateOnRouting(RouteSpecification, Itinerary); DomainEvents.Raise(@event); }
/// <summary> /// Assigns cargo to a provided route. /// </summary> /// <param name="itinerary">New itinerary</param> public void AssignToRoute(Itinerary itinerary) { if (itinerary == null) { throw new ArgumentNullException("itinerary"); } var @event = new CargoHasBeenAssignedToRouteEvent(this, Itinerary); Itinerary = itinerary; Delivery = Delivery.UpdateOnRouting(RouteSpecification, Itinerary); m_eventAggegator.Publish<CargoHasBeenAssignedToRouteEvent>(@event); }