public void AddCargo(Cargo cargo) { if(cargo == null) throw new ArgumentNullException("cargo"); // Opdracht 4c // Roep de methode GuardThatThereIsEnoughRoomLeft aan die controleert of een voyage nog genoeg capaciteit heeft voor de cargo // Zo niet, dan wordt er een NotEnoughtCapacityLeftForCargoException gegooid // Opdracht 3i // Maak een nieuw CargoAddedToVoyageEvent aan en vul hiervan de properties. // Gebruik vervolgens de ApplyEvent(..) methode om het event uit te voeren. }
public void AddCargo(Cargo cargo) { if(cargo == null) throw new ArgumentNullException("cargo"); GuardThatThereIsEnoughRoomLeft(cargo); ApplyEvent(new CargoAddedToVoyageEvent { CargoId = cargo.EventSourceId, VoyageId = EventSourceId, ArrivalDate = _arrivalDate, DepartureDate = _departureDate, CapacityUsed = _capacityUsed + cargo.Size, CapacityLeft = _capacityLeft - cargo.Size }); }
/// <summary> /// Throws an <see cref="NotEnoughCapacityLeftForCargoException"/> when there is not enough /// room left for the specified cargo. /// </summary> /// <param name="cargo">The cargo to add to this <see cref="Voyage"/>.</param> /// <exception cref="ArgumentNullException">Thrown when cargo is null.</exception> /// <exception cref="NotEnoughCapacityLeftForCargoException">Thrown when there is not enough /// room for the cargo to be added to this voyage.</exception> private void GuardThatThereIsEnoughRoomLeft(Cargo cargo) { if(cargo == null) throw new ArgumentNullException("cargo"); var capacityLeftIncludingOverbook = _overbookingCapcity - _capacityUsed; if (cargo.Size > capacityLeftIncludingOverbook) { throw new NotEnoughCapacityLeftForCargoException(EventSourceId, capacityLeftIncludingOverbook, cargo.EventSourceId, cargo.Size); } }
/// <summary> /// Throws an <see cref="NotEnoughtCapacityLeftForCargoException"/> when there is not enough /// room left for the specified cargo. /// </summary> /// <param name="cargo">The cargo to add to this <see cref="Voyage"/>.</param> /// <exception cref="ArgumentNullException">Thrown when cargo is null.</exception> /// <exception cref="NotEnoughtCapacityLeftForCargoException">Thrown when there is not enough /// room for the cargo to be added to this voyage.</exception> private void GuardThatThereIsEnoughRoomLeft(Cargo cargo) { if(cargo == null) throw new ArgumentNullException("cargo"); // Controleer of er genoeg ruimte is door gebruik te maken van de variabelen _overbookingCapcity, _capacityUsed en cargo.Size }