public async Task <UnitType> Execute(IOrchestrationContext context) { var state = await context.PerformRead(new GetRiderState() { RiderId = RiderId }); if (state.CurrentRide != null) { throw new InvalidOperationException("currently doing a ride - must finish ride first"); } if (!GeoLocation.Equals(CurrentAvailability, state.Availability)) { await context.PerformEvent(new RiderEvent() { RiderId = RiderId, PreviousAvailability = state.Availability, CurrentAvailability = CurrentAvailability }); } return(UnitType.Value); }
/// <summary> /// Compares two AdditionalGeoLocations for equality. /// </summary> /// <param name="AdditionalGeoLocation">A AdditionalGeoLocation to compare with.</param> /// <returns>True if both match; False otherwise.</returns> public Boolean Equals(AdditionalGeoLocation AdditionalGeoLocation) => GeoLocation.Equals(AdditionalGeoLocation.GeoLocation) && ((!Name.HasValue && !AdditionalGeoLocation.Name.HasValue) || (Name.HasValue && AdditionalGeoLocation.Name.HasValue && Name.Value.Equals(AdditionalGeoLocation.Name.Value)));