public async Task HandleAsync(FlightEnded @event, ICorrelationContext context) { var airplane = await _airplanesRepository.GetAsync(@event.PlaneId); if (airplane is null) { throw new BeComfyException("cannot_end_flight", $"Cannot end flight, airplane with id: '{@event.PlaneId}' does not exist"); } airplane.IncreaseFlightsCarriedOut(); airplane.SetNextFlight(DateTime.MinValue); airplane.SetFlightEnd(DateTime.MinValue); airplane.SetAirplaneStatus(AirplaneStatus.Ready); await _airplanesRepository.UpdateAsync(airplane); }
public async Task HandleAsync(FlightCreated @event, ICorrelationContext context) { var airplane = await _airplanesRepository.GetAsync(@event.AirplaneId); if (airplane is null) { throw new BeComfyException("cannot_create_flight", $"Cannot create flight, airplane with id: '{@event.AirplaneId}' does not exist"); } airplane.SetNextFlight(@event.FlightStart); airplane.SetFlightEnd(@event.FlightEnd); airplane.SetAirplaneStatus(AirplaneStatus.Reserved); await _airplanesRepository.UpdateAsync(airplane); await _busPublisher.PublishAsync(new AirplaneReserved(airplane.Id, @event.FlightId, airplane.RequiredCrew), context); }